From 70163dafb96917f54e0420ed9ca3bb88758ce7af Mon Sep 17 00:00:00 2001 From: AnHardt Date: Mon, 18 May 2015 20:26:25 +0200 Subject: [PATCH] Use _temp_error() for all errors thrown by different mechanisms Now ending in an endless loop. Tidy up the output format. We now get: ERRORTEXT ", system stopped! Heater_ID: " HEATERID Where ERRORTEXT can be: "Heating failed" "Thermal Runaway" "MAXTEMP triggered" "MINTEMP triggered" and soon "Thermal Jump" HEATERID can be 0, 1, 2 ,3 , "bed" This messages are always followed by the common: "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" --- Marlin/language.h | 17 +++++++++-------- Marlin/temperature.cpp | 26 +++++++++----------------- 2 files changed, 18 insertions(+), 25 deletions(-) diff --git a/Marlin/language.h b/Marlin/language.h index 789b98c67..096b416c0 100644 --- a/Marlin/language.h +++ b/Marlin/language.h @@ -222,15 +222,16 @@ #define MSG_PID_DEBUG_PTERM " pTerm " #define MSG_PID_DEBUG_ITERM " iTerm " #define MSG_PID_DEBUG_DTERM " dTerm " -#define MSG_HEATING_FAILED "Heating failed" -#define MSG_EXTRUDER_SWITCHED_OFF "Extruder switched off. Temperature difference between temp sensors is too high !" - #define MSG_INVALID_EXTRUDER_NUM " - Invalid extruder number !" -#define MSG_THERMAL_RUNAWAY_STOP "Thermal Runaway, system stopped! Heater_ID: " -#define MSG_SWITCHED_OFF_MAX " switched off. MAXTEMP triggered !!" -#define MSG_MINTEMP_EXTRUDER_OFF ": Extruder switched off. MINTEMP triggered !" -#define MSG_MAXTEMP_EXTRUDER_OFF ": Extruder" MSG_SWITCHED_OFF_MAX -#define MSG_MAXTEMP_BED_OFF "Heated bed" MSG_SWITCHED_OFF_MAX + +#define MSG_HEATER_BED "bed" +#define MSG_STOPPED_HEATER ", system stopped! Heater_ID: " +#define MSG_REDUNDANCY "Heater switched off. Temperature difference between temp sensors is too high !" +#define MSG_T_HEATING_FAILED "Heating failed" +#define MSG_T_THERMAL_RUNAWAY "Thermal Runaway" +#define MSG_T_MAXTEMP "MAXTEMP triggered" +#define MSG_T_MINTEMP "MINTEMP triggered" + // LCD Menu Messages diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index 9ccd1de14..3cb1fc2d7 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -449,31 +449,33 @@ void checkExtruderAutoFans() inline void _temp_error(int e, const char *serial_msg, const char *lcd_msg) { if (IsRunning()) { SERIAL_ERROR_START; - if (e >= 0) SERIAL_ERRORLN((int)e); serialprintPGM(serial_msg); - MYSERIAL.write('\n'); + SERIAL_ERRORPGM(MSG_STOPPED_HEATER); + if (e >= 0) SERIAL_ERRORLN((int)e); else SERIAL_ERRORLNPGM(MSG_HEATER_BED); #ifdef ULTRA_LCD lcd_setalertstatuspgm(lcd_msg); #endif } #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE + disable_all_steppers(); Stop(); + while (true) lcd_update(); #endif } void max_temp_error(uint8_t e) { disable_all_heaters(); - _temp_error(e, PSTR(MSG_MAXTEMP_EXTRUDER_OFF), PSTR(MSG_ERR_MAXTEMP)); + _temp_error(e, PSTR(MSG_T_MAXTEMP), PSTR(MSG_ERR_MAXTEMP)); } void min_temp_error(uint8_t e) { disable_all_heaters(); - _temp_error(e, PSTR(MSG_MINTEMP_EXTRUDER_OFF), PSTR(MSG_ERR_MINTEMP)); + _temp_error(e, PSTR(MSG_T_MINTEMP), PSTR(MSG_ERR_MINTEMP)); } void bed_max_temp_error(void) { #if HAS_HEATER_BED WRITE_HEATER_BED(0); #endif - _temp_error(-1, PSTR(MSG_MAXTEMP_BED_OFF), PSTR(MSG_ERR_MAXTEMP_BED)); + _temp_error(-1, PSTR(MSG_T_MAXTEMP), PSTR(MSG_ERR_MAXTEMP_BED)); } float get_pid_output(int e) { @@ -627,8 +629,7 @@ void manage_heater() { // Has it failed to increase enough? if (degHotend(e) < watch_target_temp[e]) { // Stop! - disable_all_heaters(); - _temp_error(e, PSTR(MSG_HEATING_FAILED), PSTR(MSG_HEATING_FAILED_LCD)); + _temp_error(e, PSTR(MSG_T_HEATING_FAILED), PSTR(MSG_HEATING_FAILED_LCD)); } else { // Start again if the target is still far off @@ -1070,16 +1071,7 @@ void tp_init() { *state = TRRunaway; break; case TRRunaway: - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_THERMAL_RUNAWAY_STOP); - if (heater_id < 0) SERIAL_ERRORLNPGM("bed"); else SERIAL_ERRORLN(heater_id); - LCD_ALERTMESSAGEPGM(MSG_THERMAL_RUNAWAY); - disable_all_heaters(); - disable_all_steppers(); - for (;;) { - manage_heater(); - lcd_update(); - } + _temp_error(heater_id, PSTR(MSG_T_THERMAL_RUNAWAY), PSTR(MSG_THERMAL_RUNAWAY)); } }