中级会员
 
- 积分
- 401
- 金钱
- 401
- 注册时间
- 2024-8-27
- 在线时间
- 48 小时
|

楼主 |
发表于 2025-12-19 16:38:26
|
显示全部楼层
大佬我现在是这样做的:
1:定时器定时156.25us开启一次ADC转换,每个周期采样128次
2:使用ADC中断的方式(ADC中断里面执行的程序有:每次中断读取一次ADC转换值,然后计算为ADC检测点电压值(FLOAT),然后累加平方和,累加到128次后求平均值,再求平方根得到均方根电压值,累加求和,达到10次后求平均,再求最终的电压有效值。(后面的求有效值及最终电压值的函数也有放在主函数执行过,效果不好)
3:显示函数(状态机)放在定时器中断里面执行,其他的按键检测(状态机),EEPROM参数读取/保存函数(也比较费时),状态刷新函数等都放在主函数里面执行。
4:测试后结果:ADC检测值不准,定时器定时太短,大量占用系统时间,别的函数执行不了,比如按键没有效果。也调整过中断优先级,都不行。
5:后来再次不断调整定时时间,比如再次改为20-30MS的定时,依量采用ADC中断方式+定时器中断显示,并且不断调整采样次数,但是检测到的ADC有效电压值都不行,要么不准确,要么不稳定,眼睛都快肿了,难搞,怎么做才能稳定 |
|