fix(DLD154V4B): 修复 WDT_DIV 分频枚举传值 bug — 实际分频 4 导致 410ms 超时不断复位
现场实测 LIMIT=100 (500ms 喂狗) 不断复位重启, 改 50 正常。 根因: wdt_divider_set() 参数是枚举值 (WDT_CLK_DIV_16=0x02), 宏误传 16 (0b10000) -> 3bit 寄存器截断为 0 = WDT_CLK_DIV_4 -> 实际分频 4, 超时 4x4096/40k = 410ms < 500ms 喂狗周期。 修复: WDT_DIV=2 (枚举值) + (wdt_division_type) 显式转换。 隔离测试 mock 升级为 3bit 截断+反推分频, 复现 bug 并断言修复。 vd960Loop 原实现用 WDT_CLK_DIV_64 枚举写法, 无此问题。
This commit is contained in:
@@ -52,7 +52,7 @@
|
||||
* 超时 = WDT_DIV x (WDT_RLD+1) / LSI(约40kHz) 约 1.64s
|
||||
*===========================================================================*/
|
||||
#define WDT_COUNTER_LIMIT 100 // 喂狗周期 500ms (TMR15 5ms x 100)
|
||||
#define WDT_DIV 16 // LSI 分频
|
||||
#define WDT_DIV 2 // IWDT 分频枚举值: 2 = WDT_CLK_DIV_16 (实际分频 16; 勿传 16!)
|
||||
#define WDT_RLD 4095 // 12bit 重装载 -> 超时约 1.64s
|
||||
|
||||
#define WINDOW_ORIGIN 500 // 基线跟踪窗口 (500 × 10ms = 5s)
|
||||
|
||||
Reference in New Issue
Block a user