如何在AVR MCU上選擇定時器 (Timer)
閱讀本文可以詳細了解 AVR? 微控制器 (MCU) 上不同的定時器周邊,以及如何為您的應用選擇最佳的選項。
探索微控制器定時器的多樣性
定時器是微控制器中常見的周邊,每個定時器都有自己的優(yōu)點和缺點。有些定時器被設(shè)計用作波形產(chǎn)生的一部分,有些則非常適合脈沖計數(shù),而選擇何種定時器取決于在各種情況下的需求和可用的資源。
定時器/計數(shù)器A 型 (TCA)
TCA 是一款針對產(chǎn)生脈寬調(diào)變 (PWM) 優(yōu)化的定時器。它可以在 16 位模式下運行,以獲得高分辨率輸出,也可以在 2x 8 位模式下運行,其中定時器的任何一半皆可獨立運行。 計數(shù)器則持續(xù)運作直到計數(shù)至 TOP 值。在這種情況下,計數(shù)器將重置為BOTTOM值 (零),而雙斜率模式除外。在雙斜率模式下,計數(shù)器不會重置為零,而是向下計數(shù)至零來重置周期。 如下圖 1 所示。
為了產(chǎn)生 PWM,有比較通道檢查計數(shù)器是否符合或超過設(shè)定值。如果條件符合,相關(guān)的輸出就會變高。該定時器還支持雙緩沖,其中寫入計數(shù)器的值將被保留,直到定時器觸發(fā)更新,但會因操作模式而異。借助事件系統(tǒng) (EVSYS),可以實現(xiàn)更進階的控制。例如,事件系統(tǒng)可用于閘控輸入、對事件邊緣進行計數(shù)、控制計數(shù)方向 (向上或向下) 以及在各種條件下重新啟動定時器。
定時器/計數(shù)器B型 (TCB)
TCB 是一款針對計時 (Timing) 和擷取 (Capture) 進行優(yōu)化的 16 位定時器。 TCB 可以在周期中斷模式下運行,中斷在固定間隔發(fā)生。逾時檢查模式類似,只是定時器可以透過 EVSYS 輸入重置。 TCB 也可以作為單次定時器運作。對于較長時間段,RTC/PIT 可能是比 TCB 更好的選擇。
擷取模式是指定時器“擷取”定時器內(nèi)計數(shù)的能力??梢宰龊芎唵蔚倪\用,例如自由運行的定時器上發(fā)生輸入時,擷取兩個上升沿之間的時間長度 (頻率測量) 或脈沖長度 (脈沖寬度測量)。此外,兩個 TCB 可以一起使用來創(chuàng)建真正的 32 位計數(shù)器,以實現(xiàn)高精度測量。
TCB 也可用作 8 位 PWM 產(chǎn)生器,如 TCA 中的單斜率模式。
定時器/計數(shù)器D型 (TCD)
TCD 是一款 12 位定時器,經(jīng)過優(yōu)化,可產(chǎn)生復雜的 PWM 波形,例如半橋和全橋輸出。 TCD內(nèi)部有兩個比較器:CMPA和CMPB。每個比較器都有一個 SET 值和一個 CLR 值。當計數(shù)達到 SET 時,輸出處于作用中狀態(tài)。然后,當達到 CLR 時,輸出將被停止。
TCD 支持四種操作模式:一斜坡、二斜坡、四斜坡和雙斜坡。這些名稱代表計數(shù)器經(jīng)歷的周期數(shù)。四斜坡模式經(jīng)歷四個周期,依序重置 CMPASET、CMPACLR、CMPBSET 和 CMPBCLR。兩個斜坡模式經(jīng)歷兩個周期,依序在 CMPACLR 和 CMPBCLR 上重置。一斜坡模式僅在 CMPBCLR 上重置。最后,雙斜率模式向上計數(shù)到 CMPBCLR,然后向下計數(shù)到零。為了便于觀察目的,下圖的每個斜坡末端都位于相同的位置;但是,當值不相等時,它們會有所不同。此外,未顯示的值(例如:單一斜坡模式下的 CMPASET)仍然有效,但在此期間不發(fā)揮作用。
透過事件系統(tǒng),TCD 還支持輸入遮蔽、數(shù)字濾波和多種故障模式用于清除輸出和/或暫停計數(shù)。 TCD 也可用于輸入擷取。此外,TCD 可與 PLL (鎖相環(huán)) 一起使用,使 TCD 能夠以高于主頻率的頻率運作。
定時器/計數(shù)器E型 (TCE)及波形擴充 (WEX)
TCE 是一款針對計時和 PWM 生成進行優(yōu)化的 16 位上下定時器。 TCE 是一個可逆定時器,這意味著它可以根據(jù)方向在每個輸入上遞增或遞減。當 TCE 到達頂部時,載入的下一個值取決于該點的方向。如果它上升,那么它會滾動到零。相同地,如果此時方向為向下,計數(shù)器將卷動到 TOP,而方向變更為向上會使定時器開始遞增。
為了防止定時器周期中間出現(xiàn)時序干擾,TCE 支持雙緩沖,在比較操作發(fā)生時加載已變更的緩存器值。這允許使用者在定時器運行時進行更改。
TCE 具有多種用于產(chǎn)生波形的操作模式。這些模式與其他定時器的操作模式類似。例如,TCE 支持一般定時器操作,以及單斜率 PWM、雙斜率 PWM 和頻率產(chǎn)生。為了提高 PWM 的輸出分辨率,TCE 具有高分辨率模式,可透過使用高速頻率訊號來提高 PWM 的分辨率。為了充分利用此功能,此訊號的速度應至少比 CPU 速度快 4 倍。 TCE可以利用PLL來產(chǎn)生頻率訊號。
此外,TCE 還與 WEX 整合。 WEX 讓定時器產(chǎn)生互補輸出、插入死區(qū)時間、建立輸出樣式并處理硬件中的故障訊號。
定時器/計數(shù)器F型 (TCF)
TCF 是一款經(jīng)過優(yōu)化的 24 位定時器,其作用類似于數(shù)控振蕩器 (NCO)。 NCO 是一個數(shù)字模塊,主要由累加器、加法器和增量組成。每個頻率周期,都會將設(shè)定的增量加到累計總數(shù)中。當累加器溢位時,余數(shù)將轉(zhuǎn)入累加器,并產(chǎn)生輸出。PLL 可以與 TCF 一起使用 (如果配備的話)。注意:TCF與系統(tǒng)周邊時鐘是異步運行,提高了其靈活性;然而,這會導致讀取定時器計數(shù)時出現(xiàn)延遲。因此,TCF 更適合用于頻率生成,而不是精確計時。
在脈沖頻率模式下,累加器輸出用于設(shè)定輸出,然后在固定數(shù)量 (由使用者設(shè)定) 的頻率周期后,輸出被清除。在固定占空比模式下,累加器輸出訊號切換輸出正反器,產(chǎn)生 50% 的占空比。
實時計數(shù)器 (RTC) 和周期性中斷定時器 (PIT)
RTC 提供兩種計時功能:實時計數(shù)器 (RTC) 和周期性中斷定時器 (PIT)。兩個接口設(shè)備共享相同的頻率源:32.768 kHz 外部晶振,或內(nèi)部超低功耗 32.768 kHz 振蕩器,彼此獨立運作。使用晶體振蕩器時,RTC 可以修正高達 ±127 PPM 的誤差。頻率源可以透過 15 位預分頻器按比例縮小。
RTC 可以在比較匹配和溢位時產(chǎn)生中斷,而PIT 可以在2 的冪次頻率周期 (例如,2/4/8/…/32768) 上產(chǎn)生中斷。需要注意的是,RTC 和 PIT 中斷不一定是同步的 (即同時發(fā)生)。 PIT 應該用于超低功耗應用,因為它是唯一在掉電模式下繼續(xù)發(fā)揮作用的定時器之一,而 RTC 的功耗稍高一些,但支持更長的時間周期。對于 1 Hz 刻度時鐘,RTC Timeout時間可以超過 18 小時。
看門狗定時器 (WDT)
WDT 是一個特殊的定時器,如果不定期清除,它將重置微控制器。它具有多個可選擇的Timeout周期,并透過內(nèi)部 1.024 kHz 振蕩器運行,該振蕩器源自于內(nèi)部超低功耗 32.768 kHz 振蕩器。 WDT 有兩種模式:正常模式和窗口模式。在正常模式下,必須在計數(shù)匹配之前清除 WDT。然而,如果某種錯誤不斷地清除 WDT,則定時器將不會偵測到故障。為了防止這種可能性,可以使用窗口模式。
在窗口模式下,WDT 清除必須在設(shè)定的延遲之后、定時器觸發(fā)之前發(fā)生。如果清除得太早或太晚,將被視為 WDT 違規(guī),并會觸發(fā)微控制器的重置。 WDT 緩存器受到設(shè)定變更保護 (CCP) 功能和控制緩存器鎖定的保護。這使得軟件錯誤很難無意中更改 WDT 設(shè)定。 WDT 可以在所有電源模式下運作。
選擇合適的定時器及了解更多信息
了解定時器周邊后,可以輕松掌握選擇最符合應用所需功能的定時器。在許多情況下,可能有多個的定時器可以執(zhí)行該工作。你直接選擇最簡單的定時器——?讓具有更多功能的定時器可供將來使用。要更詳細地了解所有這些定時器的運作方式以及與其相關(guān)的緩存器可參考AVR MCU網(wǎng)站內(nèi)數(shù)據(jù)手冊、應用筆記和技術(shù)簡介。使用特定定時器的程序代碼范例可以透過搜尋 MPLAB? Discover網(wǎng)頁找到 ( https://mplab-discover.microchip.com)。
本文作者為:Microchip應用工程師經(jīng)理 蔡文杰
評論