diff options
author | Alex Voinea <voinea.dragos.alexandru@gmail.com> | 2023-03-11 18:20:32 +0100 |
---|---|---|
committer | KevinOConnor <kevin@koconnor.net> | 2023-03-15 16:45:36 -0400 |
commit | a9feeaa9eb3622c53db67601adf09c15045de8dc (patch) | |
tree | 9ed5ebe81b03ca36078b8a51f2e3dd103bcda275 /klippy | |
parent | fd167894a0792f2b351d4931f04cbec87b0281bd (diff) | |
download | kutter-a9feeaa9eb3622c53db67601adf09c15045de8dc.tar.gz kutter-a9feeaa9eb3622c53db67601adf09c15045de8dc.tar.xz kutter-a9feeaa9eb3622c53db67601adf09c15045de8dc.zip |
tmc: Do not override tcoolthrs if it is configured
If tcoolthrs is configured (not the default 0), then do not force
the value of tcoolthrs=0xfffff during homing. This way, tcoolthrs
can be set to a custom value during homing.
`tpwmthrs` and `en_pwm_mode`/`en_spreadcycle` are now also
correctly restored if they were changed after startup.
Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
Diffstat (limited to 'klippy')
-rw-r--r-- | klippy/extras/tmc.py | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/klippy/extras/tmc.py b/klippy/extras/tmc.py index 51990536..55ccdfb4 100644 --- a/klippy/extras/tmc.py +++ b/klippy/extras/tmc.py @@ -452,13 +452,6 @@ class TMCVirtualPinHelper: if self.diag_pin is None: raise ppins.error("tmc virtual endstop requires diag pin config") # Setup for sensorless homing - reg = self.fields.lookup_register("en_pwm_mode", None) - if reg is None: - self.en_pwm = not self.fields.get_field("en_spreadcycle") - self.pwmthrs = self.fields.get_field("tpwmthrs") - else: - self.en_pwm = self.fields.get_field("en_pwm_mode") - self.pwmthrs = 0 self.printer.register_event_handler("homing:homing_move_begin", self.handle_homing_move_begin) self.printer.register_event_handler("homing:homing_move_end", @@ -468,19 +461,24 @@ class TMCVirtualPinHelper: def handle_homing_move_begin(self, hmove): if self.mcu_endstop not in hmove.get_mcu_endstops(): return + self.pwmthrs = self.fields.get_field("tpwmthrs") + self.coolthrs = self.fields.get_field("tcoolthrs") reg = self.fields.lookup_register("en_pwm_mode", None) if reg is None: # On "stallguard4" drivers, "stealthchop" must be enabled + self.en_pwm = not self.fields.get_field("en_spreadcycle") tp_val = self.fields.set_field("tpwmthrs", 0) self.mcu_tmc.set_register("TPWMTHRS", tp_val) val = self.fields.set_field("en_spreadcycle", 0) else: # On earlier drivers, "stealthchop" must be disabled + self.en_pwm = self.fields.get_field("en_pwm_mode") self.fields.set_field("en_pwm_mode", 0) val = self.fields.set_field(self.diag_pin_field, 1) self.mcu_tmc.set_register("GCONF", val) - tc_val = self.fields.set_field("tcoolthrs", 0xfffff) - self.mcu_tmc.set_register("TCOOLTHRS", tc_val) + if self.coolthrs == 0: + tc_val = self.fields.set_field("tcoolthrs", 0xfffff) + self.mcu_tmc.set_register("TCOOLTHRS", tc_val) def handle_homing_move_end(self, hmove): if self.mcu_endstop not in hmove.get_mcu_endstops(): return @@ -493,7 +491,7 @@ class TMCVirtualPinHelper: self.fields.set_field("en_pwm_mode", self.en_pwm) val = self.fields.set_field(self.diag_pin_field, 0) self.mcu_tmc.set_register("GCONF", val) - tc_val = self.fields.set_field("tcoolthrs", 0) + tc_val = self.fields.set_field("tcoolthrs", self.coolthrs) self.mcu_tmc.set_register("TCOOLTHRS", tc_val) |