trigger_analog: Don't report trigger time as the peak time
Some checks failed
Build test / build (push) Waiting to run
klipper3d deploy / deploy (push) Has been cancelled

There are some rare corner cases where reporting the peak time could
cause hard to debug issues (for example, the peak time could
theoretically be a significant time prior to the actual trigger time,
which could possibly cause unexpected clock rollover issues).  Now
that the host code does not utilize the peak time for "tap" detection,
it can be removed from the mcu code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2026-01-29 14:53:11 -05:00 committed by KevinOConnor
parent 0795fb0141
commit 1fe9fb3ad4
2 changed files with 5 additions and 8 deletions

View file

@ -277,7 +277,7 @@ class MCU_trigger_analog:
# Lookup commands
self._query_state_cmd = self._mcu.lookup_query_command(
"trigger_analog_query_state oid=%c",
"trigger_analog_state oid=%c homing=%c trigger_clock=%u",
"trigger_analog_state oid=%c homing=%c homing_clock=%u",
oid=self._oid, cq=cmd_queue)
self._set_raw_range_cmd = self._mcu.lookup_command(
"trigger_analog_set_raw_range oid=%c raw_min=%i raw_max=%i",
@ -334,7 +334,7 @@ class MCU_trigger_analog:
def _clear_home(self):
self._home_cmd.send([self._oid, 0, 0, 0, 0, 0, 0, 0])
params = self._query_state_cmd.send([self._oid])
trigger_ticks = self._mcu.clock32_to_clock64(params['trigger_clock'])
trigger_ticks = self._mcu.clock32_to_clock64(params['homing_clock'])
return self._mcu.clock_to_print_time(trigger_ticks)
def get_steppers(self):

View file

@ -23,7 +23,6 @@ struct trigger_analog {
struct sos_filter *sf;
// Trigger value checking
int32_t trigger_value, trigger_peak;
uint32_t trigger_clock;
uint8_t trigger_type;
// Trsync triggering
uint8_t flags, trigger_reason, error_reason;
@ -91,14 +90,11 @@ check_trigger(struct trigger_analog *ta, uint32_t time, int32_t value)
{
switch (ta->trigger_type) {
case TT_ABS_GE:
ta->trigger_clock = time;
return abs(value) >= ta->trigger_value;
case TT_GT:
ta->trigger_clock = time;
return value > ta->trigger_value;
case TT_DIFF_PEAK_GT:
if (value > ta->trigger_peak) {
ta->trigger_clock = time;
ta->trigger_peak = value;
return 0;
}
@ -173,6 +169,7 @@ trigger_analog_update(struct trigger_analog *ta, int32_t sample)
if (ret) {
trsync_do_trigger(ta->ts, ta->trigger_reason);
flags = 0;
ta->homing_clock = time;
}
ta->flags = flags;
@ -250,8 +247,8 @@ command_trigger_analog_query_state(uint32_t *args)
{
uint8_t oid = args[0];
struct trigger_analog *ta = trigger_analog_oid_lookup(args[0]);
sendf("trigger_analog_state oid=%c homing=%c trigger_clock=%u"
, oid, !!(ta->flags & TA_CAN_TRIGGER), ta->trigger_clock);
sendf("trigger_analog_state oid=%c homing=%c homing_clock=%u"
, oid, !!(ta->flags & TA_CAN_TRIGGER), ta->homing_clock);
}
DECL_COMMAND(command_trigger_analog_query_state
, "trigger_analog_query_state oid=%c");