diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2016-11-14 13:40:35 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2016-11-14 13:40:35 -0500 |
commit | 5a1ec817d4a1be304ad873ef839c329f8a8f6a58 (patch) | |
tree | e2d4d2518f8504427d400bab76ef6ea1e4a4ea65 /klippy/cartesian.py | |
parent | 9ad8153d331273259d584efc72145acd71a8485a (diff) | |
download | kutter-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.py | 20 |
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 |