diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index f8bb40e12..4dea777cf 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -84,6 +84,11 @@ //#define BED_MAXTEMP 150 +// Wait for Cooldown +// This defines if the M109 call should not block if it is cooling down. +// example: From a current temp of 220, you set M109 S200. +// if CooldownNoWait is defined M109 will not wait for the cooldown to finish +#define CooldownNoWait true // PID settings: // Uncomment the following line to enable PID support. diff --git a/Marlin/Marlin.pde b/Marlin/Marlin.pde index 381d6aa9b..60ec2b22e 100644 --- a/Marlin/Marlin.pde +++ b/Marlin/Marlin.pde @@ -517,7 +517,10 @@ inline void process_commands() codenum = 0; if(code_seen('P')) codenum = code_value(); // milliseconds to wait if(code_seen('S')) codenum = code_value() * 1000; // seconds to wait + + st_synchronize(); codenum += millis(); // keep track of when we started waiting + while(millis() < codenum ){ manage_heater(); } @@ -579,7 +582,7 @@ inline void process_commands() switch( (int)code_value() ) { - case 17: + case 17: LCD_MESSAGEPGM("No move."); enable_x(); enable_y(); @@ -740,7 +743,7 @@ inline void process_commands() while((target_direction ? (isHeatingHotend0()) : (isCoolingHotend0())) || (residencyStart > -1 && (millis() - residencyStart) < TEMP_RESIDENCY_TIME*1000) ) { #else - while ( target_direction ? (isHeatingHotend0()) : (isCoolingHotend0()) ) { + while ( target_direction ? (isHeatingHotend0()) : (isCoolingHotend0()&&(CooldownNoWait==false)) ) { #endif //TEMP_RESIDENCY_TIME if( (millis() - codenum) > 1000 ) { //Print Temp Reading every 1 second while heating up/cooling down