单片机/MCU论坛
直播中

张丽

7年用户 1461经验值
私信 关注
[问答]

用aduc7026写了简单的timer1中断方波发生程序,为什么频率最高只能达到120+k?

用aduc7026写了简单的timer1中断方波发生程序,发现频率最高只能达到120+k,定时器设的时间再短后频率不上升。附件中是整体的工程文件。
设置的使用系统时钟41.78M,不分频。T1不分频。
理论上中断程序使用了7条语句左右,debug下发现经过了18条左右指令,如果一条指令需要一个机器周期(41.78mps)完成,即不到0.5us的时间。方波最快可以达到1MHz的频率。但经过实验发现最快速度大约在130kHz左右,将T1LD改小后并没有响应的输出。
运算速度与系统时钟相差了约7,8倍。
使用的是7026开发板,外部晶振32k。
请问是硬件配置上设置错误,还是芯片的处理速度达不到这么快?谢谢!

回帖(1)

徐生财

2024-1-12 14:55:02
有几个可能的原因导致你无法达到较高的频率:

1. 计时器的精度限制:ADuC7026的定时器是一个16位的计时器,最大计时值为65535。如果你设置的T1LD值比这个要大,那么计时器的周期将比你预期的要长。
2. 中断处理的延迟:即使中断程序只有几条指令,也需要一些时间来处理中断请求并跳转到中断处理程序。这个延迟会影响到你计算的实际频率。
3. 系统时钟的影响:如果系统时钟的频率不准确或稳定性差,那么计时器的精度也会受到影响。
4. 外部晶振的限制:ADuC7026开发板上的外部晶振频率是32kHz,这限制了计时器的最高精度和频率。

为了提高频率,你可以尝试以下方法:

1. 调整T1LD值:根据你期望的最大频率,计算出合适的T1LD值,使得定时器能够达到期望的频率。
2. 优化中断处理程序:查看你的中断处理程序是否可以进一步优化,减少处理时间。
3. 使用更精确的时钟源:如果你的开发板支持,可以尝试使用一个更准确和稳定的时钟源,如外部晶振或者外部时钟信号。
4. 使用更高性能的器件:如果你的应用需要更高的频率,可能需要考虑使用更高性能的器件,如高速微控制器或FPGA。

另外,还建议你仔细检查硬件配置是否正确,特别是与计时器和时钟相关的设置。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分