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/extruder.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/extruder.py')
-rw-r--r-- | klippy/extruder.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/klippy/extruder.py b/klippy/extruder.py index fb726fca..8b66dad6 100644 --- a/klippy/extruder.py +++ b/klippy/extruder.py @@ -11,6 +11,7 @@ class PrinterExtruder: self.heater = heater.PrinterHeater(printer, config) self.stepper = stepper.PrinterStepper(printer, config) self.pressure_advance = config.getfloat('pressure_advance', 0.) + self.need_motor_enable = True self.stepper_pos = 0 self.extrude_pos = 0. def build_config(self): @@ -19,6 +20,7 @@ class PrinterExtruder: self.stepper.build_config() def motor_off(self, move_time): self.stepper.motor_enable(move_time, 0) + self.need_motor_enable = True def check_move(self, move): if not self.heater.can_extrude: raise homing.EndstopError(move.end_pos, "Extrude below minimum temp") @@ -28,6 +30,9 @@ class PrinterExtruder: # Extrude only move - limit accel and velocity move.limit_speed(self.stepper.max_velocity, self.stepper.max_accel) def move(self, move_time, move): + if self.need_motor_enable: + self.stepper.motor_enable(move_time, 1) + self.need_motor_enable = False axis_d = move.axes_d[3] extrude_r = axis_d / move.move_d inv_accel = 1. / (move.accel * extrude_r) @@ -92,7 +97,8 @@ class PrinterExtruder: stepper_pos = self.stepper_pos inv_step_dist = self.stepper.inv_step_dist step_dist = self.stepper.step_dist - mcu_time, so = self.stepper.prep_move(move_time) + mcu_stepper = self.stepper.mcu_stepper + mcu_time = mcu_stepper.print_to_mcu_time(move_time) step_offset = stepper_pos - start_pos * inv_step_dist # Acceleration steps @@ -102,7 +108,7 @@ class PrinterExtruder: accel_time_offset = start_v * inv_accel accel_sqrt_offset = accel_time_offset**2 accel_steps = accel_d * inv_step_dist - count = so.step_sqrt( + count = mcu_stepper.step_sqrt( mcu_time - accel_time_offset, accel_steps, step_offset , accel_sqrt_offset, accel_multiplier) stepper_pos += count @@ -113,7 +119,7 @@ class PrinterExtruder: #t = pos/cruise_v cruise_multiplier = step_dist / cruise_v cruise_steps = cruise_d * inv_step_dist - count = so.step_factor( + count = mcu_stepper.step_factor( mcu_time, cruise_steps, step_offset, cruise_multiplier) stepper_pos += count step_offset += count - cruise_steps @@ -124,7 +130,7 @@ class PrinterExtruder: decel_time_offset = decel_v * inv_accel decel_sqrt_offset = decel_time_offset**2 decel_steps = decel_d * inv_step_dist - count = so.step_sqrt( + count = mcu_stepper.step_sqrt( mcu_time + decel_time_offset, decel_steps, step_offset , decel_sqrt_offset, -accel_multiplier) stepper_pos += count @@ -136,7 +142,7 @@ class PrinterExtruder: accel_time_offset = retract_v * inv_accel accel_sqrt_offset = accel_time_offset**2 accel_steps = -retract_d * inv_step_dist - count = so.step_sqrt( + count = mcu_stepper.step_sqrt( mcu_time - accel_time_offset, accel_steps, step_offset , accel_sqrt_offset, accel_multiplier) stepper_pos += count |