diff --git a/Marlin/src/feature/controllerfan.cpp b/Marlin/src/feature/controllerfan.cpp index ed7fca1fe731..074670040781 100644 --- a/Marlin/src/feature/controllerfan.cpp +++ b/Marlin/src/feature/controllerfan.cpp @@ -55,35 +55,36 @@ void ControllerFan::update() { #define MOTOR_IS_ON(A,B) (A##_ENABLE_READ() == bool(B##_ENABLE_ON)) #define _OR_ENABLED_E(N) || MOTOR_IS_ON(E##N,E) - const bool - xy_motor_on = MOTOR_IS_ON(X,X) || MOTOR_IS_ON(Y,Y) - #if HAS_X2_ENABLE - || MOTOR_IS_ON(X2,X) - #endif - #if HAS_Y2_ENABLE - || MOTOR_IS_ON(Y2,Y) - #endif - , - z_motor_on = MOTOR_IS_ON(Z,Z) - #if HAS_Z2_ENABLE - || MOTOR_IS_ON(Z2,Z) - #endif - #if HAS_Z3_ENABLE - || MOTOR_IS_ON(Z3,Z) - #endif - #if HAS_Z4_ENABLE - || MOTOR_IS_ON(Z4,Z) - #endif - ; + const bool motor_on = MOTOR_IS_ON(Z,Z) + #if HAS_Z2_ENABLE + || MOTOR_IS_ON(Z2,Z) + #endif + #if HAS_Z3_ENABLE + || MOTOR_IS_ON(Z3,Z) + #endif + #if HAS_Z4_ENABLE + || MOTOR_IS_ON(Z4,Z) + #endif + || (DISABLED(CONTROLLER_FAN_USE_Z_ONLY) && ( + MOTOR_IS_ON(X,X) || MOTOR_IS_ON(Y,Y) + #if HAS_X2_ENABLE + || MOTOR_IS_ON(X2,X) + #endif + #if HAS_Y2_ENABLE + || MOTOR_IS_ON(Y2,Y) + #endif + #if E_STEPPERS + REPEAT(E_STEPPERS, _OR_ENABLED_E) + #endif + ) + ) + ; - // If any of the drivers or the bed are enabled... - if (xy_motor_on || z_motor_on + // If any of the drivers or the heated bed are enabled... + if (motor_on #if HAS_HEATED_BED || thermalManager.temp_bed.soft_pwm_amount > 0 #endif - #if E_STEPPERS - REPEAT(E_STEPPERS, _OR_ENABLED_E) - #endif ) lastMotorOn = ms; //... set time to NOW so the fan will turn on // Fan Settings. Set fan > 0: diff --git a/Marlin/src/gcode/feature/controllerfan/M710.cpp b/Marlin/src/gcode/feature/controllerfan/M710.cpp index 8e5845fa851c..e00fa77d62b6 100644 --- a/Marlin/src/gcode/feature/controllerfan/M710.cpp +++ b/Marlin/src/gcode/feature/controllerfan/M710.cpp @@ -74,9 +74,7 @@ void GcodeSuite::M710() { const bool seenD = parser.seenval('D'); if (seenD) controllerFan.settings.duration = parser.value_ushort(); - if (seenR || seenS || seenI || seenA || seenD) - controllerFan.update(); - else + if (!(seenR || seenS || seenI || seenA || seenD)) M710_report(false); } diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index 59c80b1af081..6dbc680659c6 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -234,11 +234,11 @@ void menu_advanced_settings(); void menu_controller_fan() { START_MENU(); BACK_ITEM(MSG_CONFIGURATION); - EDIT_ITEM_FAST(percent, MSG_CONTROLLER_FAN_IDLE_SPEED, &controllerFan.settings.idle_speed, _MAX(1, CONTROLLERFAN_SPEED_MIN) - 1, 255, controllerFan.update); - EDIT_ITEM(bool, MSG_CONTROLLER_FAN_AUTO_ON, &controllerFan.settings.auto_mode, controllerFan.update); + EDIT_ITEM_FAST(percent, MSG_CONTROLLER_FAN_IDLE_SPEED, &controllerFan.settings.idle_speed, _MAX(1, CONTROLLERFAN_SPEED_MIN) - 1, 255); + EDIT_ITEM(bool, MSG_CONTROLLER_FAN_AUTO_ON, &controllerFan.settings.auto_mode); if (controllerFan.settings.auto_mode) { - EDIT_ITEM_FAST(percent, MSG_CONTROLLER_FAN_SPEED, &controllerFan.settings.active_speed, _MAX(1, CONTROLLERFAN_SPEED_MIN) - 1, 255, controllerFan.update); - EDIT_ITEM(uint16_4, MSG_CONTROLLER_FAN_DURATION, &controllerFan.settings.duration, 0, 4800, controllerFan.update); + EDIT_ITEM_FAST(percent, MSG_CONTROLLER_FAN_SPEED, &controllerFan.settings.active_speed, _MAX(1, CONTROLLERFAN_SPEED_MIN) - 1, 255); + EDIT_ITEM(uint16_4, MSG_CONTROLLER_FAN_DURATION, &controllerFan.settings.duration, 0, 4800); } END_MENU(); }