Files
vd_960/vd960Loop/docs/devlog.md
wangfq 5a12044c1a fix: vTaskDelay 10→50ms 对齐 DLD154V4B 原始设计, 创建 docs/devlog.md
loop_task_function 主循环周期修正:
- 原值 10ms 是 FreeRTOS 移植时的疏忽
- 改为 50ms 对齐原始 TMR15 5ms×10 设计
- 基线更新: 100×10ms=1s → 100×50ms=5s (Origin 更稳定)
- CPU 占用降低 5×

创建 docs/devlog.md 记录 V2.0~V2.2 全部改动。
2026-06-26 14:30:51 +08:00

53 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# vd960Loop 开发日志
> MCU: AT32F421 (Cortex-M4, 120MHz) | 线圈通道: 4路 | 调试口: TTL Tx (3.3V 9600 8N1)
---
## 2026-06-26 — 多项可配置化改造
### 1. 上报频率从 raw CAPVD 改为实际线圈频率
`uart_report_packet_loop_acs``CMD_DBN_GET_MCJQ_PARAM` 中,频率字段原来直接上报 `loop_CAPVD`IIR 累加值),现改为经过公式转换的实际频率:
```c
freq = (sclk_freq × input_div × LPCNT) / CAPVD
```
使用 `uint64_t` 先乘后除避免整数截断,`LPCNT>0 && CAPVD>0` 防除零。
### 2. 有限存在时长可配置 (hold_time)
- `Loop154_Unit` 新增 `uint16_t hold_time` 字段
- `storage.c``exist_mode` 计算: `hold_time = exist_mode × 20 × 5`tick 数,每 tick 50ms
- `vd1_task_per_channel` 判定有车时: 若 `hold_time > 0``loop_VD_HOLD = 1`,启用有限存在计时
- `TMR15_GLOBAL_IRQHandler`: `Hold_CNT > unit->hold_time` 替代固定 `HOLD_TIME`
- 超时后执行通道完整重启(`LC_Reset=1, loop_INI_LOOP=1`),相当于线圈重启重建基线,避免继电器释放后立即重新吸合
- `exist_mode=0` 时不启用有限存在,兼容无限制存在场景
### 3. 离开延时可配置 (relay_delay)
- `Loop154_Unit` 新增 `uint16_t relay_delay` 字段
- `storage.c``delay_time` 计算: `relay_delay = delay_time × 2`tick 数)
- `TMR15_GLOBAL_IRQHandler`: `OUTCNT > unit->relay_delay` 替代固定 `OUT_DELAY`
### 4. vTaskDelay 修正: 10ms → 50ms
`loop_task_function` 的主循环 `vTaskDelay``10ms` 改为 `50ms`,对齐 DLD154V4B 原始设计TMR15 5ms×10
**影响:**
- 基线更新周期: 100×10ms=1s → 100×50ms=5s对齐原始设计Origin 更稳定)
- CPU 占用: 主循环轮询频率降低 5×节省 CPU
**原因:** TMR3 ISR ~1ms 产出一个 CAP_OK 样本50ms 内有 ~50 个样本。`vd1_task_per_channel` 每个 tick 只取最新一个做 IIR10ms 轮询时 CAP_OK 总是 ready改为 50ms 不影响有效测量速率——采集由 TMR3 ISR 硬件驱动,基线更新速率受 `vd1_task` tick 限制。
---
## 修订记录
| 版本 | 时间 | 说明 |
|------|------|------|
| V2.2 | 2026-06-26 | vTaskDelay 10→50ms 对齐原始设计 |
| V2.1 | 2026-06-26 | hold_time/relay_delay 可配置,有限存在完整重启 |
| V2.0 | 2026-06-26 | 频率上报 CAPVD→实际频率转换 |