aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/mcu.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2016-07-26 22:06:14 -0400
committerKevin O'Connor <kevin@koconnor.net>2016-07-28 11:22:28 -0400
commit654546e3382b87610a51d01d17c917fb8d8bbaeb (patch)
tree4bba3ad08ded17c6b022eb930bc1e970818733c8 /klippy/mcu.py
parent170389ef145a2805738d8411eb65433de09eeaac (diff)
downloadkutter-654546e3382b87610a51d01d17c917fb8d8bbaeb.tar.gz
kutter-654546e3382b87610a51d01d17c917fb8d8bbaeb.tar.xz
kutter-654546e3382b87610a51d01d17c917fb8d8bbaeb.zip
stepper: Support stepper phase adjustments when homing
Add support for enhancing the precision of endstop switches by also inspecting the phase of the stepper motor when the endstop triggers. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/mcu.py')
-rw-r--r--klippy/mcu.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/klippy/mcu.py b/klippy/mcu.py
index 728ec91d..864ebbfb 100644
--- a/klippy/mcu.py
+++ b/klippy/mcu.py
@@ -40,6 +40,8 @@ class MCU_stepper:
max_error, self._step_cmd.msgid, self._oid)
def get_oid(self):
return self._oid
+ def get_invert_dir(self):
+ return self._invert_dir
def note_stepper_stop(self):
self._sdir = -1
self._last_move_clock = -2**29
@@ -88,6 +90,7 @@ class MCU_endstop:
, self._oid)
self._query_cmd = mcu.lookup_command("end_stop_query oid=%c")
self._homing = False
+ self._last_position = 0
self._next_query_clock = 0
mcu_freq = self._mcu.get_mcu_freq()
self._retry_query_ticks = mcu_freq * self.RETRY_QUERY
@@ -104,6 +107,7 @@ class MCU_endstop:
self._stepper.note_stepper_stop()
def _handle_end_stop_state(self, params):
logging.debug("end_stop_state %s" % (params,))
+ self._last_position = params['pos']
self._homing = params['homing'] != 0
def is_homing(self):
if not self._homing:
@@ -116,6 +120,10 @@ class MCU_endstop:
msg = self._query_cmd.encode(self._oid)
self._mcu.send(msg, cq=self._cmd_queue)
return self._homing
+ def get_last_position(self):
+ if self._stepper.get_invert_dir():
+ return -self._last_position
+ return self._last_position
def get_print_clock(self, print_time):
return self._mcu.get_print_clock(print_time)