Ai8h8k64u 外部频率,测量软件显示,输入跳动
本帖最后由 DebugLab 于 2024-11-29 11:51 编辑输入频率5555hz,但是在同时通信加测频率状态下(图3)就会突然跳动
跳动这么厉害,应该是代码需要优化
代码总共没几行,不通信就是正常的。通信就跳动。但是我已经设置过优先级了
xxkj2010 发表于 2024-11-29 10:44
跳动这么厉害,应该是代码需要优化
代码总共没几行,不通信就是正常的。通信就跳动。但是我已经设置过优先级了 提高主频,提高优先级,优化代码,排查代码错误
===1,8H8K64U先跑个40MHz
===2,哪个中断重要,就最高优先级,其他都比他低
补充,有 DMA支持的外设用 DMA来支持
如 串口/SPI/ADC等
通信用DMA收发 电子DIY小家 发表于 2024-11-29 11:06
通信用DMA收发
对,用上 DMA PWM捕获是纯数字测量,如果捕获一个周期就计算频率,则跳动应该是时钟抖动+1个时钟,
使用外部晶振的话,几秒之内的抖动基本在1ppm之内,
就算跑24MHz,一个周期计数值为4320,则捕获抖动为1/4320,
如果捕获N个周期再计算则捕获抖动为1/(4320*N)。
所以楼主的抖动是软件处理的问题,
5555Hz这个频率并不算高,可以轻易实现稳定的捕获计算的。。
可能是多次中断存在累积误差,建议单周期计算,消除累计误差
时钟设置为40.96M,计数器设置为13位,最低频率5000Hz,1/5555/(1/5000)*100=90.0090009%,让计数值尽量大,降低量化误差,此时计数最大值为8191,5555Hz对应的计数值为8191*90.0090009/100=7372.637264,捕获抖动为1/8192
为了使用内部预置频率,可以设置为40M时钟,最低频率为40000000/8192=4882.8125,计数值百分比为1/5555/(1/4883)*100=87.90279028%,5555Hz对应的计数值为1/5555/(1/4883)*8192=7200.99658 估计楼主也用IRC吧?
页:
[1]
2