perf: 提高测量精度和响应速度

- TIM3 分频 DIV_4→DIV_2(中断率×2,CPU仍<3%)
- 去掉 XNSUM_FOR_ORIGIN_FACTOR (>>6),保留全部采样精度
- LPCNT = MEASUREMENT_BASE(131072)/Xn,替代 (32768<<6)/Xn
- 测量窗口 17.5ms→~1ms(快16倍)
- Origin 范围 32K→131K,灵敏度阈值自动按比例缩放
- 离开增加 cnt_release>=3 防抖,防瞬间噪声误落杆
This commit is contained in:
wangfq
2026-06-23 11:02:12 +08:00
parent 95bf13a5ef
commit eff59c9ba9
3 changed files with 43 additions and 30 deletions

View File

@@ -33,10 +33,11 @@
/*===========================================================================
* 频率测量参数
* XNSUM_FOR_ORIGIN_FACTOR: Value/LPCNT 的归一化右移量
* 使 Origin 保持在合理的 uint32 范围内
* MEASUREMENT_BASE: 自适应测量窗口目标值 (≈131072)
* LPCNT = MEASUREMENT_BASE / Xn, 使 Value ≈ MEASUREMENT_BASE
* 121072 = 2^17, 兼顾精度和 Origin 范围
*===========================================================================*/
#define XNSUM_FOR_ORIGIN_FACTOR 6 // >>6
#define MEASUREMENT_BASE 131072 // 2^17
/*===========================================================================
* 灵敏度表 — 对齐 M1H
@@ -81,6 +82,9 @@ extern uint8_t loop1_FLAG_OUT; // 离开延时中
extern uint8_t loop1_FLAG_PLUSE; // 脉冲输出中
extern uint8_t loop1_SensLevel; // 当前灵敏度等级 (0~3)
/* 离开防抖计数器(连续 CAPVD 恢复到阈值以上才释放) */
extern uint8_t loop1_cnt_release; // 离开防抖计数
/*===========================================================================
* 全局状态变量 — 计数器
*===========================================================================*/