feat(V4B): V4.36.4 — 绿灯=RLY1 继电器实际输出状态指示

现场误判根因: 断开时 poll_green_led 强制绿灯灭, 而 V4.36.3 保持
逻辑下继电器仍吸合 → 灯/继电器脱节 → 误判继电器释放
改动: 稳定后绿灯镜像 RLY1_GPIO->odt (吸合亮/释放灭), 删断开
强制灭分支 → 有车断开保持期绿灯亮(与继电器一致); 自检期慢闪不变
语法0 error, 4测试全绿; spec V2.20 / manual 灯表 / devlog V2.38
This commit is contained in:
wangfq
2026-09-04 09:43:42 +08:00
parent 1efa9ad775
commit 55ac432c69
5 changed files with 60 additions and 20 deletions
+15 -15
View File
@@ -274,9 +274,13 @@ void LEDA_ON_OFF(void)
*
* 模式:
* 自检/稳定中 (loop1_INI_LOOP || 线圈未连 || !g_loop_stable):
* → 慢闪 (200ms 亮 / 200ms 灭)
* 正常工作:
* → 有车亮 (VD_FLAG==1), 无车灭
* → 慢闪 (200ms 亮 / 200ms 灭) — 就绪过程指示, 此阶段继电器未驱动
* 稳定后 (V4.36.4):
* → 绿灯 = RLY1 继电器实际输出状态 (镜像 PA6 odt):
* 吸合(PA6 高) → 绿灯亮; 释放(PA6 低) → 绿灯灭
* - 有车/离开延时(存在模式) → 亮; 脉冲输出中 → 短亮
* - 有车断开保持(RELAY_HOLD_MS)期间 → 保持亮 (与继电器一致)
* - 断开超时释放/无车 → 灭
*===========================================================================*/
void poll_green_led(void)
{
@@ -284,14 +288,7 @@ void poll_green_led(void)
static uint16_t _slow_tick = 0;
/*--- 线圈断开中 → 灭(黄灯快闪负责故障指示 ---*/
if (g_disconnect_active) {
LEDA_OFF;
_slow_tick = 0;
return;
}
/*--- 自检阶段:慢闪 ---*/
/*--- 自检阶段:慢闪(就绪过程指示;此阶段继电器未驱动 ---*/
if (loop1_INI_LOOP || !g_loop_power_up_state || !g_loop_stable) {
_slow_tick++;
if (_slow_tick >= GREEN_SLOW_HALF) {
@@ -301,12 +298,15 @@ void poll_green_led(void)
return;
}
/*--- 正常工作:车辆存在指示 ---*/
/*--- 稳定后: 绿灯 = RLY1 继电器实际输出状态 (V4.36.4) ---
* 读 RLY1_GPIO->odt (与 RLY1_ON/OFF 宏同源, 即真实驱动状态):
* 吸合(高) → 绿灯亮; 释放(低) → 绿灯灭
* 断开时无强制灭分支 → 与继电器保持逻辑一致 (防误判"继电器释放") */
_slow_tick = 0;
if (loop1_VD_FLAG)
LEDA_ON;
if (RLY1_GPIO->odt & RLY1_PIN)
LEDA_ON; // 继电器吸合 → 绿灯亮 (PA9 低电平点亮)
else
LEDA_OFF;
LEDA_OFF; // 继电器释放 → 绿灯灭
}
/*===========================================================================