diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2021-08-05 23:32:00 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2021-08-06 13:12:49 -0400 |
commit | c2bfeb60aa895a783cb44eec9fdf50a6365118d0 (patch) | |
tree | 77c7ed46f9a2f0086a6e9e49476f58e986816ad0 /klippy/extras/tmc.py | |
parent | 24586f0c31d9f56a16f4c2434e8a7bcb98adc802 (diff) | |
download | kutter-c2bfeb60aa895a783cb44eec9fdf50a6365118d0.tar.gz kutter-c2bfeb60aa895a783cb44eec9fdf50a6365118d0.tar.xz kutter-c2bfeb60aa895a783cb44eec9fdf50a6365118d0.zip |
tmc: Move stepper phase reading code to TMCCommandHelper class
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/extras/tmc.py')
-rw-r--r-- | klippy/extras/tmc.py | 51 |
1 files changed, 26 insertions, 25 deletions
diff --git a/klippy/extras/tmc.py b/klippy/extras/tmc.py index 6fa8af4e..5bc9d74b 100644 --- a/klippy/extras/tmc.py +++ b/klippy/extras/tmc.py @@ -193,6 +193,8 @@ class TMCCommandHelper: self.toff = None self.printer.register_event_handler("klippy:connect", self._handle_connect) + # Set microstep config options + TMCMicrostepHelper(config, mcu_tmc) # Register commands gcode = self.printer.lookup_object("gcode") gcode.register_mux_command("SET_TMC_FIELD", "STEPPER", self.name, @@ -246,6 +248,17 @@ class TMCCommandHelper: else: gcmd.respond_info("Run Current: %0.2fA Hold Current: %0.2fA" % (prev_run_current, prev_hold_current)) + # Stepper phase tracking + def get_microsteps(self): + return 256 >> self.fields.get_field("mres") + def get_phase(self): + field_name = "mscnt" + if self.fields.lookup_register(field_name, None) is None: + # TMC2660 uses MSTEP + field_name = "mstep" + reg = self.mcu_tmc.get_register(self.fields.lookup_register(field_name)) + mscnt = self.fields.get_field(field_name, reg) + return 1023 - mscnt, 1024 # Stepper enable/disable tracking def _do_enable(self, print_time): try: @@ -397,31 +410,19 @@ class TMCVirtualPinHelper: ###################################################################### # Helper to configure and query the microstep settings -class TMCMicrostepHelper: - def __init__(self, config, mcu_tmc): - self.mcu_tmc = mcu_tmc - self.fields = mcu_tmc.get_fields() - stepper_name = " ".join(config.get_name().split()[1:]) - stepper_config = ms_config = config.getsection(stepper_name) - if (stepper_config.get('microsteps', None, note_valid=False) is None - and config.get('microsteps', None, note_valid=False) is not None): - # Older config format with microsteps in tmc config section - ms_config = config - steps = {'256': 0, '128': 1, '64': 2, '32': 3, '16': 4, - '8': 5, '4': 6, '2': 7, '1': 8} - mres = ms_config.getchoice('microsteps', steps) - self.fields.set_field("mres", mres) - self.fields.set_field("intpol", config.getboolean("interpolate", True)) - def get_microsteps(self): - return 256 >> self.fields.get_field("mres") - def get_phase(self): - field_name = "mscnt" - if self.fields.lookup_register(field_name, None) is None: - # TMC2660 uses MSTEP - field_name = "mstep" - reg = self.mcu_tmc.get_register(self.fields.lookup_register(field_name)) - mscnt = self.fields.get_field(field_name, reg) - return 1023 - mscnt, 1024 +def TMCMicrostepHelper(config, mcu_tmc): + fields = mcu_tmc.get_fields() + stepper_name = " ".join(config.get_name().split()[1:]) + stepper_config = ms_config = config.getsection(stepper_name) + if (stepper_config.get('microsteps', None, note_valid=False) is None + and config.get('microsteps', None, note_valid=False) is not None): + # Older config format with microsteps in tmc config section + ms_config = config + steps = {'256': 0, '128': 1, '64': 2, '32': 3, '16': 4, + '8': 5, '4': 6, '2': 7, '1': 8} + mres = ms_config.getchoice('microsteps', steps) + fields.set_field("mres", mres) + fields.set_field("intpol", config.getboolean("interpolate", True)) # Helper to configure "stealthchop" mode def TMCStealthchopHelper(config, mcu_tmc, tmc_freq): |