diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2021-04-02 12:18:05 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2021-08-06 13:12:49 -0400 |
commit | 24586f0c31d9f56a16f4c2434e8a7bcb98adc802 (patch) | |
tree | 45b76683a516aa897eb75c8f84e779de0dd099d7 /klippy | |
parent | 33dcb3829717102f5243ad805f3ee09d52c0c9cf (diff) | |
download | kutter-24586f0c31d9f56a16f4c2434e8a7bcb98adc802.tar.gz kutter-24586f0c31d9f56a16f4c2434e8a7bcb98adc802.tar.xz kutter-24586f0c31d9f56a16f4c2434e8a7bcb98adc802.zip |
stepper: Query the stepper mcu position during startup
Try to keep the host mcu_position synchronized with the
micro-controller by querying during startup and after every homing
event.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy')
-rw-r--r-- | klippy/mcu.py | 2 | ||||
-rw-r--r-- | klippy/stepper.py | 9 |
2 files changed, 8 insertions, 3 deletions
diff --git a/klippy/mcu.py b/klippy/mcu.py index 1e3aa3b4..83143837 100644 --- a/klippy/mcu.py +++ b/klippy/mcu.py @@ -122,7 +122,7 @@ class MCU_trsync: params = self._trsync_query_cmd.send([self._oid, self.REASON_HOST_REQUEST]) for s in self._steppers: - s.note_homing_end(did_trigger=True) # XXX + s.note_homing_end() return params['trigger_reason'] class MCU_endstop: diff --git a/klippy/stepper.py b/klippy/stepper.py index ca7df28f..8feb72b5 100644 --- a/klippy/stepper.py +++ b/klippy/stepper.py @@ -42,6 +42,8 @@ class MCU_stepper: self._itersolve_generate_steps = ffi_lib.itersolve_generate_steps self._itersolve_check_active = ffi_lib.itersolve_check_active self._trapq = ffi_main.NULL + self._mcu.get_printer().register_event_handler('klippy:connect', + self._query_mcu_position) def get_mcu(self): return self._mcu def get_name(self, short=False): @@ -136,7 +138,7 @@ class MCU_stepper: self.set_trapq(self._trapq) self._set_mcu_position(mcu_pos) return old_sk - def note_homing_end(self, did_trigger=False): + def note_homing_end(self): ffi_main, ffi_lib = chelper.get_ffi() ret = ffi_lib.stepcompress_reset(self._stepqueue, 0) if ret: @@ -145,7 +147,9 @@ class MCU_stepper: ret = ffi_lib.stepcompress_queue_msg(self._stepqueue, data, len(data)) if ret: raise error("Internal error in stepcompress") - if not did_trigger or self._mcu.is_fileoutput(): + self._query_mcu_position() + def _query_mcu_position(self): + if self._mcu.is_fileoutput(): return params = self._get_position_cmd.send([self._oid]) last_pos = params['pos'] @@ -153,6 +157,7 @@ class MCU_stepper: last_pos = -last_pos print_time = self._mcu.estimated_print_time(params['#receive_time']) clock = self._mcu.print_time_to_clock(print_time) + ffi_main, ffi_lib = chelper.get_ffi() ret = ffi_lib.stepcompress_set_last_position(self._stepqueue, clock, last_pos) if ret: |