diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2021-10-24 20:03:42 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2021-10-27 12:13:38 -0400 |
commit | 86fee2d517861546c7ba78cc1b59b83c2738ace4 (patch) | |
tree | 8b8df969438bd345fbbfbc79961c15df785f2a0d /klippy/extras/tmc2130.py | |
parent | 627c1c5d2a9d655d52960a17be7acff928d7ada2 (diff) | |
download | kutter-86fee2d517861546c7ba78cc1b59b83c2738ace4.tar.gz kutter-86fee2d517861546c7ba78cc1b59b83c2738ace4.tar.xz kutter-86fee2d517861546c7ba78cc1b59b83c2738ace4.zip |
tmc: Track requested hold_current so SET_TMC_CURRENT doesn't reduce it
The code automatically reduces the hold_current so that it is no
greater than the run_current. However, this could lead to confusing
behavior if one reduced and then increased the run_current via
SET_TMC_CURRENT commands. To avoid that, this change adds support for
tracking the requested hold_current - thus changes to run_current
don't subtly alter the hold_current.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/extras/tmc2130.py')
-rw-r--r-- | klippy/extras/tmc2130.py | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/klippy/extras/tmc2130.py b/klippy/extras/tmc2130.py index c29622ec..c6a54561 100644 --- a/klippy/extras/tmc2130.py +++ b/klippy/extras/tmc2130.py @@ -103,8 +103,9 @@ class TMCCurrentHelper: self.fields = mcu_tmc.get_fields() run_current = config.getfloat('run_current', above=0., maxval=MAX_CURRENT) - hold_current = config.getfloat('hold_current', run_current, + hold_current = config.getfloat('hold_current', MAX_CURRENT, above=0., maxval=MAX_CURRENT) + self.req_hold_current = hold_current self.sense_resistor = config.getfloat('sense_resistor', 0.110, above=0.) vsense, irun, ihold = self._calc_current(run_current, hold_current) self.fields.set_field("vsense", vsense) @@ -139,8 +140,9 @@ class TMCCurrentHelper: def get_current(self): run_current = self._calc_current_from_field("irun") hold_current = self._calc_current_from_field("ihold") - return run_current, hold_current, MAX_CURRENT + return run_current, hold_current, self.req_hold_current, MAX_CURRENT def set_current(self, run_current, hold_current, print_time): + self.req_hold_current = hold_current vsense, irun, ihold = self._calc_current(run_current, hold_current) if vsense != self.fields.get_field("vsense"): val = self.fields.set_field("vsense", vsense) |