mirror of https://github.com/Desuuuu/klipper.git
mcu: Return time of trigger from home_wait()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
128a2f8cd6
commit
1dc2ab048f
|
@ -116,7 +116,8 @@ class BLTouchEndstopWrapper:
|
||||||
self.mcu_endstop.home_start(self.action_end_time, ENDSTOP_SAMPLE_TIME,
|
self.mcu_endstop.home_start(self.action_end_time, ENDSTOP_SAMPLE_TIME,
|
||||||
ENDSTOP_SAMPLE_COUNT, ENDSTOP_REST_TIME,
|
ENDSTOP_SAMPLE_COUNT, ENDSTOP_REST_TIME,
|
||||||
triggered=triggered)
|
triggered=triggered)
|
||||||
return self.mcu_endstop.home_wait(self.action_end_time + 0.100)
|
trigger_time = self.mcu_endstop.home_wait(self.action_end_time + 0.100)
|
||||||
|
return trigger_time > 0.
|
||||||
def raise_probe(self):
|
def raise_probe(self):
|
||||||
self.sync_mcu_print_time()
|
self.sync_mcu_print_time()
|
||||||
if not self.pin_up_not_triggered:
|
if not self.pin_up_not_triggered:
|
||||||
|
|
|
@ -76,9 +76,11 @@ class HomingMove:
|
||||||
# Wait for endstops to trigger
|
# Wait for endstops to trigger
|
||||||
move_end_print_time = self.toolhead.get_last_move_time()
|
move_end_print_time = self.toolhead.get_last_move_time()
|
||||||
for mcu_endstop, name in self.endstops:
|
for mcu_endstop, name in self.endstops:
|
||||||
did_trigger = mcu_endstop.home_wait(move_end_print_time)
|
trigger_time = mcu_endstop.home_wait(move_end_print_time)
|
||||||
if not did_trigger and check_triggered and error is None:
|
if trigger_time < 0. and error is None:
|
||||||
error = "Failed to home %s: Timeout during homing" % (name,)
|
error = "Communication timeout during homing %s" % (name,)
|
||||||
|
elif not trigger_time and check_triggered and error is None:
|
||||||
|
error = "No trigger on %s after full movement" % (name,)
|
||||||
# Determine stepper halt positions
|
# Determine stepper halt positions
|
||||||
self.toolhead.flush_step_generation()
|
self.toolhead.flush_step_generation()
|
||||||
self.end_mcu_pos = [(s, name, spos, s.get_mcu_position())
|
self.end_mcu_pos = [(s, name, spos, s.get_mcu_position())
|
||||||
|
|
|
@ -136,6 +136,7 @@ class MCU_endstop:
|
||||||
self._home_cmd = self._query_cmd = None
|
self._home_cmd = self._query_cmd = None
|
||||||
self._mcu.register_config_callback(self._build_config)
|
self._mcu.register_config_callback(self._build_config)
|
||||||
self._trigger_completion = None
|
self._trigger_completion = None
|
||||||
|
self._rest_ticks = 0
|
||||||
ffi_main, ffi_lib = chelper.get_ffi()
|
ffi_main, ffi_lib = chelper.get_ffi()
|
||||||
self._trdispatch = ffi_main.gc(ffi_lib.trdispatch_alloc(), ffi_lib.free)
|
self._trdispatch = ffi_main.gc(ffi_lib.trdispatch_alloc(), ffi_lib.free)
|
||||||
self._trsync = MCU_trsync(mcu, self._trdispatch)
|
self._trsync = MCU_trsync(mcu, self._trdispatch)
|
||||||
|
@ -169,6 +170,7 @@ class MCU_endstop:
|
||||||
triggered=True):
|
triggered=True):
|
||||||
clock = self._mcu.print_time_to_clock(print_time)
|
clock = self._mcu.print_time_to_clock(print_time)
|
||||||
rest_ticks = self._mcu.print_time_to_clock(print_time+rest_time) - clock
|
rest_ticks = self._mcu.print_time_to_clock(print_time+rest_time) - clock
|
||||||
|
self._rest_ticks = rest_ticks
|
||||||
reactor = self._mcu.get_printer().get_reactor()
|
reactor = self._mcu.get_printer().get_reactor()
|
||||||
self._trigger_completion = reactor.completion()
|
self._trigger_completion = reactor.completion()
|
||||||
etrsync = self._trsync
|
etrsync = self._trsync
|
||||||
|
@ -190,7 +192,15 @@ class MCU_endstop:
|
||||||
ffi_main, ffi_lib = chelper.get_ffi()
|
ffi_main, ffi_lib = chelper.get_ffi()
|
||||||
ffi_lib.trdispatch_stop(self._trdispatch)
|
ffi_lib.trdispatch_stop(self._trdispatch)
|
||||||
res = etrsync.stop()
|
res = etrsync.stop()
|
||||||
return res == etrsync.REASON_ENDSTOP_HIT
|
if res == etrsync.REASON_COMMS_TIMEOUT:
|
||||||
|
return -1.
|
||||||
|
if res != etrsync.REASON_ENDSTOP_HIT:
|
||||||
|
return 0.
|
||||||
|
if self._mcu.is_fileoutput():
|
||||||
|
return home_end_time
|
||||||
|
params = self._query_cmd.send([self._oid])
|
||||||
|
next_clock = self._mcu.clock32_to_clock64(params['next_clock'])
|
||||||
|
return self._mcu.clock_to_print_time(next_clock - self._rest_ticks)
|
||||||
def query_endstop(self, print_time):
|
def query_endstop(self, print_time):
|
||||||
clock = self._mcu.print_time_to_clock(print_time)
|
clock = self._mcu.print_time_to_clock(print_time)
|
||||||
if self._mcu.is_fileoutput():
|
if self._mcu.is_fileoutput():
|
||||||
|
|
Loading…
Reference in New Issue