|  |  |  | @ -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; | 
			
		
	
	
		
			
				
					|  |  |  | 
 |