aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extruder.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/extruder.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/extruder.py')
-rw-r--r--klippy/extruder.py16
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