mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2024-11-28 14:24:34 +00:00
Temperature cleanup
This commit is contained in:
parent
eaa64967b5
commit
becdac19ea
@ -184,6 +184,7 @@ void Touch::touch(touch_control_t *control) {
|
|||||||
int8_t heater;
|
int8_t heater;
|
||||||
heater = control->data;
|
heater = control->data;
|
||||||
ui.clear_lcd();
|
ui.clear_lcd();
|
||||||
|
#if HAS_HOTEND
|
||||||
if (heater >= 0) { // HotEnd
|
if (heater >= 0) { // HotEnd
|
||||||
#if HOTENDS == 1
|
#if HOTENDS == 1
|
||||||
MenuItem_int3::action((const char *)GET_TEXT_F(MSG_NOZZLE), &thermalManager.temp_hotend[0].target, 0, thermalManager.hotend_max_target(0), []{ thermalManager.start_watching_hotend(0); });
|
MenuItem_int3::action((const char *)GET_TEXT_F(MSG_NOZZLE), &thermalManager.temp_hotend[0].target, 0, thermalManager.hotend_max_target(0), []{ thermalManager.start_watching_hotend(0); });
|
||||||
@ -192,6 +193,7 @@ void Touch::touch(touch_control_t *control) {
|
|||||||
MenuItem_int3::action((const char *)GET_TEXT_F(MSG_NOZZLE_N), &thermalManager.temp_hotend[heater].target, 0, thermalManager.hotend_max_target(heater), []{ thermalManager.start_watching_hotend(MenuItemBase::itemIndex); });
|
MenuItem_int3::action((const char *)GET_TEXT_F(MSG_NOZZLE_N), &thermalManager.temp_hotend[heater].target, 0, thermalManager.hotend_max_target(heater), []{ thermalManager.start_watching_hotend(MenuItemBase::itemIndex); });
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
#if HAS_HEATED_BED
|
#if HAS_HEATED_BED
|
||||||
else if (heater == H_BED) {
|
else if (heater == H_BED) {
|
||||||
MenuItem_int3::action((const char *)GET_TEXT_F(MSG_BED), &thermalManager.temp_bed.target, 0, BED_MAX_TARGET, thermalManager.start_watching_bed);
|
MenuItem_int3::action((const char *)GET_TEXT_F(MSG_BED), &thermalManager.temp_bed.target, 0, BED_MAX_TARGET, thermalManager.start_watching_bed);
|
||||||
|
@ -447,11 +447,11 @@ volatile bool Temperature::raw_temps_ready = false;
|
|||||||
temp_range_t Temperature::temp_range[HOTENDS] = ARRAY_BY_HOTENDS(sensor_heater_0, sensor_heater_1, sensor_heater_2, sensor_heater_3, sensor_heater_4, sensor_heater_5, sensor_heater_6, sensor_heater_7);
|
temp_range_t Temperature::temp_range[HOTENDS] = ARRAY_BY_HOTENDS(sensor_heater_0, sensor_heater_1, sensor_heater_2, sensor_heater_3, sensor_heater_4, sensor_heater_5, sensor_heater_6, sensor_heater_7);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED
|
#if MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED > 1
|
||||||
uint8_t Temperature::consecutive_low_temperature_error[HOTENDS] = { 0 };
|
uint8_t Temperature::consecutive_low_temperature_error[HOTENDS] = { 0 };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MILLISECONDS_PREHEAT_TIME
|
#if MILLISECONDS_PREHEAT_TIME > 0
|
||||||
millis_t Temperature::preheat_end_time[HOTENDS] = { 0 };
|
millis_t Temperature::preheat_end_time[HOTENDS] = { 0 };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -472,7 +472,7 @@ volatile bool Temperature::raw_temps_ready = false;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(PROBING_HEATERS_OFF)
|
#if ENABLED(PROBING_HEATERS_OFF)
|
||||||
bool Temperature::paused;
|
bool Temperature::paused_for_probing;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// public:
|
// public:
|
||||||
@ -1320,10 +1320,10 @@ void Temperature::manage_heater() {
|
|||||||
|
|
||||||
#if DISABLED(PIDTEMPBED)
|
#if DISABLED(PIDTEMPBED)
|
||||||
if (PENDING(ms, next_bed_check_ms)
|
if (PENDING(ms, next_bed_check_ms)
|
||||||
&& TERN1(PAUSE_CHANGE_REQD, paused == last_pause_state)
|
&& TERN1(PAUSE_CHANGE_REQD, paused_for_probing == last_pause_state)
|
||||||
) break;
|
) break;
|
||||||
next_bed_check_ms = ms + BED_CHECK_INTERVAL;
|
next_bed_check_ms = ms + BED_CHECK_INTERVAL;
|
||||||
TERN_(PAUSE_CHANGE_REQD, last_pause_state = paused);
|
TERN_(PAUSE_CHANGE_REQD, last_pause_state = paused_for_probing);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TERN_(HEATER_IDLE_HANDLER, heater_idle[IDLE_INDEX_BED].update(ms));
|
TERN_(HEATER_IDLE_HANDLER, heater_idle[IDLE_INDEX_BED].update(ms));
|
||||||
@ -1958,9 +1958,30 @@ void Temperature::updateTemperaturesFromRawValues() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the temperature manager
|
* Initialize the temperature manager
|
||||||
|
*
|
||||||
* The manager is implemented by periodic calls to manage_heater()
|
* The manager is implemented by periodic calls to manage_heater()
|
||||||
|
*
|
||||||
|
* - Init (and disable) SPI thermocouples like MAX6675 and MAX31865
|
||||||
|
* - Disable RUMBA JTAG to accommodate a thermocouple extension
|
||||||
|
* - Read-enable thermistors with a read-enable pin
|
||||||
|
* - Init HEATER and COOLER pins for OUTPUT in OFF state
|
||||||
|
* - Init the FAN pins as PWM or OUTPUT
|
||||||
|
* - Init the SPI interface for SPI thermocouples
|
||||||
|
* - Init ADC according to the HAL
|
||||||
|
* - Set thermistor pins to analog inputs according to the HAL
|
||||||
|
* - Start the Temperature ISR timer
|
||||||
|
* - Init the AUTO FAN pins as PWM or OUTPUT
|
||||||
|
* - Wait 250ms for temperatures to settle
|
||||||
|
* - Init temp_range[], used for catching min/maxtemp
|
||||||
*/
|
*/
|
||||||
void Temperature::init() {
|
void Temperature::init() {
|
||||||
|
|
||||||
|
TERN_(PROBING_HEATERS_OFF, paused_for_probing = false);
|
||||||
|
|
||||||
|
#if BOTH(PIDTEMP, PID_EXTRUSION_SCALING)
|
||||||
|
last_e_position = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Init (and disable) SPI thermocouples
|
// Init (and disable) SPI thermocouples
|
||||||
#if TEMP_SENSOR_0_IS_MAX6675 && PIN_EXISTS(MAX6675_CS)
|
#if TEMP_SENSOR_0_IS_MAX6675 && PIN_EXISTS(MAX6675_CS)
|
||||||
OUT_WRITE(MAX6675_CS_PIN, HIGH);
|
OUT_WRITE(MAX6675_CS_PIN, HIGH);
|
||||||
@ -2017,10 +2038,6 @@ void Temperature::init() {
|
|||||||
OUT_WRITE(TEMP_1_TR_ENABLE_PIN, ENABLED(TEMP_SENSOR_1_IS_MAX_TC));
|
OUT_WRITE(TEMP_1_TR_ENABLE_PIN, ENABLED(TEMP_SENSOR_1_IS_MAX_TC));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BOTH(PIDTEMP, PID_EXTRUSION_SCALING)
|
|
||||||
last_e_position = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAS_HEATER_0
|
#if HAS_HEATER_0
|
||||||
#ifdef BOARD_OPENDRAIN_MOSFETS
|
#ifdef BOARD_OPENDRAIN_MOSFETS
|
||||||
OUT_WRITE_OD(HEATER_0_PIN, HEATER_0_INVERTING);
|
OUT_WRITE_OD(HEATER_0_PIN, HEATER_0_INVERTING);
|
||||||
@ -2276,55 +2293,8 @@ void Temperature::init() {
|
|||||||
while (analog_to_celsius_cooler(mintemp_raw_COOLER) > COOLER_MINTEMP) mintemp_raw_COOLER += TEMPDIR(COOLER) * (OVERSAMPLENR);
|
while (analog_to_celsius_cooler(mintemp_raw_COOLER) > COOLER_MINTEMP) mintemp_raw_COOLER += TEMPDIR(COOLER) * (OVERSAMPLENR);
|
||||||
while (analog_to_celsius_cooler(maxtemp_raw_COOLER) < COOLER_MAXTEMP) maxtemp_raw_COOLER -= TEMPDIR(COOLER) * (OVERSAMPLENR);
|
while (analog_to_celsius_cooler(maxtemp_raw_COOLER) < COOLER_MAXTEMP) maxtemp_raw_COOLER -= TEMPDIR(COOLER) * (OVERSAMPLENR);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TERN_(PROBING_HEATERS_OFF, paused = false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WATCH_HOTENDS
|
|
||||||
/**
|
|
||||||
* Start Heating Sanity Check for hotends that are below
|
|
||||||
* their target temperature by a configurable margin.
|
|
||||||
* This is called when the temperature is set. (M104, M109)
|
|
||||||
*/
|
|
||||||
void Temperature::start_watching_hotend(const uint8_t E_NAME) {
|
|
||||||
const uint8_t ee = HOTEND_INDEX;
|
|
||||||
watch_hotend[ee].restart(degHotend(ee), degTargetHotend(ee));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if WATCH_BED
|
|
||||||
/**
|
|
||||||
* Start Heating Sanity Check for hotends that are below
|
|
||||||
* their target temperature by a configurable margin.
|
|
||||||
* This is called when the temperature is set. (M140, M190)
|
|
||||||
*/
|
|
||||||
void Temperature::start_watching_bed() {
|
|
||||||
watch_bed.restart(degBed(), degTargetBed());
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if WATCH_CHAMBER
|
|
||||||
/**
|
|
||||||
* Start Heating Sanity Check for chamber that is below
|
|
||||||
* its target temperature by a configurable margin.
|
|
||||||
* This is called when the temperature is set. (M141, M191)
|
|
||||||
*/
|
|
||||||
void Temperature::start_watching_chamber() {
|
|
||||||
watch_chamber.restart(degChamber(), degTargetChamber());
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if WATCH_COOLER
|
|
||||||
/**
|
|
||||||
* Start Cooling Sanity Check for cooler that is above
|
|
||||||
* its target temperature by a configurable margin.
|
|
||||||
* This is called when the temperature is set. (M143, M193)
|
|
||||||
*/
|
|
||||||
void Temperature::start_watching_cooler() {
|
|
||||||
watch_cooler.restart(degCooler(), degTargetCooler());
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAS_THERMAL_PROTECTION
|
#if HAS_THERMAL_PROTECTION
|
||||||
|
|
||||||
Temperature::tr_state_machine_t Temperature::tr_state_machine[NR_HEATER_RUNAWAY]; // = { { TRInactive, 0 } };
|
Temperature::tr_state_machine_t Temperature::tr_state_machine[NR_HEATER_RUNAWAY]; // = { { TRInactive, 0 } };
|
||||||
@ -2487,8 +2457,8 @@ void Temperature::disable_all_heaters() {
|
|||||||
#if ENABLED(PROBING_HEATERS_OFF)
|
#if ENABLED(PROBING_HEATERS_OFF)
|
||||||
|
|
||||||
void Temperature::pause(const bool p) {
|
void Temperature::pause(const bool p) {
|
||||||
if (p != paused) {
|
if (p != paused_for_probing) {
|
||||||
paused = p;
|
paused_for_probing = p;
|
||||||
if (p) {
|
if (p) {
|
||||||
HOTEND_LOOP() heater_idle[e].expire(); // Timeout immediately
|
HOTEND_LOOP() heater_idle[e].expire(); // Timeout immediately
|
||||||
TERN_(HAS_HEATED_BED, heater_idle[IDLE_INDEX_BED].expire()); // Timeout immediately
|
TERN_(HAS_HEATED_BED, heater_idle[IDLE_INDEX_BED].expire()); // Timeout immediately
|
||||||
@ -2773,17 +2743,16 @@ void Temperature::readings_ready() {
|
|||||||
const int8_t tdir = temp_dir[e];
|
const int8_t tdir = temp_dir[e];
|
||||||
if (tdir) {
|
if (tdir) {
|
||||||
const int16_t rawtemp = temp_hotend[e].raw * tdir; // normal direction, +rawtemp, else -rawtemp
|
const int16_t rawtemp = temp_hotend[e].raw * tdir; // normal direction, +rawtemp, else -rawtemp
|
||||||
const bool heater_on = (temp_hotend[e].target > 0
|
|
||||||
|| TERN0(PIDTEMP, temp_hotend[e].soft_pwm_amount) > 0
|
|
||||||
);
|
|
||||||
if (rawtemp > temp_range[e].raw_max * tdir) max_temp_error((heater_id_t)e);
|
if (rawtemp > temp_range[e].raw_max * tdir) max_temp_error((heater_id_t)e);
|
||||||
|
|
||||||
|
const bool heater_on = (temp_hotend[e].target > 0 || TERN0(PIDTEMP, temp_hotend[e].soft_pwm_amount > 0));
|
||||||
if (heater_on && rawtemp < temp_range[e].raw_min * tdir && !is_preheating(e)) {
|
if (heater_on && rawtemp < temp_range[e].raw_min * tdir && !is_preheating(e)) {
|
||||||
#ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED
|
#if MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED > 1
|
||||||
if (++consecutive_low_temperature_error[e] >= MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED)
|
if (++consecutive_low_temperature_error[e] >= MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED)
|
||||||
#endif
|
#endif
|
||||||
min_temp_error((heater_id_t)e);
|
min_temp_error((heater_id_t)e);
|
||||||
}
|
}
|
||||||
#ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED
|
#if MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED > 1
|
||||||
else
|
else
|
||||||
consecutive_low_temperature_error[e] = 0;
|
consecutive_low_temperature_error[e] = 0;
|
||||||
#endif
|
#endif
|
||||||
|
@ -462,11 +462,11 @@ class Temperature {
|
|||||||
static int16_t mintemp_raw_COOLER, maxtemp_raw_COOLER;
|
static int16_t mintemp_raw_COOLER, maxtemp_raw_COOLER;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED
|
#if MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED > 1
|
||||||
static uint8_t consecutive_low_temperature_error[HOTENDS];
|
static uint8_t consecutive_low_temperature_error[HOTENDS];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MILLISECONDS_PREHEAT_TIME
|
#if MILLISECONDS_PREHEAT_TIME > 0
|
||||||
static millis_t preheat_end_time[HOTENDS];
|
static millis_t preheat_end_time[HOTENDS];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -475,7 +475,7 @@ class Temperature {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(PROBING_HEATERS_OFF)
|
#if ENABLED(PROBING_HEATERS_OFF)
|
||||||
static bool paused;
|
static bool paused_for_probing;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -610,7 +610,7 @@ class Temperature {
|
|||||||
/**
|
/**
|
||||||
* Preheating hotends
|
* Preheating hotends
|
||||||
*/
|
*/
|
||||||
#ifdef MILLISECONDS_PREHEAT_TIME
|
#if MILLISECONDS_PREHEAT_TIME > 0
|
||||||
static inline bool is_preheating(const uint8_t E_NAME) {
|
static inline bool is_preheating(const uint8_t E_NAME) {
|
||||||
return preheat_end_time[HOTEND_INDEX] && PENDING(millis(), preheat_end_time[HOTEND_INDEX]);
|
return preheat_end_time[HOTEND_INDEX] && PENDING(millis(), preheat_end_time[HOTEND_INDEX]);
|
||||||
}
|
}
|
||||||
@ -653,17 +653,11 @@ class Temperature {
|
|||||||
return TERN0(HAS_HOTEND, temp_hotend[HOTEND_INDEX].target);
|
return TERN0(HAS_HOTEND, temp_hotend[HOTEND_INDEX].target);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WATCH_HOTENDS
|
|
||||||
static void start_watching_hotend(const uint8_t e=0);
|
|
||||||
#else
|
|
||||||
static inline void start_watching_hotend(const uint8_t=0) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAS_HOTEND
|
#if HAS_HOTEND
|
||||||
|
|
||||||
static void setTargetHotend(const celsius_t celsius, const uint8_t E_NAME) {
|
static void setTargetHotend(const celsius_t celsius, const uint8_t E_NAME) {
|
||||||
const uint8_t ee = HOTEND_INDEX;
|
const uint8_t ee = HOTEND_INDEX;
|
||||||
#ifdef MILLISECONDS_PREHEAT_TIME
|
#if MILLISECONDS_PREHEAT_TIME > 0
|
||||||
if (celsius == 0)
|
if (celsius == 0)
|
||||||
reset_preheat_time(ee);
|
reset_preheat_time(ee);
|
||||||
else if (temp_hotend[ee].target == 0)
|
else if (temp_hotend[ee].target == 0)
|
||||||
@ -702,6 +696,14 @@ class Temperature {
|
|||||||
return ABS(wholeDegHotend(e) - temp) < (TEMP_HYSTERESIS);
|
return ABS(wholeDegHotend(e) - temp) < (TEMP_HYSTERESIS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Start watching a Hotend to make sure it's really heating up
|
||||||
|
static inline void start_watching_hotend(const uint8_t E_NAME) {
|
||||||
|
UNUSED(HOTEND_INDEX);
|
||||||
|
#if WATCH_HOTENDS
|
||||||
|
watch_hotend[HOTEND_INDEX].restart(degHotend(HOTEND_INDEX), degTargetHotend(HOTEND_INDEX));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#endif // HAS_HOTEND
|
#endif // HAS_HOTEND
|
||||||
|
|
||||||
#if HAS_HEATED_BED
|
#if HAS_HEATED_BED
|
||||||
@ -715,11 +717,8 @@ class Temperature {
|
|||||||
static inline bool isHeatingBed() { return temp_bed.target > temp_bed.celsius; }
|
static inline bool isHeatingBed() { return temp_bed.target > temp_bed.celsius; }
|
||||||
static inline bool isCoolingBed() { return temp_bed.target < temp_bed.celsius; }
|
static inline bool isCoolingBed() { return temp_bed.target < temp_bed.celsius; }
|
||||||
|
|
||||||
#if WATCH_BED
|
// Start watching the Bed to make sure it's really heating up
|
||||||
static void start_watching_bed();
|
static inline void start_watching_bed() { TERN_(WATCH_BED, watch_bed.restart(degBed(), degTargetBed())); }
|
||||||
#else
|
|
||||||
static inline void start_watching_bed() {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void setTargetBed(const celsius_t celsius) {
|
static void setTargetBed(const celsius_t celsius) {
|
||||||
TERN_(AUTO_POWER_CONTROL, if (celsius) powerManager.power_on());
|
TERN_(AUTO_POWER_CONTROL, if (celsius) powerManager.power_on());
|
||||||
@ -752,12 +751,6 @@ class Temperature {
|
|||||||
static bool wait_for_probe(const celsius_t target_temp, bool no_wait_for_cooling=true);
|
static bool wait_for_probe(const celsius_t target_temp, bool no_wait_for_cooling=true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if WATCH_PROBE
|
|
||||||
static void start_watching_probe();
|
|
||||||
#else
|
|
||||||
static inline void start_watching_probe() {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAS_TEMP_CHAMBER
|
#if HAS_TEMP_CHAMBER
|
||||||
#if ENABLED(SHOW_TEMP_ADC_VALUES)
|
#if ENABLED(SHOW_TEMP_ADC_VALUES)
|
||||||
static inline int16_t rawChamberTemp() { return temp_chamber.raw; }
|
static inline int16_t rawChamberTemp() { return temp_chamber.raw; }
|
||||||
@ -772,17 +765,13 @@ class Temperature {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if WATCH_CHAMBER
|
|
||||||
static void start_watching_chamber();
|
|
||||||
#else
|
|
||||||
static inline void start_watching_chamber() {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAS_HEATED_CHAMBER
|
#if HAS_HEATED_CHAMBER
|
||||||
static void setTargetChamber(const celsius_t celsius) {
|
static void setTargetChamber(const celsius_t celsius) {
|
||||||
temp_chamber.target = _MIN(celsius, CHAMBER_MAX_TARGET);
|
temp_chamber.target = _MIN(celsius, CHAMBER_MAX_TARGET);
|
||||||
start_watching_chamber();
|
start_watching_chamber();
|
||||||
}
|
}
|
||||||
|
// Start watching the Chamber to make sure it's really heating up
|
||||||
|
static inline void start_watching_chamber() { TERN_(WATCH_CHAMBER, watch_chamber.restart(degChamber(), degTargetChamber())); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_TEMP_COOLER
|
#if HAS_TEMP_COOLER
|
||||||
@ -799,17 +788,13 @@ class Temperature {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if WATCH_COOLER
|
|
||||||
static void start_watching_cooler();
|
|
||||||
#else
|
|
||||||
static inline void start_watching_cooler() {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAS_COOLER
|
#if HAS_COOLER
|
||||||
static inline void setTargetCooler(const celsius_t celsius) {
|
static inline void setTargetCooler(const celsius_t celsius) {
|
||||||
temp_cooler.target = constrain(celsius, COOLER_MIN_TARGET, COOLER_MAX_TARGET);
|
temp_cooler.target = constrain(celsius, COOLER_MIN_TARGET, COOLER_MAX_TARGET);
|
||||||
start_watching_cooler();
|
start_watching_cooler();
|
||||||
}
|
}
|
||||||
|
// Start watching the Cooler to make sure it's really cooling down
|
||||||
|
static inline void start_watching_cooler() { TERN_(WATCH_COOLER, watch_cooler.restart(degCooler(), degTargetCooler())); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -860,7 +845,6 @@ class Temperature {
|
|||||||
|
|
||||||
#if ENABLED(PROBING_HEATERS_OFF)
|
#if ENABLED(PROBING_HEATERS_OFF)
|
||||||
static void pause(const bool p);
|
static void pause(const bool p);
|
||||||
static inline bool is_paused() { return paused; }
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HEATER_IDLE_HANDLER
|
#if HEATER_IDLE_HANDLER
|
||||||
|
Loading…
Reference in New Issue
Block a user