aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/stepper.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2019-10-27 21:05:57 -0400
committerKevin O'Connor <kevin@koconnor.net>2019-11-06 15:51:51 -0500
commitf3ef9c18899e06eb66301fe8c994bcc67955905b (patch)
tree9c889c881c6835362049778678532c288cdc5a89 /klippy/stepper.py
parentd3afe4f1d89a13af4ef7c3ceb024dfae0edf3369 (diff)
downloadkutter-f3ef9c18899e06eb66301fe8c994bcc67955905b.tar.gz
kutter-f3ef9c18899e06eb66301fe8c994bcc67955905b.tar.xz
kutter-f3ef9c18899e06eb66301fe8c994bcc67955905b.zip
itersolve: Add support for generating steps from a trapq
Support associating a stepper_kinematics with a trapq. Support generating steps from a time range on the given trapq. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/stepper.py')
-rw-r--r--klippy/stepper.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/klippy/stepper.py b/klippy/stepper.py
index 4617f97a..f3721b45 100644
--- a/klippy/stepper.py
+++ b/klippy/stepper.py
@@ -70,6 +70,7 @@ class PrinterStepper:
mcu_stepper.setup_dir_pin(dir_pin_params)
step_dist = config.getfloat('step_distance', above=0.)
mcu_stepper.setup_step_distance(step_dist)
+ mcu_stepper.add_active_callback(self._stepper_active)
self.enable = lookup_enable_pin(ppins, config.get('enable_pin', None))
# Register STEPPER_BUZZ command
force_move = printer.try_load_module(config, 'force_move')
@@ -77,6 +78,8 @@ class PrinterStepper:
# Wrappers
self.step_itersolve = mcu_stepper.step_itersolve
self.setup_itersolve = mcu_stepper.setup_itersolve
+ self.generate_steps = mcu_stepper.generate_steps
+ self.set_trapq = mcu_stepper.set_trapq
self.set_stepper_kinematics = mcu_stepper.set_stepper_kinematics
self.set_ignore_move = mcu_stepper.set_ignore_move
self.calc_position_from_coord = mcu_stepper.calc_position_from_coord
@@ -105,10 +108,15 @@ class PrinterStepper:
2. * step_dist, max_halt_velocity, max_accel)
min_stop_interval = second_last_step_time - last_step_time
self.mcu_stepper.setup_min_stop_interval(min_stop_interval)
+ def _stepper_active(self, active_time):
+ self.motor_enable(active_time, 1)
def motor_enable(self, print_time, enable=0):
if self.need_motor_enable != (not enable):
self.enable.set_enable(print_time, enable)
self.need_motor_enable = not enable
+ if not enable:
+ # Enable stepper on future stepper movement
+ self.mcu_stepper.add_active_callback(self._stepper_active)
def is_motor_enabled(self):
return not self.need_motor_enable
@@ -213,6 +221,12 @@ class PrinterRail:
def setup_itersolve(self, alloc_func, *params):
for stepper in self.steppers:
stepper.setup_itersolve(alloc_func, *params)
+ def generate_steps(self, flush_time):
+ for stepper in self.steppers:
+ stepper.generate_steps(flush_time)
+ def set_trapq(self, trapq):
+ for stepper in self.steppers:
+ stepper.set_trapq(trapq)
def set_max_jerk(self, max_halt_velocity, max_accel):
for stepper in self.steppers:
stepper.set_max_jerk(max_halt_velocity, max_accel)