Arduino Uno 的定時器


如前所述,Arduino Uno 有三個定時器: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** 這樣的庫,則無需擔心這些計算。您只需要指定間隔,庫將處理其他所有事情。

更新於:2021年3月24日

9K+ 瀏覽量

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.