mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-08-05 04:54:11 -06:00
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>
This commit is contained in:
parent
627c1c5d2a
commit
86fee2d517
5 changed files with 20 additions and 17 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue