diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index e93ffadba..c6c53510d 100755 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -1857,10 +1857,6 @@ static void pid_heater(uint8_t e, const float current, const int target) float pid_input; float pid_output; -#ifdef TEMP_RUNAWAY_EXTRUDER_HYSTERESIS - temp_runaway_check(e+1, target, current, (int)soft_pwm[e], false); -#endif - #ifdef PIDTEMP pid_input = current; @@ -1940,10 +1936,6 @@ static void pid_bed(const float current, const int target) float pid_input; float pid_output; -#ifdef TEMP_RUNAWAY_BED_HYSTERESIS - temp_runaway_check(0, target, current, (int)soft_pwm_bed, true); -#endif - #ifndef PIDTEMPBED if(_millis() - previous_millis_bed_heater < BED_CHECK_INTERVAL) return; @@ -2138,6 +2130,17 @@ static void temp_mgr_pid() pid_bed(current_temperature_bed_isr, target_temperature_bed_isr); } +static void check_temp_runaway() +{ +#ifdef TEMP_RUNAWAY_EXTRUDER_HYSTERESIS + for(uint8_t e = 0; e < EXTRUDERS; e++) + temp_runaway_check(e+1, target_temperature_isr[e], current_temperature_isr[e], soft_pwm[e], false); +#endif +#ifdef TEMP_RUNAWAY_BED_HYSTERESIS + temp_runaway_check(0, target_temperature_bed_isr, current_temperature_bed_isr, soft_pwm_bed, true); +#endif +} + void check_temp_raw(); static void temp_mgr_isr() @@ -2147,9 +2150,8 @@ static void temp_mgr_isr() // clear the error assertion flag before checking again temp_error_state.assert = false; - - // check min/max temp using raw values - check_temp_raw(); + check_temp_raw(); // check min/max temp using raw values + check_temp_runaway(); // classic temperature hysteresis check // PID regulation temp_mgr_pid();