fix(V4B): V4.36.14 — 重连确认窗漏网路径修复 (主循环拍级上升沿)
现场 21µH: 三段重连仅无窗段跳 (无 reconnect/blank 打印直接 Car_In) 根因: 上升沿用 ISR LOOP_OK0(5ms), 断开时主循环 150ms 慢 tick, 插头抖动可致 LOOP_OK0 卡 1 → 恢复漏触发确认窗 → CAPVD 不重置直接判定 → 插回瞬态假有车. 干净断开重连走窗则被抑制(验证 2/3 段无跳) 改动: loop_task while 顶部 g_prev_ok 主循环拍级(10ms)上升沿检测, 任何 0→1 恢复强制进确认窗+blank; 抖动免疫保留; LOOP_OK0 仅供安全复位 语法0 error, 4测试全绿; spec V2.30 / devlog V2.48
This commit is contained in:
@@ -161,6 +161,7 @@ uint16_t g_relay_hold_cnt = 0; // V4.36.3: 有车断开继电器保持
|
||||
uint8_t g_relay_hold_done = 0; // V4.36.3: 本次有车断开已兜底释放(防重复OFF)
|
||||
uint16_t g_reconn_blank_ms = 0; // V4.36.5: 重连起振抑制倒计时(ms, 按Q分档, vd1_task 每样本-10)
|
||||
uint8_t g_entry_need = 3; // V4.36.8: 进入确认样本数 (按Q档, 高3/中4/低5)
|
||||
uint8_t g_prev_ok = 0; // V4.36.14: loop_task 主循环拍级上一拍 LOOP_OK (自身上升沿检测)
|
||||
uint8_t g_release_need = 3; // V4.36.8: 释放确认样本数 (按Q档, 高3/中4/低5)
|
||||
uint8_t g_fault_phase = 0;
|
||||
uint16_t g_fault_tick = 0;
|
||||
@@ -1354,16 +1355,24 @@ void loop_task_function(void *pvParameters)
|
||||
INIT_VD();
|
||||
|
||||
while (1) {
|
||||
/*--- V4.36.14: 主循环拍级 RF 上升沿检测 (不依赖 ISR LOOP_OK0) ---
|
||||
* 原 !LOOP_OK0 依赖 ISR 5ms 拍与主循环 150ms 慢 tick 的竞态:
|
||||
* 插头抖动(断开↔恢复几拍)可使 LOOP_OK0 卡 1 → 恢复时漏触发确认窗
|
||||
* → CAPVD 不重置直接跑判定 → 插回瞬态假"有车"跳输出 (现场 21µH 复现)
|
||||
* 现每 10ms 主循环拍自采样 LOOP_OK: 任何 0→1 恢复都强制进确认窗 */
|
||||
if (loop1_LOOP_OK && !g_prev_ok) {
|
||||
g_prev_ok = 1;
|
||||
g_reconn_candidate = 1;
|
||||
g_reconn_cnt = 0;
|
||||
} else if (!loop1_LOOP_OK) {
|
||||
g_prev_ok = 0;
|
||||
}
|
||||
|
||||
if (loop1_LOOP_OK) {
|
||||
/*--- 线圈重连: V4.36.2 确认窗 (载波连续恢复 ~100ms 才确认重置) ---
|
||||
* RF 上升沿仅进入候选; 期间保持 g_disconnect_active=1 → 黄灯仍快闪,
|
||||
* RF 上升沿(顶部检测)仅进入候选; 期间保持 g_disconnect_active=1 → 黄灯仍快闪,
|
||||
* 断开计数不重复; 抖动(断开↔恢复快速交替)每次掉线取消候选 → 免疫.
|
||||
* 确认后才: 清断开标记 / CAPVD 强制重收敛(首样本此时已干净, 无斜率限幅绕过风险) */
|
||||
if (!loop1_LOOP_OK0) {
|
||||
loop1_LOOP_OK0 = 1;
|
||||
g_reconn_candidate = 1;
|
||||
g_reconn_cnt = 0;
|
||||
}
|
||||
if (g_reconn_candidate) {
|
||||
g_reconn_cnt++;
|
||||
if (g_reconn_cnt >= RECONNECT_CONFIRM_TICKS) {
|
||||
|
||||
Reference in New Issue
Block a user