Ensure safe temperature for M600

This commit is contained in:
Scott Lahteine 2017-06-04 17:03:22 -05:00
parent bfe7fbe5c0
commit eb8af486d2
2 changed files with 25 additions and 3 deletions

View file

@ -5921,6 +5921,25 @@ inline void gcode_M17() {
return true; return true;
} }
static void ensure_safe_temperature() {
bool did_show = false;
wait_for_heatup = true;
while (wait_for_heatup) {
idle();
wait_for_heatup = false;
HOTEND_LOOP() {
if (thermalManager.degTargetHotend(e) && abs(thermalManager.degHotend(e) - thermalManager.degTargetHotend(e)) > 3) {
wait_for_heatup = true;
if (!did_show) { // Show "wait for heating"
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT);
did_show = true;
}
break;
}
}
}
}
static void wait_for_filament_reload(int8_t max_beep_count = 0) { static void wait_for_filament_reload(int8_t max_beep_count = 0) {
bool nozzle_timed_out = false; bool nozzle_timed_out = false;
@ -5937,8 +5956,7 @@ inline void gcode_M17() {
nozzle_timed_out |= thermalManager.is_heater_idle(e); nozzle_timed_out |= thermalManager.is_heater_idle(e);
#if ENABLED(ULTIPANEL) #if ENABLED(ULTIPANEL)
if (nozzle_timed_out) if (nozzle_timed_out) ensure_safe_temperature();
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE);
#endif #endif
idle(true); idle(true);
@ -9204,6 +9222,8 @@ inline void gcode_M503() {
*/ */
inline void gcode_M600() { inline void gcode_M600() {
ensure_safe_temperature();
// Initial retract before move to filament change position // Initial retract before move to filament change position
const float retract = parser.seen('E') ? parser.value_axis_units(E_AXIS) : 0 const float retract = parser.seen('E') ? parser.value_axis_units(E_AXIS) : 0
#if defined(PAUSE_PARK_RETRACT_LENGTH) && PAUSE_PARK_RETRACT_LENGTH > 0 #if defined(PAUSE_PARK_RETRACT_LENGTH) && PAUSE_PARK_RETRACT_LENGTH > 0

View file

@ -1094,6 +1094,7 @@ void kill_screen(const char* lcd_msg) {
#endif #endif
#if ENABLED(ADVANCED_PAUSE_FEATURE) #if ENABLED(ADVANCED_PAUSE_FEATURE)
void lcd_enqueue_filament_change() { void lcd_enqueue_filament_change() {
if (!DEBUGGING(DRYRUN) && thermalManager.tooColdToExtrude(active_extruder)) { if (!DEBUGGING(DRYRUN) && thermalManager.tooColdToExtrude(active_extruder)) {
lcd_save_previous_screen(); lcd_save_previous_screen();
@ -1103,7 +1104,8 @@ void kill_screen(const char* lcd_msg) {
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INIT); lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INIT);
enqueue_and_echo_commands_P(PSTR("M600 B0")); enqueue_and_echo_commands_P(PSTR("M600 B0"));
} }
#endif
#endif // ADVANCED_PAUSE_FEATURE
/** /**
* *