我有一个简单的问题,显然我从未在网上说过:我知道Arduino上的millis()在自定义中断期间不会改变,但是相关的计时器仍在计数中背景?
我的程序是时间敏感的,我想知道每次处理一个中断时是否应该增加它的值(如何?),这样主程序的时钟就不会漂移。
提前致谢, 问候, Mystère先生
答案 0 :(得分:5)
即使禁用了中断,CPU内部定时器也会计数。 BUT 当定时器溢出时会产生一个中断,这会增加库中的某个计数器。如果这个中断被长时间阻止了......那么你就会有一个漂移。
答案 1 :(得分:4)
CPU计时器是硬件,不受任何中断标志的影响。一旦溢出溢出位置位/触发中断。如果此时中断被阻止,则该中断将排队。队列大小为1,即在下一个中断被触发之前必须允许中断。由于定时器每毫秒大约溢出一次,因此您需要确保永远不会阻止中断超过1毫秒。
无论如何,你会有一个漂移,因为Arduino的时钟根本不精确。在crystal deviations.
上查看我的实验