diff --git a/Firmware/fancheck.cpp b/Firmware/fancheck.cpp index 12724582dc..ad14e3b446 100755 --- a/Firmware/fancheck.cpp +++ b/Firmware/fancheck.cpp @@ -294,3 +294,13 @@ void hotendFanSetFullSpeed() #endif //FAN_SOFT_PWM fanSpeed = 255; } + +void hotendDefaultAutoFanState() +{ +#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) +#ifdef EXTRUDER_ALTFAN_DETECT + altfanStatus.altfanOverride = eeprom_read_byte((uint8_t*)EEPROM_ALTFAN_OVERRIDE); +#endif + setExtruderAutoFanState(1); +#endif +} diff --git a/Firmware/fancheck.h b/Firmware/fancheck.h index 3121439722..0e0f2743c8 100755 --- a/Firmware/fancheck.h +++ b/Firmware/fancheck.h @@ -33,3 +33,4 @@ void checkExtruderAutoFans(); void checkFans(); void hotendFanSetFullSpeed(); +void hotendDefaultAutoFanState(); diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 07ea68ca8d..790b7653e2 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -5436,7 +5436,12 @@ void lcd_resume_print() st_synchronize(); custom_message_type = CustomMsg::Resuming; isPrintPaused = false; - Stopped = false; // resume processing USB commands again + + // resume processing USB commands again and restore hotend fan state (in case the print was + // stopped due to a thermal error) + hotendDefaultAutoFanState(); + Stopped = false; + restore_print_from_ram_and_continue(default_retraction); pause_time += (_millis() - start_pause_print); //accumulate time when print is paused for correct statistics calculation refresh_cmd_timeout(); @@ -6074,6 +6079,9 @@ void lcd_print_stop_finish() } else { // Turn off the print fan fanSpeed = 0; + + // restore the auto hotend state + hotendDefaultAutoFanState(); } if (mmu_enabled) extr_unload(); //M702 C