diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 9919c4e35c..81068c7f7b 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -2591,9 +2591,10 @@ void Temperature::tick() { #endif #if ENABLED(FAN_SOFT_PWM) - #define _FAN_PWM(N) do{ \ - const uint8_t spcf = (soft_pwm_count_fan[N] & pwm_mask) + (soft_pwm_amount_fan[N] >> 1); \ - WRITE_FAN(N, (spcf > pwm_mask)); \ + #define _FAN_PWM(N) do{ \ + uint8_t &spcf = soft_pwm_count_fan[N]; \ + spcf = (spcf & pwm_mask) + (soft_pwm_amount_fan[N] >> 1); \ + WRITE_FAN(N, spcf > pwm_mask ? HIGH : LOW); \ }while(0) #if HAS_FAN0 _FAN_PWM(0);