fix(wave): bench 定时自抓到期判定无符号回绕恒真修复,第四幕板级闭环入档(#84)
CI / 静态门禁 (pre-commit) (push) Failing after 4m54s
CI / 主机侧单测 (MSVC) (push) Successful in 51s
CI / 静态门禁 (pre-commit) (pull_request) Failing after 4m29s
CI / 主机侧单测 (MSVC) (pull_request) Failing after 41s

F0(唯一代码改动,#if DTU_BENCH 闸内,产品影像零漂移):
adc_task.c 原无符号判据 (uint32_t)(now-next)>=PERIOD 在 next=now+PERIOD
挂出后立刻成立(now<next 差值回绕成巨数),台架实证 1 kHz 连发请求:
ovf 每秒 +1000、段节奏被去重钳到 ~1.5 s/段,违背 ON 行承诺
「1 seg / 2000 ms」。改有符号比较(半程内回绕安全)。修复后实测
seg 恰 +5/10 s;bench Code=255284 vs 产品 254820(差 464 B)证门控。

第四幕三判据板级实证(手册 §6 步骤 3 逐条对上):
- 临界占卷命中唯一 [ERR] seg drop: ring abandoned(idx=36),心跳
  err 恰 +1,段号不推进、同号 5250 B 重写(P1/P2/P3 + sha256 固化);
- 长占卷 72.6 s 静默自弃 err 1→15 零留痕(不是每拍刷屏最严形态);
- 占卷期间 104 STARTDT 实测应答 + UI 主菜单照常(丢录波不丢采集)。

现场发现 F1(单发未复现软件复位,只记不断)/F2(lftpd 放锁早于
DOWNLOAD 落账 ~0.13 s,临界命中方法钥匙)/F3(pack_next 留痕板级
首见,同族分支)入设计说明 §10 闭环记录。

文档销项:设计说明 §5.2 L163 / §10 留痕名清单 / 板级行 / 未跑清单
四处标记闭环 + 新增「bench 定时自抓与占卷弃段观察闭环记录」小节;
到场轮手册 §1 第四幕行标已完成 + §6 收工状态注记。

收工:FILLER/FILL2/FILL3 删净,产品构建 21:32:52 已烧(除 #53 i104
首绑 FAIL 行外 8/9 required 全过、端口 STARTDT 实测活,沿用 11-06
先例定性);UI 主菜单;证据目录 docs/测试说明/测试数据/
wave_bench_20261107/(README 判据对照 + 原始/复原串口摘录 + 各轮
JSON + 启动锚点两跑日志)。
This commit is contained in:
2026-11-07 21:55:06 +08:00
parent 06baf7a531
commit 1df02c4658
20 changed files with 2279 additions and 55 deletions
+6 -2
View File
@@ -585,11 +585,15 @@ void adc_task_func(void *arg) {
s_wave_bench_off = 1u;
DBG_INFO("wave bench autocap STOP after %u s",
(unsigned int)(WAVE_BENCH_MAX_MS / 1000u));
} else if ((uint32_t)(now - s_wave_bench_next) >= WAVE_BENCH_PERIOD_MS) {
} else if ((int32_t)(now - s_wave_bench_next) >= 0) {
/* 到期判定必须用有符号差值:无符号 (now-next)>=PERIOD 在
* next=now+PERIOD 挂出后立刻成立(now<next 时差值回绕成巨数),
* 2026-11-07 台架实证该写法以 1 kHz 连发请求:ovf 每秒 +1000、
* 段节奏被去重钳到 ~1.5 s/段,违背 ON 行承诺的 1 seg / 2000 ms */
s_wave_bench_next = now + WAVE_BENCH_PERIOD_MS;
(void)wave_ring_request((uint8_t)WAVE_TRIG_BENCH, 0u);
} else {
/* 本拍未到周期点:无事可做(比较用无符号差值,回绕安全) */
/* 本拍未到周期点:无事可做(有符号差值,半程内回绕安全) */
}
}
#endif