本應(yīng)用筆記介紹如何設(shè)置和使用MAXQ?系列微控制器中的定時器B來生成所需的PWM波形。該操作將要求啟用比較功能。該說明包括供參考的源代碼。
介紹
MAXQ微控制器有三種類型的定時器:定時器0、定時器1和定時器2。定時器B是定時器1的增強版本,經(jīng)過修改以支持不同的輸入時鐘預(yù)縮放和設(shè)置/復(fù)位/比較輸出功能。本應(yīng)用筆記詳細介紹了如何設(shè)置和使用定時器B生成所需波形。包括源代碼示例以供參考。
定時器B寄存器及其使用
MAXQ內(nèi)核通過一組特殊功能寄存器(SFR)配置定時器B:
TBCN—定時器B控制寄存器
TBV — 定時器 B 值寄存器
TBR — 定時器 B 重新加載/捕獲寄存器
待定—定時器B比較寄存器
定時器B控制寄存器:待定
定時器B控制寄存器為16位寬,讀寫不受限制。在所有形式的重置中,它被清除到 0000h。以下是寄存器位配置的簡要說明。
位 0:CP/RLD 位用于設(shè)置定時器 B 的捕獲或重新加載模式。當(dāng)此位設(shè)置為 1 時,計時器 B 處于捕獲模式。當(dāng)此位清除為 0 時,計時器 B 處于重新加載模式。
位 1:ETB 位用于啟用定時器 B 中斷。將此位設(shè)置為 1 將啟用來自計時器 B TFB 和 EXFB 標志的中斷。
位 2:TRB 位用于啟用定時器 B 操作。
位 3:EXENB 位用于啟用負事務(wù)的 TBB 引腳上的捕獲/重新加載功能。在啟用輸出比較功能的情況下,在自動重新加載模式 (CP/RLD = 0) 下工作時(此模式稍后會很重要),啟用 TBB 輸入功能 (EXENB = 1) 將允許比較輸出負轉(zhuǎn)換以設(shè)置 EXFB 標志。但是,由于外部負邊緣檢測,不會發(fā)生重新加載。
位 4:DCEN 位用于啟用定時器 B 的倒計時選項。與TBB引腳配合使用,該位控制定時器B計數(shù)的方向。將此位設(shè)置為 1 會導(dǎo)致定時器 B 在引腳 TBB 為 1 時向上計數(shù),如果引腳 TBB 為 0,則計數(shù)。當(dāng)此位為 0 時,計時器 B 始終計數(shù)。啟用定時器 B 的比較模式功能后,定時器 B 的上/下計數(shù)控制將根據(jù)比較模式設(shè)置在內(nèi)部進行控制。在比較模式下,DCEN 位控制定時器是斜坡上升和復(fù)位 (DCEN = 0),還是上升和下降 (DCEN = 1)。
位5:TBOE位用于使能TBA引腳上的時鐘輸出功能。
位 6:EXFB 位用于標記 TBB 引腳上發(fā)生負事務(wù)的時間。如果 CP/RLD = 0、DCEN = 0 和 TBCS:TBCR = 00b,則每當(dāng)計時器 B 溢出或下溢時,此位也會切換。
位 7:TFB 位用于在計時器 B 溢出或下溢時設(shè)置標志。
第 8-10 位:TBPS2:0用作應(yīng)用于定時器B時鐘的系統(tǒng)時鐘輸入的預(yù)分頻器:
定時器 B 時鐘 = 系統(tǒng)時鐘/(2**(2*TBPS2:0))
TBPS2:0 = 11xb 的值是保留的。
位 11-12:如果 TBCS:TBCR<>00b,則 TBCS:TBCR 位用于在比較模式下配置計時器 B。這些比較模式位定義了幾個條件:TBB引腳上是否使能PWM/比較模式輸出功能;初始輸出起始狀態(tài)是什么;以及比較模式輸出功能是否有效。
位 14-13:保留位
位 15:C/TB 位用于確定定時器 B 是用作定時器還是計數(shù)器。
定時器B值寄存器:TBV
定時器B值寄存器是一個16位寄存器,在所有形式的復(fù)位時被清除到0000h。此寄存器是不受限制的讀/寫,用于加載和讀取 16 位定時器 B 值。
定時器B捕獲/重新加載寄存器:TBR
定時器B捕獲/重新加載寄存器是一個16位寄存器,在所有形式的復(fù)位時都清除到0000h。此寄存器是無限制的讀/寫,用于在定時器B配置為捕獲模式時捕獲TBV值。當(dāng)定時器B配置為自動重裝模式時,此寄存器也用作16位重裝值。
定時器B比較寄存器:待定
定時器B比較寄存器是一個16位寄存器,在所有復(fù)位形式時都清除到0000h。此寄存器是不受限制的讀/寫,用于在定時器B在比較模式下運行時將TBC與TBV值進行比較。
定時器B的操作模式
定時器B可通過在定時器B控制寄存器中設(shè)置CP/RLD位配置為捕獲或重新加載模式。TBCS:TBCR<>00b 的值會將定時器 B 設(shè)置為比較模式。沒有必要同時配置定時器B捕獲模式(CP/RLD=1)和PWM比較輸出模式,但是,這不是預(yù)期的定時器B操作模式。定時器B也可以配置為比較模式,其中有三種不同的比較功能:復(fù)位,設(shè)置和切換。
以下部分回顧了在這些不同操作模式下配置計時器 B 的方法。
拍攝模式
定時器B控制寄存器的位0 CP/RLD確定定時器B是使用捕獲模式還是重新加載模式。如果控制寄存器的位1 EXENB為3,則將此位設(shè)置為1會導(dǎo)致在TBB定時器引腳上檢測到下降沿時發(fā)生定時器B捕獲。將位 3 EXENB 設(shè)置為 0 會導(dǎo)致定時器 B 忽略 TBB 引腳上的所有外部事件。捕獲的值將加載到重新加載寄存器 TBR 中。
重新加載模式
如果 EXENB 為 0,則清除 CP/RLD 位為 1 會導(dǎo)致在定時器 B 溢出或在 TBB 上檢測到下降沿時發(fā)生自動重新加載。如果啟用了比較功能,則可以通過更改重載(TBR)和比較(TBC)寄存器中的值來修改輸出波形的頻率和占空比。這樣,MAXQ處理器就可以產(chǎn)生脈寬調(diào)制(PWM)波形。
比較模式
僅當(dāng)比較模式位的值不同于 0 時,并且建議計時器 B 處于重新加載模式時,才會啟用比較模式。PWM輸出可以有選擇地使能,起始極性可以反轉(zhuǎn),具體取決于這些位的值。頻率和占空比的限制由選擇作為源的時鐘(即系統(tǒng)或備用時鐘)的頻率和所選的時鐘除數(shù)決定。如上所述,有三種比較模式(SET、RESET和TOGGLE),具有TBB引腳的預(yù)定義初始狀態(tài)。
當(dāng) CP/RLD = 0(重新加載模式)和 TBCS:TBCR 的值分別為 01 時,選擇比較復(fù)位模式。在此模式下,TBB 將在 TBC 匹配時重置并設(shè)置為 0000h。根據(jù)TBR和TBC寄存器之間的相對值以及上/下計數(shù),定時器將生成不同的PWM波形。如果計時器 B 未實現(xiàn) TBC,則它只會設(shè)置為 0000h。在這種模式下,TBB引腳的初始值為低電平。
當(dāng) CP/RLD = 0(重載模式)和 TBCS:TBCR 的值分別為 10 時,選擇比較 SET 模式。在此模式下,TBB 將設(shè)置在 TBC 匹配并設(shè)置為 TBR。根據(jù)TBR和TBC寄存器之間的相對值以及上/下計數(shù),定時器將生成不同的PWM波形。如果計時器 B 未實現(xiàn) TBC,則它只會在 TBR 上重置。在這種模式下,TBB引腳的初始值為高電平。
當(dāng) CP/RLD = 0(重新加載模式)和 TBCS:TBCR 的值分別為 11 時,選擇比較切換模式。在此模式下,TBB 將打開 TBC 匹配(TBR 或 0000h 除外)。根據(jù)TBR和TBC寄存器之間的相對值以及上/下計數(shù),定時器將生成不同的PWM波形。如果計時器 B 未實現(xiàn) TBC,則它只會打開 TBR 匹配。在這種模式下,TBB引腳的初始值保持不變。
切換模式的初始狀態(tài)取決于之前的 SET 或 RESET 模式。這意味著要建立特定的啟動狀態(tài),TBCS:TBCR 位應(yīng)在從比較禁用更改為比較切換模式時暫時配置為設(shè)置或重置。
如上所述,我們對這種用于在定時器B的TBB引腳上產(chǎn)生PWM的比較模式特別感興趣。PWM波形在很大程度上取決于TBR和TBC之間的相對值(有或沒有TBC寄存器)以及DCEN位的值(表1)。
比較模式下定時器B的PWM波形
不帶待定寄存器的定時器 B
對于 SET 和 RESET 模式,TBC 比較匹配可能導(dǎo)致的引腳設(shè)置/復(fù)位永遠不會發(fā)生。用戶只能定義在啟用定時器時生效的起始引腳狀態(tài)。仍然會發(fā)生相應(yīng) RESET 和 SET 模式的引腳設(shè)置或清除操作。對于切換模式,TBR 將用于產(chǎn)生 50% 占空比 PWM。請參閱表 1 和圖 1。
待定:TBCR | 功能 | 初始狀態(tài)(如果 TBR = 0) |
00 | 無(比較禁用) | 無變化 |
01(重置) | 設(shè)定在 0000h | 低 |
10 (套) | 在TBR匹配時重置 | 高 |
11(切換) | 打開 TBR 匹配 | 無變化 |
圖1.
設(shè)置或清除TBB引腳,分別定時為TBR+1和TBR,用于復(fù)位和設(shè)置操作。
在周期 50*TBR + 2 處為切換模式生成 2% 占空比。
示例 1:自定時器開啟后 1 秒后設(shè)置 TBB 引腳(使用 RESET 比較模式)。
定時器B的頻率:根據(jù)12MHz系統(tǒng)時鐘計算定時器B頻率。
使用DCEN = 0的復(fù)位比較模式來設(shè)置TBB引腳。
使用以下公式計算TBR的值以延遲1秒:
示例代碼:
move TB2CN,#000H ; Reset Timer B move TB2CN,#0C00H ; Timer B clock = system clock/256 ; and in compare RESET mode move TB2R, #46874 ; Set reload value of Timer 2 TBR = 46874 move TB2V, #0001H ; Reset TBV=0x01 just to avoid set ; operation on 0000h move TB2CN.2,#1 ; Start Timer B to generate PWM
示例 2:生成一個 1MHz 波形,占空比為 50%,低電平(使用切換比較模式)。(請參閱圖 2。
定時器B的頻率:根據(jù)12MHz系統(tǒng)時鐘計算定時器B頻率。
使用DCEN = 0的切換比較模式來設(shè)置TBB引腳。
使用以下公式計算所需PWM頻率為1MHz的TBR值:
示例代碼:
move TB3CN,#000H ; Reset Timer B move TB3CN,#0800H ; Configure Timer B clock in RESET ; Compare mode to start LOW move TB3CN,#1800H ; Timer B clock = system clock ; and in compare TOGGLE mode with DCEN =0 move TB3R, #5 ; Set reload value of Timer 3 TB3R = 5 move TB3V, #000H ; Reset TBV=0x00 move TB3CN.2,#1 ; Start Timer B to generate PWM
圖2.
設(shè)置或清除TBB引腳,定時分別為2 × TBR和TBR,用于復(fù)位和設(shè)置操作。
在周期 50 TBR ×為 TOGGLE 模式生成 4% 占空比。
示例3:在1μs延遲后復(fù)位TBB引腳(使用SET比較模式)。
定時器B的頻率:根據(jù)12MHz系統(tǒng)時鐘計算定時器B頻率。
使用DCEN = 1的設(shè)置比較模式來設(shè)置TBB引腳。
使用以下公式計算TBR的值以延遲1μs:
示例代碼:
move TB3CN,#000H ; Reset Timer B move TB3CN,#1010H ; Timer B clock = system clock ; and in compare SET mode with DCEN = 1 move TB3R, #12 ; Set reload value of Timer 3 TB3R = 12 move TB3V, #000H ; Reset TBV = 0x00 move TB3CN.2,#1 ; Start Timer B to generate PWM
示例 4:生成一個 1MHz 波形,占空比為 50%,高電平(使用切換比較模式)。
定時器B的頻率:根據(jù)12MHz系統(tǒng)時鐘計算定時器B頻率。
使用DCEN = 1的切換比較模式來設(shè)置TBB引腳。
使用以下公式計算所需PWM頻率為1Mhz的TBR值:
示例代碼:
move TB2CN,#000H ; Reset Timer B move TB2CN,#01000H ; Configure Timer B clock in SET ; Compare mode to start HIGH move TB2CN,#1810H ; Timer B clock = system clock ; and in compare TOGGLE mode with DCEN=1 move TB2R, #3 ; Set reload value of Timer 2 TB2R = 3 move TB2V, #000H ; Reset TBV = 0x00 move TB2CN.2,#1 ; Start Timer B to generate PWM
帶待定寄存器的定時器 B
當(dāng)TBC寄存器在計數(shù)范圍(TBC< TBR)內(nèi)時,SET和RESET比較功能通過使用TBR重載值來改變頻率,基本上提供了相同的功能。切換比較模式允許 50% 占空比 PWM 波形。當(dāng)TBC寄存器超出范圍(TBC> TBR)或在TBC = TBR和TBC = 0的特殊情況下,SET和RESET功能允許定時器清除或設(shè)置TBB引腳。請參閱表 2 和圖 3。
待定:TBCR | 功能 | 初始狀態(tài)(如果 TBR = 0) |
00 | 無(比較禁用) | 無變化 |
01(重置) | 在待定匹配時重置,設(shè)置為 0000h | 低 |
10 (套) | 在待定匹配時設(shè)置,在TBR匹配時重置 | 高 |
11(切換) | 打開待定匹配(TBR 或 0 除外) | 無變化 |
圖3.
TBC > TBR:設(shè)置或清除相應(yīng)復(fù)位和設(shè)置模式的 TBB 引腳。切換模式已禁用。
TBC = TBR 或 TBC = 0:請參閱注釋1,2和3在下面的示例 8 之后。
TBR <待定:PWM 產(chǎn)生的占空比和周期如下所示:
設(shè)置模式 = (TBR - 待定)/(TBR + 1),周期為 TBR + 1
復(fù)位模式 = 待定/(TBR + 1),周期為 TBR + 1
切換模式 = 50%,周期為 2 × TBR + 2
示例 5:生成一個 32kHz 波形,占空比為 50%,從高電平開始(使用 SET 比較模式)。
定時器B的頻率:這與12MHz系統(tǒng)時鐘相同。
使用 DCEN = 0 的 SET 比較模式生成此波形。
使用以下公式計算所需PWM頻率為32kHz的TBR和TBC值:
占空比 = (TBR - TBC)/(TBR + 1) = 50% => TBC = 186
示例代碼:
move TB0CN,#1000H ; Configure Timer B clock as same as ; system clock and in compare SET mode move TB0C, #00186 ; set compare value of Timer 0 TBC = 186 move TB0R, #00372 ; Set reload value of Timer 0 TBR=372 move TB0V, #0000H ; Reset TBV=0x00 move TB0CN.2,#1 ; Start Timer B to generate PWM
示例 6:生成 512Hz 波形,占空比為 50%,起始為低電平(使用切換模式)。(請參閱圖 4。
定時器B的頻率:這與12MHz系統(tǒng)時鐘相同。
使用DCEN = 0的切換比較模式生成此波形。
使用以下公式計算PWM頻率為512Hz的TBR和TBC的值:
占空比 = 50%,不受待定 < 11717 的影響
示例代碼:
move TB1CN,#0800H ; Configure Timer B clock in RESET ; Compare mode to start LOW move TB1CN,#1800H ; Configure Timer B clock as same as ; system clock and in compare TOGGLE mode move TB1C, #005000 ; Set compare value of Timer 1 TBC = 5000 move TB1R, #011717 ; Set reload value of Timer 1 TBR = 11717 move TB1V, #0000H ; Reset TBV=0x00 move TB1CN.2,#1 ; Start Timer B to generate PWM
圖4.
TBC > TBR:設(shè)置或清除相應(yīng)復(fù)位和設(shè)置模式的 TBB 引腳。切換模式已禁用。
TBC = TBR 或 TBC = 0:請參閱注釋1,2和3在實施例8之后。
TBC < TBR:PWM 的周期為 2 × TBR,占空比定義如下:
設(shè)置模式 = (TBR - 待定)/(2 × TBR)
復(fù)位模式 = 待定/(2 × TBR)
切換模式 = 待定/TBR(高啟動)或(TBR - 待定)/TBR(低啟動)4
示例7:生成一個32kHz波形,占空比為30%,從低電平開始(使用復(fù)位比較模式)。
定時器B的頻率:3MHz或系統(tǒng)時鐘/4。
使用DCEN = 1的RESET比較模式生成此波形。
使用以下公式計算PWM波形的頻率:
占空比 = 待定/(2 × TBR) = 30% => 待定 = 29
示例代碼:
move TB0CN,#0910H ; Configure Timer B clock in system ; clock/4, in compare RESET mode, and ; DCEN = 1 move TB0C, #00029 ; Set compare value of Timer 0 TBC = 29 move TB0R, #00049 ; Set reload value of Timer 0 TBR = 49 move TB0V, #0000H ; Reset TBV = 0x00 move TB0CN.2,#1 ; Start Timer B to generate PWM
示例 8:生成 512Hz 波形,占空比為 40%,從高電平開始(使用切換模式)。
定時器B的頻率:這與12MHz系統(tǒng)時鐘相同
使用DCEN = 1的切換比較模式生成此波形。
使用以下公式計算PWM頻率為512Hz的TBR和TBC的值:
占空比 = 40% 或 TBC/TBR = 0.4 => TBC = 4687
示例代碼:
move TB1CN,#01000H ; Configure Timer B clock in SET ; compare mode to start HIGH move TB1CN,#1810H ; Configure Timer B clock as same as ; system clock in compare TOGGLE mode ; and DCEN = 1 move TB1C, #004687 ; Set compare value of Timer 1 TBC = 4687 move TB1R, #011718 ; Set reload value of Timer 1 TBR=11718 move TB1V, #0000H ; Reset TBV = 0x00 move TB1CN.2,#1 ; Start Timer B to generate PWM
筆記:
1當(dāng)輸出比較功能配置為 SET 模式時,配置 TBC = TBR 將禁用 TBC 比較匹配操作。當(dāng)TBC = TBR時,計時器不會設(shè)置。
2當(dāng)輸出比較功能配置為復(fù)位模式時,配置 TBC = 0 將禁用 TBC 比較復(fù)位操作。當(dāng) TBC = 0 時,計時器不會重置。
3當(dāng)輸出比較功能配置為切換模式時,配置 TBC = 0 或 TBC = TBR 將禁用切換功能。輸出PWM將為低電平或高電平,具體取決于TBB引腳的初始啟動狀態(tài)。
4切換模式的初始狀態(tài)取決于之前的 SET 或 RESET 模式。這意味著當(dāng)從“比較禁用”更改為“比較切換模式”以建立特定的啟動狀態(tài)時,TBCS:TBCR 位應(yīng)暫時配置為設(shè)置(啟動高電平)或重置(啟動低電平)。
例子
以上所有示例均在帶有定時器B的MAXQ微控制器上執(zhí)行。該器件有四個定時器 B,其中定時器 0 和 1 具有 TBC 寄存器,定時器 2 和 3 沒有。時鐘運行在大約12Mhz。
附加說明
當(dāng)處于DCEN = 1的比較模式下時,無論TBB引腳的當(dāng)前值如何,定時器始終計數(shù)。計時器之所以這樣工作,是因為計數(shù)方向是在內(nèi)部控制的。
正常的計數(shù)范圍將在 0000h 到 TBR 之間進行計數(shù),從 TBR 到 0000h 進行倒計時。注意:與其他計時器一樣,此計數(shù)從TBR到0FFFFh和從0FFFFh到TBR不同。
三個源時鐘預(yù)分頻器位 (TBPS2:0) 將預(yù)標度值設(shè)置為 2**(N × 2),其中 N = 0、1、2、3、4 和 5,應(yīng)用于定時器B 源時鐘。
結(jié)論
MAXQ微控制器中的定時器B可以提供不同的PWM波形,這取決于TBC和TBR寄存器的相對值以及DCEN位的狀態(tài)。定時器 B 將在有或沒有比較寄存器待定的情況下工作。表1和表2分別總結(jié)了不帶TBC比較寄存器和帶TBC比較寄存器的定時器B輸出功能。圖1至圖4顯示了每種特定配置下定時器B引腳TBB上的典型PWM波形。對于所有情況,用戶都可以使用定義的公式確定PWM周期和占空比。
審核編輯:郭婷
-
微控制器
+關(guān)注
關(guān)注
48文章
7570瀏覽量
151628 -
寄存器
+關(guān)注
關(guān)注
31文章
5357瀏覽量
120668 -
PWM
+關(guān)注
關(guān)注
114文章
5193瀏覽量
214229
發(fā)布評論請先 登錄
相關(guān)推薦
評論