嵌入式系統
計時器/計數器(Timer / Counter)
計時器是 MCU 內一個小小的硬體計數器,每來一個時脈脈衝就自動往上加一,讓 CPU 不必親自數時間。把它想成一個內建累計器的節拍器:它會自己穩定地滴答,而你可以叫它在計數到你設定的數字時敲一下鈴(觸發中斷)。因為它在晶片裡與你的程式平行運作,你就能精準計時、量測某事件持續多久,或產生穩定的波形,同時讓處理器去忙別的事、甚至進入睡眠。
當你餵給它的是外部脈衝、而非系統時脈時,同一個區塊就稱為「計數器」——數齒輪齒從感測器前飛過幾次、輪子轉幾圈、或投了幾枚硬幣。前置除頻器(prescaler)會先把時脈分頻(例如 16 MHz ÷ 64),讓一個計時器能涵蓋微秒到秒。靠這一個周邊,你就能得到 RTOS 的心跳節拍、PWM 的時基(拿計數值與門檻比較來設定工作週期)、輸入捕捉(在腳位變化時鎖住當下的計數值,用來量脈寬或頻率),以及在系統當機時重啟的看門狗計時器。它可說是整個嵌入式設計中最常被用到的周邊。
凡是要精準、或必須在其他事情同時進行時仍運作的計時,千萬別用軟體延遲迴圈(delay(500))——迴圈會霸佔 CPU,且會隨時脈速度漂移。硬體計時器能獨立計時,同時讓處理器去做正事。
又称
另见