aboutsummaryrefslogtreecommitdiffstats
path: root/klippy
diff options
context:
space:
mode:
authorAlex Voinea <voinea.dragos.alexandru@gmail.com>2023-03-11 18:20:32 +0100
committerKevinOConnor <kevin@koconnor.net>2023-03-15 16:45:36 -0400
commita9feeaa9eb3622c53db67601adf09c15045de8dc (patch)
tree9ed5ebe81b03ca36078b8a51f2e3dd103bcda275 /klippy
parentfd167894a0792f2b351d4931f04cbec87b0281bd (diff)
downloadkutter-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.py18
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)