fan: Clarify hardware_pwm and allow cycle_time to be set on software pwm

Specify hardware pwm cycle times using the same method as software pwm
(in seconds, not clock ticks).  Allow the fan code to be configured
with an explicit cycle time even when using software pwm.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2018-01-29 12:54:06 -05:00
parent b7b216af7f
commit 21df21b7af
9 changed files with 46 additions and 51 deletions

View file

@ -5,8 +5,7 @@
# This file may be distributed under the terms of the GNU GPLv3 license.
import pins
FAN_MIN_TIME = 0.1
PWM_CYCLE_TIME = 0.010
FAN_MIN_TIME = 0.100
class PrinterFan:
def __init__(self, config):
@ -17,8 +16,9 @@ class PrinterFan:
printer = config.get_printer()
self.mcu_fan = pins.setup_pin(printer, 'pwm', config.get('pin'))
self.mcu_fan.setup_max_duration(0.)
self.mcu_fan.setup_cycle_time(PWM_CYCLE_TIME)
self.mcu_fan.setup_hard_pwm(config.getint('hard_pwm', 0))
cycle_time = config.getfloat('cycle_time', 0.010, above=0.)
hardware_pwm = config.getboolean('hardware_pwm', False)
self.mcu_fan.setup_cycle_time(cycle_time, hardware_pwm)
def set_speed(self, print_time, value):
value = max(0., min(self.max_power, value))
if value == self.last_fan_value: