diff options
Diffstat (limited to 'klippy/extras/manual_stepper.py')
-rw-r--r-- | klippy/extras/manual_stepper.py | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/klippy/extras/manual_stepper.py b/klippy/extras/manual_stepper.py index da65a5a4..cf597405 100644 --- a/klippy/extras/manual_stepper.py +++ b/klippy/extras/manual_stepper.py @@ -13,11 +13,13 @@ class ManualStepper: self.printer = config.get_printer() if config.get('endstop_pin', None) is not None: self.can_home = True - self.stepper = stepper.PrinterRail( + self.rail = stepper.PrinterRail( config, need_position_minmax=False, default_position_endstop=0.) + self.steppers = self.rail.get_steppers() else: self.can_home = False - self.stepper = stepper.PrinterStepper(config) + self.rail = stepper.PrinterStepper(config) + self.steppers = [self.rail] self.velocity = config.getfloat('velocity', 5., above=0.) self.accel = config.getfloat('accel', 0., minval=0.) self.next_cmd_time = 0. @@ -26,9 +28,9 @@ class ManualStepper: self.trapq = ffi_main.gc(ffi_lib.trapq_alloc(), ffi_lib.trapq_free) self.trapq_append = ffi_lib.trapq_append self.trapq_free_moves = ffi_lib.trapq_free_moves - self.stepper.setup_itersolve('cartesian_stepper_alloc', 'x') - self.stepper.set_trapq(self.trapq) - self.stepper.set_max_jerk(9999999.9, 9999999.9) + self.rail.setup_itersolve('cartesian_stepper_alloc', 'x') + self.rail.set_trapq(self.trapq) + self.rail.set_max_jerk(9999999.9, 9999999.9) # Register commands stepper_name = config.get_name().split()[1] self.gcode = self.printer.lookup_object('gcode') @@ -44,13 +46,19 @@ class ManualStepper: self.next_cmd_time = print_time def do_enable(self, enable): self.sync_print_time() - self.stepper.motor_enable(self.next_cmd_time, enable) + stepper_enable = self.printer.lookup_object('stepper_enable') + if enable: + for s in self.steppers: + stepper_enable.motor_enable(s.get_name(), self.next_cmd_time) + else: + for s in self.steppers: + stepper_enable.motor_disable(s.get_name(), self.next_cmd_time) self.sync_print_time() def do_set_position(self, setpos): - self.stepper.set_position([setpos, 0., 0.]) + self.rail.set_position([setpos, 0., 0.]) def do_move(self, movepos, speed, accel): self.sync_print_time() - cp = self.stepper.get_commanded_position() + cp = self.rail.get_commanded_position() dist = movepos - cp axis_r, accel_t, cruise_t, cruise_v = force_move.calc_move_time( dist, speed, accel) @@ -59,14 +67,14 @@ class ManualStepper: cp, 0., 0., axis_r, 0., 0., 0., cruise_v, accel) self.next_cmd_time += accel_t + cruise_t + accel_t - self.stepper.generate_steps(self.next_cmd_time) + self.rail.generate_steps(self.next_cmd_time) self.trapq_free_moves(self.trapq, self.next_cmd_time) self.sync_print_time() def do_homing_move(self, movepos, speed, accel, triggered): if not self.can_home: raise self.gcode.error("No endstop for this manual stepper") # Notify endstops of upcoming home - endstops = self.stepper.get_endstops() + endstops = self.rail.get_endstops() for mcu_endstop, name in endstops: mcu_endstop.home_prepare() # Start endstop checking |