Arduino Uno 中的计时器

如前所述,Arduino Uno 有 3 个定时器:Timer0、Timer1 和 Timer2。Timer0 和 Timer2 是 8 位计数器(从 0 到 255 计数),而 Timer1 是一个 16 位计数器(从 0 到 65535 计数)。在内部,Timer0 用于该millis()功能,因此,建议不要乱用它。您可以使用Timer1和Timer2来满足您的自定义要求。

请注意,Arduino Uno 的时钟频率为 16 MHz。因此,没有计时器的间隔可以短于 (1/16000000)。但是,对于大多数应用程序,您需要更长的间隔(更低的频率)。换句话说,您希望计数比最大速率慢。为此,使用了预缩放器。它们将输入时钟频率除以一个因子,然后定时器使用降低的频率进行计数。例如,Timer0 使用 64 的除数。因此,其频率为 (16MHz/64) = 250 KHz。它每 (1/250,000) = 0.000004 秒计数一次。因此,它在 0.000004*255 = 0.00102 秒内从 0 计数到 255,大约为 1 毫秒。现在您可以理解为什么该millis()函数使用 Timer0。 

使用 Timer1 和 Timer2 时,您可以执行类似的计算。但是,只有在手动设置寄存器时才需要执行这些计算。如果您使用的是TimerOne 之类的库,则无需担心这些计算。您需要做的就是指定时间间隔,库会处理其他所有事情。

以上是 Arduino Uno 中的计时器 的全部内容, 来源链接: utcz.com/z/360448.html

回到顶部