From 17ad26a649580153af032f893917ae2b465e5667 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Sun, 24 Nov 2019 10:59:13 -0500 Subject: [PATCH] force_move: Make sure to flush step generation queue after each move Add toolhead.note_kinematic_activity() call and use it to force the step generation to be flushed. Signed-off-by: Kevin O'Connor --- klippy/extras/force_move.py | 5 +++-- klippy/extras/manual_stepper.py | 6 ++++-- klippy/toolhead.py | 2 ++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/klippy/extras/force_move.py b/klippy/extras/force_move.py index 12707f4c2b15..0f58ad038c78 100644 --- a/klippy/extras/force_move.py +++ b/klippy/extras/force_move.py @@ -78,10 +78,11 @@ def manual_move(self, stepper, dist, speed, accel=0.): print_time = toolhead.get_last_move_time() self.trapq_append(self.trapq, print_time, accel_t, cruise_t, accel_t, 0., 0., 0., axis_r, 0., 0., 0., cruise_v, accel) - print_time += accel_t + cruise_t + accel_t + print_time = print_time + accel_t + cruise_t + accel_t stepper.generate_steps(print_time) - self.trapq_free_moves(self.trapq, print_time) + self.trapq_free_moves(self.trapq, print_time + 99999.9) stepper.set_stepper_kinematics(prev_sk) + toolhead.note_kinematic_activity(print_time) toolhead.dwell(accel_t + cruise_t + accel_t) def _lookup_stepper(self, params): name = self.gcode.get_str('STEPPER', params) diff --git a/klippy/extras/manual_stepper.py b/klippy/extras/manual_stepper.py index aa9c8049daa6..83e91850d76e 100644 --- a/klippy/extras/manual_stepper.py +++ b/klippy/extras/manual_stepper.py @@ -68,9 +68,11 @@ def do_move(self, movepos, speed, accel): accel_t, cruise_t, accel_t, cp, 0., 0., axis_r, 0., 0., 0., cruise_v, accel) - self.next_cmd_time += accel_t + cruise_t + accel_t + self.next_cmd_time = self.next_cmd_time + accel_t + cruise_t + accel_t self.rail.generate_steps(self.next_cmd_time) - self.trapq_free_moves(self.trapq, self.next_cmd_time) + self.trapq_free_moves(self.trapq, self.next_cmd_time + 99999.9) + toolhead = self.printer.lookup_object('toolhead') + toolhead.note_kinematic_activity(self.next_cmd_time) self.sync_print_time() def do_homing_move(self, movepos, speed, accel, triggered): if not self.can_home: diff --git a/klippy/toolhead.py b/klippy/toolhead.py index f542f17f918e..7f1731f94155 100644 --- a/klippy/toolhead.py +++ b/klippy/toolhead.py @@ -504,6 +504,8 @@ def note_step_generation_scan_time(self, delay, old_delay=0.): self.kin_flush_times.append(delay) new_delay = max(self.kin_flush_times + [0.]) self.kin_flush_delay = new_delay + def note_kinematic_activity(self, kin_time): + self.last_kin_move_time = max(self.last_kin_move_time, kin_time) def get_max_velocity(self): return self.max_velocity, self.max_accel def get_max_axis_halt(self):