新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430學習筆記(2)定時器A

MSP430學習筆記(2)定時器A

作者: 時間:2016-11-27 來源:網絡 收藏
3.定時器A:

所有MSP430系列的FLASH型單片機都含有定時器A(Timer_A),由一個16位定時器和多路比較/捕獲通道組成。每個比較/捕獲通道都是以16位定時器的定時功能為核心進行單獨的控制。

本文引用地址:http://m.butianyuan.cn/article/201611/322336.htm

1)定時器由以下部分組成:

a)計數(shù)器部分:輸入的時鐘源具有4種選擇,所選定的時鐘源又可以1、2、4、8分頻作為計數(shù)頻率。

b)捕獲/比較器:用于捕獲時間發(fā)生的時間或產生時間間隔,每個捕獲/比較的結構完全相同,輸入輸出都決定于各自所帶的控制寄存器的控制字,捕獲/比較器相互之間獨立。

c)輸出單元:具有可選的8種輸出模式,用于產生用戶需要的輸出信號并支持PWM。

2)Timer_A寄存器:

a)TACTL:控制寄存器:POR信號后全都自動復位,PUC信號后不受影響。

i.TASSEL1,TASSEL0:選擇定時器輸入分頻器的時鐘源,00為TACLK,特定的外部引腳的信號,01為ACLK,10為SMCLK,11為INCLK。

ii.ID1,ID0,輸入分頻選擇,00不分頻,01為2分頻,10為4分頻,11為8分頻。(由SSEL1,SSEL0選擇時鐘源,然后再由ID0和ID1選擇分頻系數(shù)將輸入信號分頻,分頻后的信號才用于計數(shù)器計數(shù))。

iii.MC1,MC0:計數(shù)模式控制位:00為停止計數(shù),01為增計數(shù)模式,10為連續(xù)計數(shù)模式,11為增減計數(shù)模式。

iv.TACLR:定時器清除位。POR或CLR置位時定時器和輸入分頻器復位。CLR由硬件自動復位,其讀出時鐘為0.

v.TAIE:定時器中斷允許位,1時允許定時器溢出中斷。

vi.TAIFG:定時器溢出標志位,增計數(shù)由CCR0到0時TAIFG置位,連續(xù)計數(shù)由0FFFFH計數(shù)到0時,TAIFG置位,增/減計數(shù)模式定時器由1減到0時TAIFG置位。

b)TAR:16位計數(shù)器,計數(shù)的主體,可讀可寫。(PA:當計數(shù)時鐘不是MCLK時,在計數(shù)器停止計數(shù)時寫,否則與CPU產生時間競爭,推薦先停止定時器,修改控制寄存器,再啟動定時器工作)。

c)CCTLx:捕獲/比較控制寄存器

i.CM1,CM0:選擇捕獲模式,00為禁止捕獲模式,01為上升沿捕獲,10為下降沿捕獲,11為上升沿和下降沿都捕獲。

ii.CCIS1,CCIS0:在捕獲模式中用來定義提供捕獲事件的輸入源,00選擇CCIxA,01選擇CCIxB,10選擇GND,11選擇Vcc。

iii.SCS:選擇捕獲信號與定時時鐘同步,異步關系,0異步捕獲,1同步捕獲。(異步捕獲允許在請求時立即將CCIFG置位并捕獲定時器的值,用于捕獲信號周期遠大于定時器周期的情況。實際常用同步捕獲模式)。

iv.比較相等信號EQUx將選中的捕獲/比較輸入信號CCIx(CCIxA,CCIxB,Vcc,GND)進行鎖存,可由SCCIx讀出。

v.CAP:選擇捕獲模式還是比較模式,0為比較模式,1為捕獲模式。(由比較模式改為捕獲模式的順序:修改控制寄存器,由比較模式切換到捕獲模式,再進行捕獲)。

vi.OUTMODx:選擇輸出模式。000為輸出,001為置位,010位PWM翻轉/復位,011為PWM置位/翻轉,100為翻轉,101為復位,110為PWM翻轉/置位,111為PWM復位/置位。

vii.CCIEx捕獲/比較模塊中斷允許位。0為禁止中斷,1為允許中斷。

viii.CCIx:捕獲/比較模塊的輸入信號,捕獲模式:由CCIS0和CCIS1選擇的輸入信號可通過該位讀出。比較模式:CCIx復位。

ix.OUT:輸出信號,0輸出低電平,1輸出高電平。

x.COV:捕獲溢出標志,0為沒有捕獲溢出,1為發(fā)生捕獲溢出。當選擇比較模式時,沒有使COV置位的捕獲事件。當選擇捕獲模式時,如果捕獲寄存器的值被讀出前再次發(fā)生捕獲事件,則COV置位。程序可檢測COV來判斷原值讀出前是否又發(fā)生捕獲事件。讀捕獲寄存器時不會使溢出中斷標志位復位,需要軟件復位。

xi.CCIFGx:捕獲比較中斷標志。捕獲模式時寄存器CCRx捕獲定時器TAR值時置位。比較模式定時器TAR值等于寄存器CCRx值時置位。

xii.CCRx:捕獲/比較寄存器:在捕獲/比較模塊中,可讀可寫。在捕獲方式,當滿足捕獲條件,硬件自動將計數(shù)器TAR數(shù)據(jù)寫入該寄存器。如果測量某窄脈沖(高電平)的脈沖長度,可定義上升沿和下降沿都捕獲。在上升沿時捕獲一個定時器數(shù)據(jù),下降沿再捕獲一個。其中CCR0經常用作周期寄存器,其他CCRx相同。

xiii.TAIV:中斷向量寄存器。Timer_A中斷可由計數(shù)器溢出引起,也可以來自捕獲/比較寄存器。每個捕獲/比較模塊可獨立編程,由捕獲/比較外部信號以產生中斷。外部信號可以是上升沿,可以是下降沿,可以兩者均有。

1.Timer_A模塊使用兩個中斷向量,一個單獨分配給捕獲/比較寄存器CCR0,另一個作為公用中斷向量用于定時器和其他捕獲/比較寄存器。

2.捕獲/比較寄存器CCR0中斷向量具有最高的優(yōu)先級,因為其能用于定義增計數(shù)和增/減計數(shù)模式的周期,需要最快速的服務。CCIFG0在中斷時能自動復位。

3.CCR1~CCRx和定時器共用另一個中斷向量,屬于多源中斷,對應的中斷標志位CCIFG1~CCIFGx和TAIFG1在讀中斷向量字TAIV后自動復位。若不訪問TAIV寄存器,則需軟件清除。

4.如果有Timer_A中斷標志位,則TAIV為相應的數(shù)據(jù)。該數(shù)據(jù)與PC(程序計數(shù)器)相加可使系統(tǒng)自動進入響應的中斷服務程序。

3)定時器工作原理:

a)停止模式:用于定時器暫停,不發(fā)生復位,所有寄存器現(xiàn)在的內容在停止模式結束后都可用。當定時器暫停后重新計數(shù)時,計數(shù)器將從暫停時的值開始以暫停前的計數(shù)方向計數(shù)。也可通過CLR來清除定時器的方向記憶特性。

b)增計數(shù)模式:捕獲/比較寄存器CCR0用作Timer_A增計數(shù)模式的周期寄存器,CCR0為16位寄存器,適用于定時周期小于65536的連續(xù)計數(shù)情況。計數(shù)器TAR可以增計數(shù)到CCR0的值,當計數(shù)值與CCR0值相等(或定時器值大于CCR0時),定時器復位并從0開始計數(shù)。

i.當定時器值等于CCR0時,設置標志位CCIFG0為1,當定時器從CCR0計數(shù)到0時,設置標志位TAIFG為1。

ii.計數(shù)過程中還可以通過改變CCR0的值來重置計數(shù)周期。當新周期大于舊周期時,定時器會直接增計數(shù)到新周期。

c)連續(xù)計數(shù)模式:在需要65536個時鐘周期的定時器應用場合常用連續(xù)計數(shù)模式。定時器從當前值計數(shù)到0FFFFH后又從0開始計數(shù)。當定時器從0FFFFH到0時設置標志位TAIFG。

d)增/減計數(shù)模式:需要對稱波形的情況經??梢允褂迷?減計數(shù)模式,該模式下,定時器先計數(shù)到CCR0的值,然后反向減計數(shù)到0。計數(shù)周期仍由CCR0定義,它是CCR0的2倍。

4)捕獲/比較模塊:Timer_A捕獲/比較的每個模塊都可用于捕獲事件發(fā)生的時間或產生定時間隔。當捕獲時間發(fā)生或者定時時間到達都將引發(fā)中斷。捕獲/比較寄存器與定時器總線連接,可在滿足捕獲條件時將TAR的值寫入捕獲寄存器;可在TAR的值與比較器值相等時設置標志位。通過CCTLx中的CAPx選擇模式,該模塊可用于捕獲模式,也可用于比較模式。用CCISx1和CCISx2選擇捕獲的輸入信號源,輸入信號可以是來自外部引腳的信號,也可以是來自內部的信號。

a)捕獲模式:這時如果在選定的引腳上發(fā)生設定的脈沖觸發(fā)沿,則TAR的值寫入CCRx。捕獲完成后CCIFGx被置位,如果GIE和CCIEx允許,則產生中斷。PA:捕獲信號與定時器時鐘同步,將捕獲/比較中斷標志置位,并將定時器數(shù)值存入捕獲寄存器。他們同步特性可避免定時器和捕獲信號的時間競爭。非同步信號支持低速定時器的時間應用。捕獲時間與定時器時鐘可能產生時間競爭,因而導致捕獲數(shù)據(jù)無效。

b)比較方式主要用于軟件或者應用硬件產生定時,還可以為D/A轉換、馬達控制產生PWM信號。獨立的輸出模塊被分配給各個捕獲/比較寄存器的每一個,輸出模塊可以獨立運行于比較功能,或以各種方式觸發(fā)。當TAR的值大于或等于CCR0的值時,EQU0=1;當TAR的值等于相應的CCR1或CCR2時,EQU1=1或EQU2=1。

5)輸出單元:每個捕獲/比較模塊都包含一個輸出單元,用于產生輸出信號。每個輸出單元有8種工作模式,由OUTMOD0~3決定。

6)Timer_A實現(xiàn)PWM:

如果Timer_A定時器的計數(shù)器工作在增計數(shù)模式,輸出采用模式7(復位/置位模式),則可利用寄存器CCR0控制PWM波形的周期,用某個寄存器CCRx來控制占空比。這樣Timer_A就能產生任意占空比的PWM波。

改變占空比的方法是:保持CCR0的值(周期不變),改變CCRx的值(占空比變)



評論


技術專區(qū)

關閉