diff options
| author | Kevin O'Connor <kevin@koconnor.net> | 2017-05-07 17:33:45 -0400 |
|---|---|---|
| committer | Kevin O'Connor <kevin@koconnor.net> | 2017-05-15 14:02:59 -0400 |
| commit | 5c4cc0d64637363aaeb46e2b65bb1b1f99e9e434 (patch) | |
| tree | 3e05557f40fd73c2d8bebed6afbf7719c701a952 /klippy/mcu.py | |
| parent | a361b921849b4e23f7a41feb2a7c011ee6d794b1 (diff) | |
| download | kutter-5c4cc0d64637363aaeb46e2b65bb1b1f99e9e434.tar.gz kutter-5c4cc0d64637363aaeb46e2b65bb1b1f99e9e434.tar.xz kutter-5c4cc0d64637363aaeb46e2b65bb1b1f99e9e434.zip | |
pwmcmds: Export the maximum PWM value
Instead of assuming the maximum PWM value is 255, export a constant
from the firmware to the host with the maximum value.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/mcu.py')
| -rw-r--r-- | klippy/mcu.py | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/klippy/mcu.py b/klippy/mcu.py index 7f5e11fc..71d58760 100644 --- a/klippy/mcu.py +++ b/klippy/mcu.py @@ -272,7 +272,6 @@ class MCU_digital_out: self.set_digital(mcu_time, dval) class MCU_pwm: - PWM_MAX = 255. def __init__(self, mcu, pin, cycle_time, hard_cycle_ticks, max_duration): self._mcu = mcu self._hard_cycle_ticks = hard_cycle_ticks @@ -280,6 +279,7 @@ class MCU_pwm: pin, pullup, self._invert = parse_pin_extras(pin) self._last_clock = 0 self._mcu_freq = 0. + self._pwm_max = 0. self._cmd_queue = mcu.alloc_command_queue() if hard_cycle_ticks: mcu.add_config_cmd( @@ -297,16 +297,20 @@ class MCU_pwm: def build_config(self): self._mcu_freq = self._mcu.get_mcu_freq() if self._hard_cycle_ticks: + self._pwm_max = self._mcu.serial.msgparser.get_constant_float( + "PWM_MAX") self._set_cmd = self._mcu.lookup_command( - "schedule_pwm_out oid=%c clock=%u value=%c") + "schedule_pwm_out oid=%c clock=%u value=%hu") else: + self._pwm_max = self._mcu.serial.msgparser.get_constant_float( + "SOFT_PWM_MAX") self._set_cmd = self._mcu.lookup_command( - "schedule_soft_pwm_out oid=%c clock=%u value=%c") + "schedule_soft_pwm_out oid=%c clock=%u value=%hu") def set_pwm(self, mcu_time, value): clock = int(mcu_time * self._mcu_freq) if self._invert: value = 1. - value - value = int(value * self.PWM_MAX + 0.5) + value = int(value * self._pwm_max + 0.5) msg = self._set_cmd.encode(self._oid, clock, value) self._mcu.send(msg, minclock=self._last_clock, reqclock=clock , cq=self._cmd_queue) |
