aboutsummaryrefslogtreecommitdiffstats
path: root/klippy
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2024-05-14 21:27:01 -0400
committerKevin O'Connor <kevin@koconnor.net>2024-05-16 12:18:02 -0400
commit2efde0111e949c87f72409fbe43a6a96d5aa07f5 (patch)
treef191342bff4cab9714b85f19ee8bc3193ce8b199 /klippy
parentfaee2c0e52506f157d38b747613df213d659226a (diff)
downloadkutter-2efde0111e949c87f72409fbe43a6a96d5aa07f5.tar.gz
kutter-2efde0111e949c87f72409fbe43a6a96d5aa07f5.tar.xz
kutter-2efde0111e949c87f72409fbe43a6a96d5aa07f5.zip
tmc: Save and restore thigh during sensorless homing
Make sure thigh is set to zero during sensorless homing, as it would not make sense for it to be enabled. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy')
-rw-r--r--klippy/extras/tmc.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/klippy/extras/tmc.py b/klippy/extras/tmc.py
index 1a5059fa..a797b866 100644
--- a/klippy/extras/tmc.py
+++ b/klippy/extras/tmc.py
@@ -479,7 +479,7 @@ class TMCVirtualPinHelper:
self.diag_pin_field = None
self.mcu_endstop = None
self.en_pwm = False
- self.pwmthrs = self.coolthrs = 0
+ self.pwmthrs = self.coolthrs = self.thigh = 0
# Register virtual_endstop pin
name_parts = config.get_name().split()
ppins = self.printer.lookup_object("pins")
@@ -503,8 +503,8 @@ class TMCVirtualPinHelper:
def handle_homing_move_begin(self, hmove):
if self.mcu_endstop not in hmove.get_mcu_endstops():
return
+ # Enable/disable stealthchop
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
@@ -518,12 +518,21 @@ class TMCVirtualPinHelper:
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)
+ # Enable tcoolthrs (if not already)
+ self.coolthrs = self.fields.get_field("tcoolthrs")
if self.coolthrs == 0:
tc_val = self.fields.set_field("tcoolthrs", 0xfffff)
self.mcu_tmc.set_register("TCOOLTHRS", tc_val)
+ # Disable thigh
+ reg = self.fields.lookup_register("thigh", None)
+ if reg is not None:
+ self.thigh = self.fields.get_field("thigh")
+ th_val = self.fields.set_field("thigh", 0)
+ self.mcu_tmc.set_register(reg, th_val)
def handle_homing_move_end(self, hmove):
if self.mcu_endstop not in hmove.get_mcu_endstops():
return
+ # Restore stealthchop/spreadcycle
reg = self.fields.lookup_register("en_pwm_mode", None)
if reg is None:
tp_val = self.fields.set_field("tpwmthrs", self.pwmthrs)
@@ -533,8 +542,14 @@ 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)
+ # Restore tcoolthrs
tc_val = self.fields.set_field("tcoolthrs", self.coolthrs)
self.mcu_tmc.set_register("TCOOLTHRS", tc_val)
+ # Restore thigh
+ reg = self.fields.lookup_register("thigh", None)
+ if reg is not None:
+ th_val = self.fields.set_field("thigh", self.thigh)
+ self.mcu_tmc.set_register(reg, th_val)
######################################################################