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:
@@ -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; // 离开防抖计数
|
||||
|
||||
/*===========================================================================
|
||||
* 全局状态变量 — 计数器
|
||||
*===========================================================================*/
|
||||
|
||||
Reference in New Issue
Block a user