diff --git a/Marlin/Marlin.pde b/Marlin/Marlin.pde index 185c9f781..e450f7418 100644 --- a/Marlin/Marlin.pde +++ b/Marlin/Marlin.pde @@ -56,6 +56,8 @@ // G92 - Set current position to cordinates given //RepRap M Codes +// M0 - Unconditional stop - Wait for user to press a button on the LCD (Only if ULTRA_LCD is enabled) +// M1 - Same as M0 // M104 - Set extruder target temp // M105 - Read current temp // M106 - Fan on @@ -107,7 +109,6 @@ // M302 - Allow cold extrudes // M303 - PID relay autotune S sets the target temperature. (default target temperature = 150C) // M400 - Finish all moves -// M401 - Wait for user to press a button on the LCD (Only if ULTRA_LCD is enabled) // M500 - stores paramters in EEPROM // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). // M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. @@ -709,6 +710,35 @@ void process_commands() { switch( (int)code_value() ) { +#ifdef ULTRA_LCD + case 0: // M0 - Unconditional stop - Wait for user button press on LCD + case 1: // M1 - Conditional stop - Wait for user button press on LCD + { + LCD_MESSAGEPGM(MSG_USERWAIT); + 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(); + previous_millis_cmd = millis(); + if (codenum > 0) + { + codenum += millis(); // keep track of when we started waiting + while(millis() < codenum && !CLICKED){ + manage_heater(); + manage_inactivity(1); + LCD_STATUS; + } + }else{ + while(!CLICKED) { + manage_heater(); + manage_inactivity(1); + LCD_STATUS; + } + } + } + break; +#endif case 17: LCD_MESSAGEPGM(MSG_NO_MOVE); enable_x(); @@ -1266,34 +1296,6 @@ void process_commands() st_synchronize(); } break; -#ifdef ULTRA_LCD - case 401: // M401 - Wait for user button press on LCD - { - LCD_MESSAGEPGM(MSG_USERWAIT); - 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(); - previous_millis_cmd = millis(); - if (codenum > 0) - { - codenum += millis(); // keep track of when we started waiting - while(millis() < codenum && !CLICKED){ - manage_heater(); - manage_inactivity(1); - LCD_STATUS; - } - }else{ - while(!CLICKED) { - manage_heater(); - manage_inactivity(1); - LCD_STATUS; - } - } - } - break; -#endif case 500: // Store settings in EEPROM { EEPROM_StoreSettings();