aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/Config_Reference.md28
-rw-r--r--klippy/extras/tmc.py16
-rw-r--r--klippy/extras/tmc2130.py1
-rw-r--r--klippy/extras/tmc2209.py1
-rw-r--r--klippy/extras/tmc2240.py2
-rw-r--r--klippy/extras/tmc5160.py2
6 files changed, 50 insertions, 0 deletions
diff --git a/docs/Config_Reference.md b/docs/Config_Reference.md
index ee09bf2c..d48715d8 100644
--- a/docs/Config_Reference.md
+++ b/docs/Config_Reference.md
@@ -3317,6 +3317,13 @@ run_current:
# set, "stealthChop" mode will be enabled if the stepper motor
# velocity is below this value. The default is 0, which disables
# "stealthChop" mode.
+#coolstep_threshold:
+# The velocity (in mm/s) to set the TMC driver internal "CoolStep"
+# threshold to. When set, the coolstep feature will be enabled if
+# the stepper motor velocity is near or above this value. Important
+# - if coolstep_threshold is set and "sensorless homing" is used,
+# then one must ensure that the homing speed is above the coolstep
+# threshold! The default is to not enable the coolstep feature.
#driver_MSLUT0: 2863314260
#driver_MSLUT1: 1251300522
#driver_MSLUT2: 608774441
@@ -3456,6 +3463,13 @@ run_current:
#sense_resistor: 0.110
#stealthchop_threshold: 0
# See the "tmc2208" section for the definition of these parameters.
+#coolstep_threshold:
+# The velocity (in mm/s) to set the TMC driver internal "CoolStep"
+# threshold to. When set, the coolstep feature will be enabled if
+# the stepper motor velocity is near or above this value. Important
+# - if coolstep_threshold is set and "sensorless homing" is used,
+# then one must ensure that the homing speed is above the coolstep
+# threshold! The default is to not enable the coolstep feature.
#uart_address:
# The address of the TMC2209 chip for UART messages (an integer
# between 0 and 3). This is typically used when multiple TMC2209
@@ -3614,6 +3628,13 @@ run_current:
# set, "stealthChop" mode will be enabled if the stepper motor
# velocity is below this value. The default is 0, which disables
# "stealthChop" mode.
+#coolstep_threshold:
+# The velocity (in mm/s) to set the TMC driver internal "CoolStep"
+# threshold to. When set, the coolstep feature will be enabled if
+# the stepper motor velocity is near or above this value. Important
+# - if coolstep_threshold is set and "sensorless homing" is used,
+# then one must ensure that the homing speed is above the coolstep
+# threshold! The default is to not enable the coolstep feature.
#driver_MSLUT0: 2863314260
#driver_MSLUT1: 1251300522
#driver_MSLUT2: 608774441
@@ -3735,6 +3756,13 @@ run_current:
# set, "stealthChop" mode will be enabled if the stepper motor
# velocity is below this value. The default is 0, which disables
# "stealthChop" mode.
+#coolstep_threshold:
+# The velocity (in mm/s) to set the TMC driver internal "CoolStep"
+# threshold to. When set, the coolstep feature will be enabled if
+# the stepper motor velocity is near or above this value. Important
+# - if coolstep_threshold is set and "sensorless homing" is used,
+# then one must ensure that the homing speed is above the coolstep
+# threshold! The default is to not enable the coolstep feature.
#driver_MSLUT0: 2863314260
#driver_MSLUT1: 1251300522
#driver_MSLUT2: 608774441
diff --git a/klippy/extras/tmc.py b/klippy/extras/tmc.py
index 4ce9466a..e7c0239f 100644
--- a/klippy/extras/tmc.py
+++ b/klippy/extras/tmc.py
@@ -616,3 +616,19 @@ def TMCStealthchopHelper(config, mcu_tmc):
else:
# TMC2208 uses en_spreadCycle
fields.set_field("en_spreadcycle", not en_pwm_mode)
+
+# Helper to configure StallGuard and CoolStep minimum velocity
+def TMCVcoolthrsHelper(config, mcu_tmc):
+ fields = mcu_tmc.get_fields()
+ velocity = config.getfloat('coolstep_threshold', None, minval=0.)
+ tcoolthrs = 0
+
+ if velocity is not None:
+ stepper_name = " ".join(config.get_name().split()[1:])
+ sconfig = config.getsection(stepper_name)
+ rotation_dist, steps_per_rotation = stepper.parse_step_distance(sconfig)
+ step_dist = rotation_dist / steps_per_rotation
+ mres = fields.get_field("mres")
+ tcoolthrs = TMCtstepHelper(step_dist, mres,
+ mcu_tmc.get_tmc_frequency(), velocity)
+ fields.set_field("tcoolthrs", tcoolthrs)
diff --git a/klippy/extras/tmc2130.py b/klippy/extras/tmc2130.py
index f995fb7a..44d4342b 100644
--- a/klippy/extras/tmc2130.py
+++ b/klippy/extras/tmc2130.py
@@ -297,6 +297,7 @@ class TMC2130:
# Setup basic register values
tmc.TMCWaveTableHelper(config, self.mcu_tmc)
tmc.TMCStealthchopHelper(config, self.mcu_tmc)
+ tmc.TMCVcoolthrsHelper(config, self.mcu_tmc)
# Allow other registers to be set from the config
set_config_field = self.fields.set_config_field
# CHOPCONF
diff --git a/klippy/extras/tmc2209.py b/klippy/extras/tmc2209.py
index ac997a81..fbd8d1c1 100644
--- a/klippy/extras/tmc2209.py
+++ b/klippy/extras/tmc2209.py
@@ -74,6 +74,7 @@ class TMC2209:
# Setup basic register values
self.fields.set_field("mstep_reg_select", True)
tmc.TMCStealthchopHelper(config, self.mcu_tmc)
+ tmc.TMCVcoolthrsHelper(config, self.mcu_tmc)
# Allow other registers to be set from the config
set_config_field = self.fields.set_config_field
# GCONF
diff --git a/klippy/extras/tmc2240.py b/klippy/extras/tmc2240.py
index f4c75aa9..3989b902 100644
--- a/klippy/extras/tmc2240.py
+++ b/klippy/extras/tmc2240.py
@@ -365,6 +365,8 @@ class TMC2240:
tmc.TMCWaveTableHelper(config, self.mcu_tmc)
self.fields.set_config_field(config, "offset_sin90", 0)
tmc.TMCStealthchopHelper(config, self.mcu_tmc)
+ tmc.TMCVcoolthrsHelper(config, self.mcu_tmc)
+ # Allow other registers to be set from the config
set_config_field = self.fields.set_config_field
# GCONF
set_config_field(config, "multistep_filt", True)
diff --git a/klippy/extras/tmc5160.py b/klippy/extras/tmc5160.py
index e37435e6..97d2d6f9 100644
--- a/klippy/extras/tmc5160.py
+++ b/klippy/extras/tmc5160.py
@@ -336,6 +336,8 @@ class TMC5160:
# Setup basic register values
tmc.TMCWaveTableHelper(config, self.mcu_tmc)
tmc.TMCStealthchopHelper(config, self.mcu_tmc)
+ tmc.TMCVcoolthrsHelper(config, self.mcu_tmc)
+ # Allow other registers to be set from the config
set_config_field = self.fields.set_config_field
# GCONF
set_config_field(config, "multistep_filt", True)