我正在使用STM8计时器(不是我的代码,但维护它),并在其中使用计时器。显然,时钟设置为16MHz erfo 0.0625uS。定时器的设置是ARRH = 0x03 ARRL = 0x20因此(0x0320 = 800)它重置为800(ergo 50us) PSCR设置为0,因此定时器具有与micro相同的频率。
无论如何,当用示波器检查时,它不能提供良好的读数。 定时器中断在以下位置调用: 56us,54uS,54uS,52uS,52uS,52us,38us(!!!),42us(?),50us,50us ....
好奇地总结它给出500uS所以它算作10倍50uS定时器中断的前8次发生了一些AD转换,因此有可能在它们之间调用AD中断。
1)你认为这会影响计时器的频率吗?
2)为什么它通过在38uS发射中断来“纠正”自身?
我很感激基于您的嵌入式或STM8体验的任何评论,因为我知道需要检查代码的精确答案......
答案 0 :(得分:2)
我不确定你是否还需要答案。我曾经有过相同的搜索并且搜索了很长时间...在我的案例中简单的解决方案:
我有一个高抖动的ADC ISR。这来自我的主循环。在某个子子程序中,ADC中断暂时停用于临界区(中断和主循环上下文之间的数据传输)。效果正是您所描述的:
有时两次中断之间的时间较长,因为中断处于挂起状态并等待执行,直到再次启用中断为止。计时器仍在继续运行。时间示例:
我希望我能提供帮助。