From 1eb7871bab7962751dd326d154b0452e61b74dee Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Thu, 7 Jul 2022 11:20:33 +0200 Subject: [PATCH] Also save fan speeds during a thermal error pause Similarly to temperatures, the fan speed is overwritten and needs to be restored appropriately. --- Firmware/Marlin.h | 1 + Firmware/Marlin_main.cpp | 8 +++++--- Firmware/temperature.cpp | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 08b3c21ba..6c4ff484f 100755 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -340,6 +340,7 @@ extern uint8_t saved_printing_type; extern float saved_extruder_temperature; //!< Active extruder temperature extern float saved_bed_temperature; //!< Bed temperature +extern int saved_fan_speed; //!< Print fan speed //save/restore printing in case that mmu is not responding extern bool mmu_print_saved; diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index ee1424639..44051f358 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -383,7 +383,7 @@ static uint8_t saved_active_extruder = 0; float saved_extruder_temperature = 0.0; //!< Active extruder temperature float saved_bed_temperature = 0.0; //!< Bed temperature static bool saved_extruder_relative_mode = false; -static int saved_fanSpeed = 0; //!< Print fan speed +int saved_fan_speed = 0; //!< Print fan speed //! @} static int saved_feedmultiply_mm = 100; @@ -9997,9 +9997,11 @@ void ThermalStop(bool allow_pause) // original values after the pause handler is called. float bed_temp = saved_bed_temperature; float ext_temp = saved_extruder_temperature; + int fan_speed = saved_fan_speed; lcd_pause_print(); saved_bed_temperature = bed_temp; saved_extruder_temperature = ext_temp; + saved_fan_speed = fan_speed; } } else { // We got a hard thermal error and/or there is no print going on. Just stop. @@ -11584,7 +11586,7 @@ void stop_and_save_print_to_ram(float z_move, float e_move) saved_extruder_temperature = degTargetHotend(active_extruder); saved_bed_temperature = degBed(); saved_extruder_relative_mode = axis_relative_modes & E_AXIS_MASK; - saved_fanSpeed = fanSpeed; + saved_fan_speed = fanSpeed; cmdqueue_reset(); //empty cmdqueue card.sdprinting = false; // card.closefile(); @@ -11653,7 +11655,7 @@ void restore_print_from_ram_and_continue(float e_move) // restore active_extruder active_extruder = saved_active_extruder; - fanSpeed = saved_fanSpeed; + fanSpeed = saved_fan_speed; if (degTargetHotend(saved_active_extruder) != saved_extruder_temperature) { setTargetHotendSafe(saved_extruder_temperature, saved_active_extruder); diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index 4d71937bc..85885eb0c 100755 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -500,6 +500,7 @@ void set_temp_error(TempErrorSource source, uint8_t index, TempErrorType type) if(!temp_error_state.error) { saved_bed_temperature = target_temperature_bed; saved_extruder_temperature = target_temperature[index]; + saved_fan_speed = fanSpeed; } // keep disabling heaters and keep fans on as long as the condition is asserted