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/tmc.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/tmc.py')
-rw-r--r-- | klippy/extras/tmc.py | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/klippy/extras/tmc.py b/klippy/extras/tmc.py index d45d64ac..f13568ed 100644 --- a/klippy/extras/tmc.py +++ b/klippy/extras/tmc.py @@ -261,26 +261,25 @@ class TMCCommandHelper: cmd_SET_TMC_CURRENT_help = "Set the current of a TMC driver" def cmd_SET_TMC_CURRENT(self, gcmd): ch = self.current_helper - prev_run_current, prev_hold_current, max_current = ch.get_current() - run_current = gcmd.get_float('CURRENT', None, - minval=0., maxval=max_current) + prev_cur, prev_hold_cur, req_hold_cur, max_cur = ch.get_current() + run_current = gcmd.get_float('CURRENT', None, minval=0., maxval=max_cur) hold_current = gcmd.get_float('HOLDCURRENT', None, - above=0., maxval=max_current) + above=0., maxval=max_cur) if run_current is not None or hold_current is not None: if run_current is None: - run_current = prev_run_current + run_current = prev_cur if hold_current is None: - hold_current = prev_hold_current + hold_current = req_hold_cur toolhead = self.printer.lookup_object('toolhead') print_time = toolhead.get_last_move_time() ch.set_current(run_current, hold_current, print_time) - prev_run_current, prev_hold_current, max_current = ch.get_current() + prev_cur, prev_hold_cur, req_hold_cur, max_cur = ch.get_current() # Report values - if prev_hold_current is None: - gcmd.respond_info("Run Current: %0.2fA" % (prev_run_current,)) + if prev_hold_cur is None: + gcmd.respond_info("Run Current: %0.2fA" % (prev_cur,)) else: gcmd.respond_info("Run Current: %0.2fA Hold Current: %0.2fA" - % (prev_run_current, prev_hold_current)) + % (prev_cur, prev_hold_cur)) # Stepper phase tracking def _get_phases(self): return (256 >> self.fields.get_field("mres")) * 4 |