diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index f41743bf26..4d01c701cc 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -516,6 +516,36 @@ void checkExtruderAutoFans() #define WRITE_FAN(v) WRITE(FAN_PIN, v) #endif +inline void _temp_error(int e, const char *msg1, const char *msg2) { + if (!IsStopped()) { + SERIAL_ERROR_START; + if (e >= 0) SERIAL_ERRORLN((int)e); + serialprintPGM(msg1); + MYSERIAL.write('\n'); + #ifdef ULTRA_LCD + lcd_setalertstatuspgm(msg2); + #endif + } + #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE + Stop(); + #endif +} + +void max_temp_error(uint8_t e) { + disable_heater(); + _temp_error(e, MSG_MAXTEMP_EXTRUDER_OFF, MSG_ERR_MAXTEMP); +} +void min_temp_error(uint8_t e) { + disable_heater(); + _temp_error(e, MSG_MINTEMP_EXTRUDER_OFF, MSG_ERR_MINTEMP); +} +void bed_max_temp_error(void) { + #if HAS_HEATER_BED + WRITE_HEATER_BED(0); + #endif + _temp_error(-1, MSG_MAXTEMP_BED_OFF, MSG_ERR_MAXTEMP_BED); +} + void manage_heater() { if (!temp_meas_ready) return; @@ -623,14 +653,7 @@ void manage_heater() { #ifdef TEMP_SENSOR_1_AS_REDUNDANT if (fabs(current_temperature[0] - redundant_temperature) > MAX_REDUNDANT_TEMP_SENSOR_DIFF) { disable_heater(); - if (IsStopped() == false) { - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_EXTRUDER_SWITCHED_OFF); - LCD_ALERTMESSAGEPGM(MSG_ERR_REDUNDANT_TEMP); // translatable - } - #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE - Stop(); - #endif + _temp_error(-1, MSG_EXTRUDER_SWITCHED_OFF, MSG_ERR_REDUNDANT_TEMP); } #endif //TEMP_SENSOR_1_AS_REDUNDANT @@ -1136,46 +1159,6 @@ void disable_heater() { #endif } -void max_temp_error(uint8_t e) { - disable_heater(); - if(IsStopped() == false) { - SERIAL_ERROR_START; - SERIAL_ERRORLN((int)e); - SERIAL_ERRORLNPGM(MSG_MAXTEMP_EXTRUDER_OFF); - LCD_ALERTMESSAGEPGM(MSG_ERR_MAXTEMP); // translatable - } - #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE - Stop(); - #endif -} - -void min_temp_error(uint8_t e) { - disable_heater(); - if(IsStopped() == false) { - SERIAL_ERROR_START; - SERIAL_ERRORLN((int)e); - SERIAL_ERRORLNPGM(MSG_MINTEMP_EXTRUDER_OFF); - LCD_ALERTMESSAGEPGM(MSG_ERR_MINTEMP); // translatable - } - #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE - Stop(); - #endif -} - -void bed_max_temp_error(void) { - #if HAS_HEATER_BED - WRITE_HEATER_BED(0); - #endif - if (IsStopped() == false) { - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_MAXTEMP_BED_OFF); - LCD_ALERTMESSAGEPGM(MSG_ERR_MAXTEMP_BED); // translatable - } - #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE - Stop(); - #endif -} - #ifdef HEATER_0_USES_MAX6675 #define MAX6675_HEAT_INTERVAL 250 long max6675_previous_millis = MAX6675_HEAT_INTERVAL;