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>
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user