aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extruder.py
diff options
context:
space:
mode:
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