stepper: Support step_pulse_duration even on TMC drivers in UART/SPI mode

Commit 689231df changed the default step_pulse_duration to 100ns for
TMC drivers that are configured in UART/SPI mode, but it failed to
document that change in Config_Changes.md and Config_Reference.md.
Update those documents to reflect that change.

Update the code so that a user may specify a custom
step_pulse_duration even on TMC drivers that are configured in
UART/SPI mode.  This may be useful for drivers that use a level
shifter on the step pin that requires more than a ~300ns to detect a
level change.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2021-11-29 16:41:48 -05:00
parent 54acca37ba
commit 520273e5ab
3 changed files with 11 additions and 5 deletions

View File

@ -16,9 +16,10 @@ use the older (typically less accurate) definition, define a custom
`resistance1: 100000`, and `beta: 3950`.
20211104: The "step pulse duration" option in "make menuconfig" has
been removed. A new `step_pulse_duration` setting in the
[stepper config section](Config_Reference.md#stepper) should be set
for all steppers that need a custom pulse duration.
been removed. The default step duration for TMC drivers configured in
UART or SPI mode is now 100ns. A new `step_pulse_duration` setting in
the [stepper config section](Config_Reference.md#stepper) should be
set for all steppers that need a custom pulse duration.
20211102: Several deprecated features have been removed. The stepper
`step_distance` option has been removed (deprecated on 20201222). The

View File

@ -157,7 +157,9 @@ microsteps:
# The minimum time between the step pulse signal edge and the
# following "unstep" signal edge. This is also used to set the
# minimum time between a step pulse and a direction change signal.
# The default is 0.000002 (which is 2us).
# The default is 0.000000100 (100ns) for TMC steppers that are
# configured in UART or SPI mode, and the default is 0.000002 (which
# is 2us) for all other steppers.
endstop_pin:
# Endstop switch detection pin. If this endstop pin is on a
# different mcu than the stepper motor then it enables "multi-mcu

View File

@ -14,6 +14,8 @@ class error(Exception):
# Steppers
######################################################################
MIN_BOTH_EDGE_DURATION = 0.000000200
# Interface to low-level mcu and chelper code
class MCU_stepper:
def __init__(self, name, step_pin_params, dir_pin_params, step_dist,
@ -70,7 +72,8 @@ class MCU_stepper:
self._step_pulse_duration = .000002
invert_step = self._invert_step
sbe = int(self._mcu.get_constants().get('STEPPER_BOTH_EDGE', '0'))
if self._req_step_both_edge and sbe:
if (self._req_step_both_edge and sbe
and self._step_pulse_duration <= MIN_BOTH_EDGE_DURATION):
# Enable stepper optimized step on both edges
self._step_both_edge = True
self._step_pulse_duration = 0.