你不会惊讶地发现计时器对于涉及的东西非常有用时间.它们可以产生一个规则的、一致的信号,不像计时器,更像节拍器,只是速度快得多。它们的信号不是每分钟跳动一次,而是以赫兹为单位,在赫兹时通常以兆赫为单位。
那么这个含义究竟是什么意思,以及计时器的应用程序有益于?

就个人而言,我对步进电机游戏后,我对计时器中断感兴趣。在我的Pmod步教程在美国,我使用一种称为“敲打位”的技术来控制每个步骤之间的时间。通过位敲打,输出信号在微控制器代码的主回路中处理。在特别懒惰的版本中(比如我的版本),会使用一个延迟函数来暂停代码,直到经过一定量的计时器。
这不是两个原因的最佳技术。如果您在使用其他代码混合信号生成时不小心,则可能会意外地写入需要太长的代码来执行,导致您的信号挂起。要演示这一点,我已经写了以下代码。这可能是我可以提出的比特击中最糟糕的例子!
void loop() {digitalWrite(PIN_LED1, HIGH);延迟(1000);digitalWrite (PIN_LED1、低);延迟(1000);// Step 1 digitalWrite(coil4, LOW);digitalWrite (coil1、高);延迟(10);//给电机移动时间// Step 2 digitalWrite(coil1, LOW);digitalWrite (coil2、高);延迟(10); // Give the motor time to move // Step 3 digitalWrite(coil2, LOW); digitalWrite(coil3, HIGH); delay(10); // Give the motor time to move // Step 4 digitalWrite(coil3, LOW); digitalWrite(coil4, HIGH); delay(10); // Give the motor time to move }
(这只是loop()段)
如果这句话让你畏缩,那只能说明你是一个理智的人。这是它的动图:

注意到电机只有在LED不闪烁的情况下才能移动吗?那是因为"打人"一次只能做一件事。对于微控制器来说,这并不好。这时候就需要计时器了!
在底部,我已经包含了一个示例的文本,该示例使用计时器中断来控制步进,而不是敲打位。这是它的动图:

正如您所看到的,现在电机可以自由旋转,而不管loop()段正在做什么!计时器中断,就像其他中断一样,允许我们打破常规代码,处理重要的副函数,但计时器也允许我们非常精确。
看看本教程由Shaz在ChipKIT网站上发表。她将向您展示delay()函数的计时是多么不准确!它的工作原理是使用计时器来测量延迟函数真正持续了多长时间,这些计数可能会有很大的变化!
我使用这段代码作为我的基础计时器中断教学表教程.在本文中,我将更深入地探讨计时器是什么以及它们是如何工作的,并解释用于控制这些计时器的代码的每个步骤。如果您对在下一个问题中添加计时器感兴趣,您应该查看它!

你会使用计时器做什么?
