feat(V4B): V4.36.25 — 电感量三分语义: 合理窗 18~125k + 出窗一长一短 + 低于下限快闪
用户设计拍板: 纠正 V4.36.22/23 把合理窗上限随下限推到 153/156 的偏差 - COIL_F_OK_MAX_KHZ 156→125 (恢复合理窗 18~125kHz=V4.36.9 口径, >125k=38µH 偏小) - 新增 COIL_L_MIN_F_KHZ=156 (=COIL_L_MIN_UH 24µH, 43nF f@24µH=156.7k) - coil_monitor want 三分: f<18k→1; f>156k→2(快闪断开级); 125k<f≤156k→1(一长一短) 打印 too_large/too_small/below_l_min - coil_monitor_recover 判据 18~156 (解除强制; 125~156 转原路径一长一短) - test: 126→1 / 156→1 / 157→2; 全绿 语法0 error; spec V2.42 / manual / devlog V2.61
This commit is contained in:
+11
-7
@@ -15,7 +15,8 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#define COIL_F_OK_MIN_KHZ 18
|
||||
#define COIL_F_OK_MAX_KHZ 156
|
||||
#define COIL_F_OK_MAX_KHZ 125
|
||||
#define COIL_L_MIN_F_KHZ 156
|
||||
#define COIL_FAULT_HOLD_TICKS 500
|
||||
#define COIL_DEF_C_NF 66
|
||||
|
||||
@@ -29,8 +30,10 @@ static void coil_step(uint32_t f_khz)
|
||||
|
||||
if (f_khz < COIL_F_OK_MIN_KHZ)
|
||||
want = 1;
|
||||
else if (f_khz > COIL_F_OK_MAX_KHZ)
|
||||
else if (f_khz > COIL_L_MIN_F_KHZ)
|
||||
want = 2;
|
||||
else if (f_khz > COIL_F_OK_MAX_KHZ)
|
||||
want = 1;
|
||||
|
||||
if (want == g_coil_fault) {
|
||||
g_coil_bad_cnt = 0;
|
||||
@@ -90,10 +93,11 @@ static void test_boundaries(void)
|
||||
run_ticks(17, 500); assert(g_coil_fault == 1); /* 17 → 偏大 */
|
||||
run_ticks(62, 500); assert(g_coil_fault == 0); /* 62 正常(恢复) */
|
||||
run_ticks(18, 500); assert(g_coil_fault == 0); /* 边界 18 正常 */
|
||||
run_ticks(125, 500); assert(g_coil_fault == 0); /* 中间 125 正常 (窗内) */
|
||||
run_ticks(156, 500); assert(g_coil_fault == 0); /* 边界 156 (=L 24.21µH) 正常 */
|
||||
run_ticks(157, 500); assert(g_coil_fault == 2); /* 157 → L<24µH 偏小(断开级) */
|
||||
printf("4. 边界 17/18/156/157 OK\n");
|
||||
run_ticks(125, 500); assert(g_coil_fault == 0); /* 边界 125 正常(窗内) */
|
||||
run_ticks(126, 500); assert(g_coil_fault == 1); /* 126 → L偏小出窗, 一长一短级 */
|
||||
run_ticks(156, 500); assert(g_coil_fault == 1); /* 156 → 出窗但仍≥24µH, 一长一短级 */
|
||||
run_ticks(157, 500); assert(g_coil_fault == 2); /* 157 → L<24µH 下限, 快闪(断开级) */
|
||||
printf("4. 边界 17/18/125/126/156/157 OK\n");
|
||||
}
|
||||
|
||||
static void test_jitter_no_alarm(void)
|
||||
@@ -114,6 +118,6 @@ int main(void)
|
||||
test_recover();
|
||||
test_boundaries();
|
||||
test_jitter_no_alarm();
|
||||
printf("\nALL PASS (窗口 18~156kHz=L 24µH, 防抖 5s)\n");
|
||||
printf("\nALL PASS (合理窗18~125kHz=L≥38µH; 126~156=一长一短; >156k=L<24µH快闪; 防抖 5s)\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user