|
@@ -1024,7 +1024,7 @@ void tp_init()
|
|
|
setPwmFrequency(FAN_PIN, 1);
|
|
|
#endif
|
|
|
#ifdef FAN_SOFT_PWM
|
|
|
- soft_pwm_fan = fanSpeedSoftPwm / 2;
|
|
|
+ soft_pwm_fan = fanSpeedSoftPwm / (1 << (8 - FAN_SOFT_PWM_BITS));
|
|
|
#endif
|
|
|
#endif
|
|
|
|
|
@@ -1600,11 +1600,14 @@ ISR(TIMER0_COMPB_vect)
|
|
|
soft_pwm_b = soft_pwm_bed;
|
|
|
if(soft_pwm_b > 0) WRITE(HEATER_BED_PIN,1); else WRITE(HEATER_BED_PIN,0);
|
|
|
#endif
|
|
|
+ }
|
|
|
#ifdef FAN_SOFT_PWM
|
|
|
- soft_pwm_fan = fanSpeedSoftPwm / 2;
|
|
|
+ if ((pwm_count & ((1 << FAN_SOFT_PWM_BITS) - 1)) == 0)
|
|
|
+ {
|
|
|
+ soft_pwm_fan = fanSpeedSoftPwm / (1 << (8 - FAN_SOFT_PWM_BITS));
|
|
|
if(soft_pwm_fan > 0) WRITE(FAN_PIN,1); else WRITE(FAN_PIN,0);
|
|
|
-#endif
|
|
|
}
|
|
|
+#endif
|
|
|
if(soft_pwm_0 < pwm_count)
|
|
|
{
|
|
|
WRITE(HEATER_0_PIN,0);
|
|
@@ -1623,7 +1626,7 @@ ISR(TIMER0_COMPB_vect)
|
|
|
if(soft_pwm_b < pwm_count) WRITE(HEATER_BED_PIN,0);
|
|
|
#endif
|
|
|
#ifdef FAN_SOFT_PWM
|
|
|
- if(soft_pwm_fan < pwm_count) WRITE(FAN_PIN,0);
|
|
|
+ if (soft_pwm_fan < (pwm_count & ((1 << FAN_SOFT_PWM_BITS) - 1))) WRITE(FAN_PIN,0);
|
|
|
#endif
|
|
|
|
|
|
pwm_count += (1 << SOFT_PWM_SCALE);
|
|
@@ -1810,8 +1813,8 @@ ISR(TIMER0_COMPB_vect)
|
|
|
#endif
|
|
|
|
|
|
#ifdef FAN_SOFT_PWM
|
|
|
- if (pwm_count == 0){
|
|
|
- soft_pwm_fan = fanSpeedSoftPwm / 2;
|
|
|
+ if ((pwm_count & ((1 << FAN_SOFT_PWM_BITS) - 1)) == 0)
|
|
|
+ soft_pwm_fan = fanSpeedSoftPwm / (1 << (8 - FAN_SOFT_PWM_BITS));
|
|
|
if (soft_pwm_fan > 0) WRITE(FAN_PIN,1); else WRITE(FAN_PIN,0);
|
|
|
}
|
|
|
if (soft_pwm_fan < pwm_count) WRITE(FAN_PIN,0);
|