aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/cartesian.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2016-11-14 13:40:35 -0500
committerKevin O'Connor <kevin@koconnor.net>2016-11-14 13:40:35 -0500
commit5a1ec817d4a1be304ad873ef839c329f8a8f6a58 (patch)
treee2d4d2518f8504427d400bab76ef6ea1e4a4ea65 /klippy/cartesian.py
parent9ad8153d331273259d584efc72145acd71a8485a (diff)
downloadkutter-5a1ec817d4a1be304ad873ef839c329f8a8f6a58.tar.gz
kutter-5a1ec817d4a1be304ad873ef839c329f8a8f6a58.tar.xz
kutter-5a1ec817d4a1be304ad873ef839c329f8a8f6a58.zip
stepper: Check if the motor needs to be enabled in the kinematic classes
Check for motor enable in the kinematic classes so it doesn't need to be checked on every move. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/cartesian.py')
-rw-r--r--klippy/cartesian.py20
1 files changed, 16 insertions, 4 deletions
diff --git a/klippy/cartesian.py b/klippy/cartesian.py
index 85746860..e386704c 100644
--- a/klippy/cartesian.py
+++ b/klippy/cartesian.py
@@ -13,6 +13,7 @@ class CartKinematics:
steppers = ['stepper_x', 'stepper_y', 'stepper_z']
self.steppers = [stepper.PrinterStepper(printer, config.getsection(n))
for n in steppers]
+ self.need_motor_enable = True
self.limits = [(1.0, -1.0)] * 3
self.stepper_pos = [0, 0, 0]
def build_config(self):
@@ -64,6 +65,14 @@ class CartKinematics:
self.limits = [(1.0, -1.0)] * 3
for stepper in self.steppers:
stepper.motor_enable(move_time, 0)
+ self.need_motor_enable = True
+ def check_motor_enable(self, move_time, move):
+ need_motor_enable = False
+ for i in StepList:
+ if move.axes_d[i]:
+ self.steppers[i].motor_enable(move_time, 1)
+ need_motor_enable |= self.steppers[i].need_motor_enable
+ self.need_motor_enable = need_motor_enable
def query_endstops(self, move_time):
return homing.QueryEndstops(["x", "y", "z"], self.steppers)
def check_endstops(self, move):
@@ -94,12 +103,15 @@ class CartKinematics:
for i in StepList if axes_d[i]])
move.limit_speed(velocity_factor * move_d, accel_factor * move_d)
def move(self, move_time, move):
+ if self.need_motor_enable:
+ self.check_motor_enable(move_time, move)
inv_accel = 1. / move.accel
inv_cruise_v = 1. / move.cruise_v
for i in StepList:
if not move.axes_d[i]:
continue
- mcu_time, so = self.steppers[i].prep_move(move_time)
+ mcu_stepper = self.steppers[i].mcu_stepper
+ mcu_time = mcu_stepper.print_to_mcu_time(move_time)
inv_step_dist = self.steppers[i].inv_step_dist
steps = move.axes_d[i] * inv_step_dist
move_step_d = move.move_d / abs(steps)
@@ -114,7 +126,7 @@ class CartKinematics:
accel_time_offset = move.start_v * inv_accel
accel_sqrt_offset = accel_time_offset**2
accel_steps = move.accel_r * steps
- count = so.step_sqrt(
+ count = mcu_stepper.step_sqrt(
mcu_time - accel_time_offset, accel_steps, step_offset
, accel_sqrt_offset, accel_multiplier)
step_pos += count
@@ -125,7 +137,7 @@ class CartKinematics:
#t = pos/cruise_v
cruise_multiplier = move_step_d * inv_cruise_v
cruise_steps = move.cruise_r * steps
- count = so.step_factor(
+ count = mcu_stepper.step_factor(
mcu_time, cruise_steps, step_offset, cruise_multiplier)
step_pos += count
step_offset += count - cruise_steps
@@ -136,7 +148,7 @@ class CartKinematics:
decel_time_offset = move.cruise_v * inv_accel
decel_sqrt_offset = decel_time_offset**2
decel_steps = move.decel_r * steps
- count = so.step_sqrt(
+ count = mcu_stepper.step_sqrt(
mcu_time + decel_time_offset, decel_steps, step_offset
, decel_sqrt_offset, -accel_multiplier)
step_pos += count