From f3ef9c18899e06eb66301fe8c994bcc67955905b Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Sun, 27 Oct 2019 21:05:57 -0400 Subject: 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 --- klippy/stepper.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'klippy/stepper.py') 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) -- cgit v1.2.3-70-g09d2