cdx123 发表于 2024-11-29 10:22:37

Ai8h8k64u 外部频率,测量软件显示,输入跳动

本帖最后由 DebugLab 于 2024-11-29 11:51 编辑






输入频率5555hz,但是在同时通信加测频率状态下(图3)就会突然跳动


xxkj2010 发表于 2024-11-29 10:44:39

跳动这么厉害,应该是代码需要优化

cdx123 发表于 2024-11-29 10:53:27


代码总共没几行,不通信就是正常的。通信就跳动。但是我已经设置过优先级了

cdx123 发表于 2024-11-29 10:54:17

xxkj2010 发表于 2024-11-29 10:44
跳动这么厉害,应该是代码需要优化

代码总共没几行,不通信就是正常的。通信就跳动。但是我已经设置过优先级了

神农鼎 发表于 2024-11-29 11:04:30

提高主频,提高优先级,优化代码,排查代码错误

===1,8H8K64U先跑个40MHz
===2,哪个中断重要,就最高优先级,其他都比他低


补充,有 DMA支持的外设用 DMA来支持

如 串口/SPI/ADC等

电子DIY小家 发表于 2024-11-29 11:06:56

通信用DMA收发

神农鼎 发表于 2024-11-29 11:09:12

电子DIY小家 发表于 2024-11-29 11:06
通信用DMA收发

对,用上 DMA

梁工 发表于 2024-11-29 11:39:05

PWM捕获是纯数字测量,如果捕获一个周期就计算频率,则跳动应该是时钟抖动+1个时钟,
使用外部晶振的话,几秒之内的抖动基本在1ppm之内,
就算跑24MHz,一个周期计数值为4320,则捕获抖动为1/4320,
如果捕获N个周期再计算则捕获抖动为1/(4320*N)。
所以楼主的抖动是软件处理的问题,
5555Hz这个频率并不算高,可以轻易实现稳定的捕获计算的。。

DebugLab 发表于 2024-11-29 12:31:35

可能是多次中断存在累积误差,建议单周期计算,消除累计误差
时钟设置为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

xxkj2010 发表于 2024-11-29 12:54:05

估计楼主也用IRC吧?
页: [1] 2
查看完整版本: Ai8h8k64u 外部频率,测量软件显示,输入跳动