aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2016-11-14 13:10:14 -0500
committerKevin O'Connor <kevin@koconnor.net>2016-11-14 13:10:14 -0500
commit9ad8153d331273259d584efc72145acd71a8485a (patch)
treec6a29fd6f85acd7e0c310084484d6ed2924defc8
parent941427554a23dd0ae963eb9df7d2724c7c90809b (diff)
downloadkutter-9ad8153d331273259d584efc72145acd71a8485a.tar.gz
kutter-9ad8153d331273259d584efc72145acd71a8485a.tar.xz
kutter-9ad8153d331273259d584efc72145acd71a8485a.zip
stepper: Reset the next step time on a stepper stop
Automatically reset the next step time to zero on a stepper_stop() call. This makes the host code simpler as it no longer needs to schedule an explicit reset_step_clock command on the step after a homing operation. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r--klippy/mcu.py10
-rw-r--r--klippy/stepper.py2
-rw-r--r--src/stepper.c1
3 files changed, 5 insertions, 8 deletions
diff --git a/klippy/mcu.py b/klippy/mcu.py
index 2c1e518b..070bc7d2 100644
--- a/klippy/mcu.py
+++ b/klippy/mcu.py
@@ -22,7 +22,6 @@ class MCU_stepper:
self._oid = mcu.create_oid()
step_pin, pullup, invert_step = parse_pin_extras(step_pin)
dir_pin, pullup, self._invert_dir = parse_pin_extras(dir_pin)
- self._need_reset = True
self._mcu_freq = mcu.get_mcu_freq()
min_stop_interval = int(min_stop_interval * self._mcu_freq)
max_error = int(max_error * self._mcu_freq)
@@ -47,11 +46,8 @@ class MCU_stepper:
def get_invert_dir(self):
return self._invert_dir
def note_stepper_stop(self):
- self._need_reset = True
- def check_reset(self, mcu_time):
- if not self._need_reset:
- return
- self._need_reset = False
+ self.ffi_lib.stepcompress_reset(self._stepqueue, 0)
+ def reset_step_clock(self, mcu_time):
clock = int(mcu_time * self._mcu_freq)
self.ffi_lib.stepcompress_reset(self._stepqueue, clock)
data = (self._reset_cmd.msgid, self._oid, clock & 0xffffffff)
@@ -486,7 +482,7 @@ class Dummy_MCU_stepper:
self._stepid, dirstr, countstr, addstr, interval))
def set_next_step_dir(self, dir):
self._sdir = dir
- def check_reset(self, clock):
+ def reset_step_clock(self, clock):
self._mcu.outfile.write("G6S%dT%d\n" % (self._stepid, clock))
def print_to_mcu_time(self, print_time):
return self._mcu.print_to_mcu_time(print_time)
diff --git a/klippy/stepper.py b/klippy/stepper.py
index 57a5e9ae..8324eebc 100644
--- a/klippy/stepper.py
+++ b/klippy/stepper.py
@@ -71,8 +71,8 @@ class PrinterStepper:
self.need_motor_enable = True
def prep_move(self, move_time):
mcu_time = self.mcu_stepper.print_to_mcu_time(move_time)
- self.mcu_stepper.check_reset(mcu_time)
if self.need_motor_enable:
+ self.mcu_stepper.reset_step_clock(mcu_time)
self.motor_enable(move_time, 1)
self.need_motor_enable = False
return (mcu_time, self.mcu_stepper)
diff --git a/src/stepper.c b/src/stepper.c
index 57b0dd93..8da71e84 100644
--- a/src/stepper.c
+++ b/src/stepper.c
@@ -238,6 +238,7 @@ void
stepper_stop(struct stepper *s)
{
sched_del_timer(&s->time);
+ s->next_step_time = 0;
s->position = -stepper_get_position(s);
s->count = 0;
s->flags &= SF_INVERT_STEP;