diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 02f8d25d6..d66424086 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -306,8 +306,9 @@ extern float retract_recover_length_swap; extern uint8_t host_keepalive_interval; -extern unsigned long starttime; -extern unsigned long stoptime; +extern uint32_t starttime; // milliseconds +extern uint32_t pause_time; // milliseconds +extern uint32_t start_pause_print; // milliseconds extern ShortTimer usb_timer; extern bool processing_tcode; extern bool homing_flag; @@ -328,11 +329,6 @@ extern int fan_speed[2]; // We may even remove the references to it wherever possible in the future #define active_extruder 0 -//Long pause -extern unsigned long pause_time; -extern unsigned long start_pause_print; -extern unsigned long t_fan_rising_edge; - extern bool mesh_bed_leveling_flag; // save/restore printing diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 3ad026e77..21d0e0536 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -173,9 +173,7 @@ int extrudemultiply=100; //100->1 200->2 bool homing_flag = false; -unsigned long pause_time = 0; -unsigned long start_pause_print = _millis(); -unsigned long t_fan_rising_edge = _millis(); +static uint32_t t_fan_rising_edge; LongTimer safetyTimer; static LongTimer crashDetTimer; @@ -306,8 +304,9 @@ unsigned long max_inactive_time = 0; static unsigned long stepper_inactive_time = DEFAULT_STEPPER_DEACTIVE_TIME*1000l; static unsigned long safetytimer_inactive_time = DEFAULT_SAFETYTIMER_TIME_MINS*60*1000ul; -unsigned long starttime=0; -unsigned long stoptime=0; +uint32_t starttime; +uint32_t pause_time; +uint32_t start_pause_print; ShortTimer usb_timer; bool Stopped=false; @@ -5490,12 +5489,11 @@ void process_commands() */ case 31: //M31 take time since the start of the SD print or an M109 command { - stoptime=_millis(); char time[30]; - unsigned long t=(stoptime-starttime)/1000; - int sec,min; - min=t/60; - sec=t%60; + uint32_t t = (_millis() - starttime) / 1000; + int16_t sec, min; + min = t / 60; + sec = t % 60; sprintf_P(time, PSTR("%i min, %i sec"), min, sec); SERIAL_ECHO_START; SERIAL_ECHOLN(time); diff --git a/Firmware/cmdqueue.cpp b/Firmware/cmdqueue.cpp index aa7938de3..76962dffc 100755 --- a/Firmware/cmdqueue.cpp +++ b/Firmware/cmdqueue.cpp @@ -638,9 +638,8 @@ void get_command() card.closefile(); SERIAL_PROTOCOLLNRPGM(_n("Done printing file"));////MSG_FILE_PRINTED - stoptime=_millis(); char time[30]; - uint32_t t = (stoptime-starttime-pause_time) / 60000; + uint32_t t = (_millis() - starttime - pause_time) / 60000; pause_time = 0; int hours, minutes; minutes = t % 60; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index c7ea35047..0db3623a4 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5670,11 +5670,8 @@ static void lcd_sd_updir() // continue stopping the print from the main loop after lcd_print_stop() is called void lcd_print_stop_finish() { - // save printing time - stoptime = _millis(); - // Convert the time from ms to minutes, divide by 60 * 1000 - uint32_t t = (stoptime - starttime - pause_time) / 60000; + uint32_t t = (_millis() - starttime - pause_time) / 60000; save_statistics(total_filament_used, t); // lift Z