1.前言
這里將介紹另一款定時器TMR2模塊,TMR2與前面介紹的TMR0和TMR1相比,最大的差別是只能工作于定時模式,因此稱它為“定時器TMR2”。
2.TMR2的特性
TMR2為8位寬,附帶二個4位寬的分頻器:一個“預分頻器”和一個“后分頻器”,一個可編程的8位周期寄存器PR2。其主要用途:
1. 可以用作時間定時器,但是不能作為計數器;
3. 可以與CCP模塊配合使用,實現脈寬調制PWM功能。
TMR2的核心是一個可以由軟件讀/寫的8位寬的計數器,它也是按遞增計數,從某一初值(缺省為0)開始遞增,直到與周期寄存器PR2中內容匹配之后,在下一次遞增時則返回到00H,并且會產生匹配信號,該匹配信號將作為“后分頻器”的計數脈沖。
只有在后分頻器產生溢出時,才會將溢出中斷標志位TMR2IF(PIR1的bit1)置1。如果此時相關的中斷使能位都置位,則會引起CPU的中斷響應。通過對中斷使能位TMR2IE的置位或復位,即可允許或禁止CPU響應TMR2產生的中斷請求。
需要注意的是:
1. TMR2和RAM空間統一編址,地址為11H;
2. 可用軟件方式直接讀/寫TMR2的內容;
3. 有一個4位的預分頻器和一個4位的后分頻器;
4. 有一個8位周期寄存器;
5. 累加計數的觸發信號只能選擇內部系統時鐘;
3. TMR2相關的寄存器
與TMR2有關的寄存器共有6個,如下表所示。這6個寄存器中的前3個寄存器的功能可以查看“中斷系統”。在此介紹TMR2控制寄存器T2CON。
TMR2控制寄存器T2CON是一個只用到低7位的可讀/寫寄存器,最高位未用,其余各位的含義如下:
1. TOUT-PS3~TOUT-PS0:TMR2后分頻器分頻比選擇位,如下表所列:
2. TMR2-ON:TMR2使能控制位。1=啟用TMR2;0=關閉TMR2,可以降低功耗。
3. T2CK-PS1~T2CK-PS0:預分頻器分頻比選擇位。
4. TMR2的電路結構
TMR2的內部結構,如下圖所示,包含5個組成部分。下面分析各個部分的功能和組成關系。
核心部分就是一個8位寬的累加計數器TMR2。其復位值是00H,也可以是在00H~FFH范圍內由用戶設定的一個起始值。
4位寬的預分頻器,對于進入TMR2的時鐘信號進行預先分頻,允許選擇3種不同的分頻比(1:1、1:4或1:16)。
注意:在對TMR2或控制寄存器進行寫操作時,都可以使預分頻器清0;在用任何方式復位時,都會對預分頻器清0。
周期寄存器PR2也是一個8位可讀/寫寄存器。用來預置一個作為TMR2一次計數過程結束的周期值。芯片復位后PR2寄存器被自動設置為全1(FFH)。
比較器是一個8位寬的按位比較邏輯電路,只有當參加比較的兩組數據完全相同之后,下一次遞增時,“匹配”輸出端才會送出高電平,其他情況下該輸出端均保持低電平。
4位寬的后分頻器,對于比較器的輸出信號進行后續分頻,允許連續選擇16種分頻比,其輸出信號頻率是輸入信號頻率的1/N (N=1~16) 。
TMR2的工作是可控的,所以還包含一個控制門G1。只有當TMR2使能位TMR2ON置1,系統時鐘才能通過G1,TMR2也才能進入活動狀態。
5.TMR2的工作原理
TMR2只有一種工作方式:定時器方式,其觸發鐘信號也只能從內部系統時鐘4分頻后得到。
5.1 禁止TMR2工作
TMR2也比TMR0多了一種選擇,即可以被用戶程序關閉而節電,此點類似于TMR1。具體方法是將TMR2使能控制位TMR2ON清0。此時與門G1的一只引腳被低電平封鎖,其輸出端均保持低電平;因此使得累加計數器TMR2不能活動。
5.2 定時工作方式
TMR2只有定時工作模式,該模式可以被用來實現一般的延時或定時。但是,TMR2的主要目的并不是把它用作普通的定時器,而是為CCP模塊或MSSP模塊提供周期可調的時基信號。
用作周期可調的時基發生器
當TMR2被用作周期可調的時基發生器時,可以為CCP模塊或MSSP模塊提供周期可調的時基信號。
這時,應該將中斷使能位TMR2IE清0,即屏蔽TMR2的中斷功能,相當于把后分頻器的作用也屏蔽了;通過對周期寄存器PR2設置不同的值,以及給預分頻器設定不同的分頻比,來靈活調整TMR2輸出端的信號周期TTMR2 。該周期的計算式為:
TTMR2=(4/fosc)*N1*(PR2+1)
其中:fosc為系統時鐘頻率;N1為預分頻器的分頻比(取1、4或16);PR2為周期寄存器預賦值;PR2+1是因為在TMR2與PR2匹配后的下一次增量時TMR2才回00H。
用作延遲時間可調周期性定時器
把TMR2作為延遲時間可調的周期性定時器,會比TMR0的定時方式更加節省軟件開銷。
TMR2不必像TMR0那樣,每次溢出后,都要給寄存器TMR2賦初值。只要一次性設定溢出周期(通過設定預分頻器、后分頻器以及PR2來實現),TMR2就將會周期性地按預先設定的溢出周期產生超時中斷。該超時溢出周期的計算式為 :
TTMR2IF=(4/fosc)*N1*(PR2+1)*N2
其中,N2為后分頻器的分頻比(連續可取1~16)。這時的簡化電路如下圖所示:
用作普通定時器
TMR2也可以像TMR0那樣用作普通的定時器,這樣使用時,可以將后分頻器的分頻比設定為1:1,PR2的值設定為最大值FFH,就相當于把后分頻器、周期寄存器以及比較器的功能禁止掉了,使得它們不發揮作用。
從而使TMR2簡化為類似于TMR0一樣,帶有一個分頻比可設定為1:1、1:4或1:16的4位預分頻器。這時超時溢出周期的計算式為:
TTMR2IF=(4/fosc)*N1*(256-M)
其中,M為TMR2的初始值。簡化電路如下圖所示:
采用這種用法時,需要在TMR2每次超時溢出時,都要給TMR2賦一次初始值。累加計數寄存器TMR2,就會以該初始值為起點開始增量,直到遞增到FFH,之后再出現一個計數脈沖,就會將TMR2復位清0,并且發出中斷請求(TMR2IF被置1)。如果想把預分頻器的功能禁止掉,可以把它的分頻比也設置為1:1,這樣就相當于把預分頻器給短路掉了。
-
定時器
+關注
關注
23文章
3255瀏覽量
115380 -
TMR2
+關注
關注
0文章
2瀏覽量
6934
發布評論請先 登錄
相關推薦
評論