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)"
This commit is contained in:
		@@ -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));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user