mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-11-04 20:36:00 +01:00
stepper_enable: Move enable tracking from stepper.py to stepper_enable.py
Move the enable line tracking out of the main stepper.py code. This simplifies the main kinematic code. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user