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