diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 18fe5c864a..2d9a003701 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -755,6 +755,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #define ABS_PREHEAT_HPB_TEMP 110 #define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255 +// +// Print job timer +// +// This options allows you configure if the print job timer should automatically +// start and stop counting when a M104 or M109 is received. +// +// If disabled you can control the print timer start and stop using the +// following G-Code list: +// +// - M75 - Start the print job timer +// - M76 - Pause the print job timer +// - M77 - Stop the print job timer +#defined PRINTJOB_TIMER_AUTOSTART // // Print Counter diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index ab84d5be69..5416243f1d 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -4248,23 +4248,17 @@ inline void gcode_M42() { /** * M75: Start print timer */ -inline void gcode_M75() { - print_job_timer.start(); -} +inline void gcode_M75() { print_job_timer.start(); } /** * M76: Pause print timer */ -inline void gcode_M76() { - print_job_timer.pause(); -} +inline void gcode_M76() { print_job_timer.pause(); } /** * M77: Stop print timer */ -inline void gcode_M77() { - print_job_timer.stop(); -} +inline void gcode_M77() { print_job_timer.stop(); } #if ENABLED(PRINTCOUNTER) /*+ @@ -4293,21 +4287,23 @@ inline void gcode_M104() { thermalManager.setTargetHotend(temp == 0.0 ? 0.0 : temp + duplicate_extruder_temp_offset, 1); #endif - /** - * We use half EXTRUDE_MINTEMP here to allow nozzles to be put into hot - * stand by mode, for instance in a dual extruder setup, without affecting - * the running print timer. - */ - if (temp <= (EXTRUDE_MINTEMP)/2) { - print_job_timer.stop(); - LCD_MESSAGEPGM(WELCOME_MSG); - } - /** - * We do not check if the timer is already running because this check will - * be done for us inside the Stopwatch::start() method thus a running timer - * will not restart. - */ - else print_job_timer.start(); + #if ENABLED(PRINTJOB_TIMER_AUTOSTART) + /** + * We use half EXTRUDE_MINTEMP here to allow nozzles to be put into hot + * stand by mode, for instance in a dual extruder setup, without affecting + * the running print timer. + */ + if (temp <= (EXTRUDE_MINTEMP)/2) { + print_job_timer.stop(); + LCD_MESSAGEPGM(WELCOME_MSG); + } + /** + * We do not check if the timer is already running because this check will + * be done for us inside the Stopwatch::start() method thus a running timer + * will not restart. + */ + else print_job_timer.start(); + #endif if (temp > thermalManager.degHotend(target_extruder)) LCD_MESSAGEPGM(MSG_HEATING); } @@ -4446,21 +4442,23 @@ inline void gcode_M109() { thermalManager.setTargetHotend(temp == 0.0 ? 0.0 : temp + duplicate_extruder_temp_offset, 1); #endif - /** - * We use half EXTRUDE_MINTEMP here to allow nozzles to be put into hot - * stand by mode, for instance in a dual extruder setup, without affecting - * the running print timer. - */ - if (temp <= (EXTRUDE_MINTEMP)/2) { - print_job_timer.stop(); - LCD_MESSAGEPGM(WELCOME_MSG); - } - /** - * We do not check if the timer is already running because this check will - * be done for us inside the Stopwatch::start() method thus a running timer - * will not restart. - */ - else print_job_timer.start(); + #if ENABLED(PRINTJOB_TIMER_AUTOSTART) + /** + * We use half EXTRUDE_MINTEMP here to allow nozzles to be put into hot + * stand by mode, for instance in a dual extruder setup, without affecting + * the running print timer. + */ + if (temp <= (EXTRUDE_MINTEMP)/2) { + print_job_timer.stop(); + LCD_MESSAGEPGM(WELCOME_MSG); + } + /** + * We do not check if the timer is already running because this check will + * be done for us inside the Stopwatch::start() method thus a running timer + * will not restart. + */ + else print_job_timer.start(); + #endif if (temp > thermalManager.degHotend(target_extruder)) LCD_MESSAGEPGM(MSG_HEATING); }