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