天天看點

MSP430F149定時器TA總結

msp430的定時器主要是指基本定時器,看門狗定時器和TA\TB定時器,兩種定時器從功能和用法的角度基本相似,TB功能更為強大,有7個CCR0寄存器,即可輸出六路PWM,在做三相逆變的時候,需要六路每路相差60°的spwm波,就是用TB來發生的。

定時器的PWM發生利用的是比較模式,即在CCR0中儲存周期,CCR1中儲存一個小于CCR0的數字,CCR1/CCR0的比值即為占空比,其原理如下圖所示:

在一個16位計數器TAR增加的過程中,當達到CCR1前輸出高電平,達到CCR0值前輸出低電平,達到CCR0後,重新置位。

與TA相關的寄存器分為四類:

1、TACCRx(CCRx)     //捕獲/比較寄存器

2、TACCTLx(CCTLx) //捕獲/比較控制寄存器

3、TACTL                  //控制寄存器

4、TAIV                     //中斷向量寄存器

該寄存器使用最簡單,可讀可寫,在PWM輸出中CCR0常用作周期,CCR1中用作占空比。,具體作用方法見7-2圖

15 14                 13 12       11       10         9     8        7 6 5             4           3         2       1         0

CAPTMOD1-0   CCIS1-0   SCS   SCCIx          CAP   OUTMODx   CCIEx   CCIx   OUT   COV   CCIFx

CAPTMOD1-0 :

選擇捕獲模式

00 禁止捕獲模式

01 上升沿捕獲

10 下降沿捕獲

11 上升沿與下降沿都捕獲

CCISI1-0 :

在捕獲模式中用來定提供捕獲事件的輸入端

00 選擇CCIxA

01 選擇CCIxB

10 選擇GND

11 選擇VCC

SCS:

選擇捕獲信号與定時器時鐘同步、異步關系

0 異步捕獲

1 同步捕獲

異步捕獲模式允許在請求時立即将CCIFG置位和捕獲定時器值,适用于捕獲信号的周期遠大于定時器時鐘周期的情況。但是,如果定時器時鐘和捕獲信号發生時間競争,則捕獲寄存器的值可能出錯。

在實際中經常使用同步捕獲模式,而且捕獲總是有效的。

SSCIx 比較相等信号EQUx将選擇中的捕獲、比較輸入信号CCIx(CCIxA,CCIxB,Vcc和GND)進行鎖存,然後可由SCCIx讀出。

CAP:

選擇捕獲模式還是比較模式。

0 比較模式

1 捕獲模式

注意:同時捕獲和捕獲模式選擇

如果通過捕獲比較寄存器CCTLx中的CAP使工作模式從比較模式變為捕獲模式,那麼不應同時進行捕獲;否則,在捕獲比較寄存器中的值是不可預料的,推薦的指令順序為:[1]修改控制寄存器,由比較模式換到捕獲模式。

[2]捕獲

OUTMODx :

選擇輸出模式

000 輸出

001 置位

010 PWM翻轉/複位

011 PWM置位/複位

100 翻轉/置位

101 複位

110 PWM翻轉/置位

111 PWM複位/置位

關于2和3的關系:

置位就是對寄存器的某一位寫"1"
複位就是使寄存器恢複到初始狀态值。
翻轉就是該位的電平由"1"變為"0"或者由"0"變為"1"
           

在實際應用中,一般使用3和6或者2和7輸出一對可以互補的pwm,其他幾種感覺實際應用不是很強,此外翻轉與置位感覺在此差别不大

同時關于輸出模式,有下圖

 CCIx :

捕獲比較模的輸入信号

捕獲模式:由CCIS0和CCIS1選擇的輸入信号通過該位讀出。

比較模式:CCIx複位。

OUT :

輸出信号

0 輸出低電平

1 輸出高電平

如果OUTMODx選擇輸出模式0(輸出),則該位對應于輸入狀态。

COV :

捕獲溢出标志

0 輸出低電平

1 輸出高電平

[1]當CAP=0時,選擇比較模式。捕獲信号發生複位,沒有使COV置位的捕獲事件。

[2]當CAP=1時,選擇捕獲模式,如果捕獲寄存器的值被讀出再次發生捕獲事件,則COV置位。程式可檢測COV來斷定原值讀出前是否又發生捕獲事件。讀捕獲寄存器時不會使溢出标志複位,須用軟體複位。

CCIFGx:

 捕獲比較中斷标志

捕獲模式:寄存器CCRx捕獲了定時器TAR值時置位。

比較模式:定時器TAR值等于寄存器CCRx值時置位。

1、在比較模式輸出pwm的情況下,一般對TACCTL設定的方法是CCTL0 = OUTMOD_2;而若另外一個IO口設定為CCTL0 = OUTMOD_6;則兩路為互補的,這在做逆變兩個導通情況需要正好相反的情況下是非常友善的,用這種方法,也隻要控制每兩路之間相差120°,每一個再輸出一個差180°的就可以輸出六路,進而實作三相逆變。

2、在捕獲模式下,一般設定的方法是

CCTL0 = CM_1 + SCS + CCIS_0 + CAP + CCIE;                          // Rising edge + CCI0A (P1.1) + Capture Mode + Interrupt

15--10  9           8           7        6     5        4        3       2       1        0

未用     SSEL1  SSEL0   ID1   ID0  MC1  MC0  未用  CLR  TAIE  TAIFG

SSEL1、SSEL0:

選擇定時器輸入分頻器的時鐘源

Timer_A時鐘源

SSEL1   SSEL0   輸入時鐘源   說明

0            0           TACLK          用特定的外部引腳信号

0            1           ACLK            輔助時鐘

1            0           SMCLK          子系統時鐘

1            1           INCLK            見器件說明

ID1,ID0:

 輸入分頻選擇

00 不分頻

01 2分頻

10 4分頻

11 8分頻

MC1,MC0 :

計數模式控制位

00 停止模式

01 增計數模式

10 連續計數模式

11 增/減計數模式

CLR:

 定時器清除位

POR或CLR置位時定時器和輸入分頻器複位。CLR由硬體自動複位,其讀出始終為0。定時器在下一個有效輸入沿開始工作。如果不是被清除模式控制暫停,則定時器以增計數模式開始工作。

TAIE :

定時器中斷允許位

0 禁止定時器溢出中斷

1 允許定時器溢出中斷

TAIFG:

 定時器溢出标志位

增計數模式: 當定時器由CCR0計數到到0時,TAIFG置位。

連續計數模式:當定時器由0FFFFH計數到0時,TAIFG置位。

增/減計數模式:當定時器由CCR0減計數到0時,TAIFG置位。

TACTL設定起來比較簡單,而且變化不多,不論是捕獲還是比較模式相差都不很大,基本上都是隻要選擇一個時鐘源(TASSEL)和一個計數模式(MC),時鐘源一般會選擇TASSEL_2(SMCLK,在沒開XT2的情況下,預設800khz,在開XT2的情況下可達8MHZ),TASSEL_1(ACLK,一般不需分頻,則為32768HZ)。計數方式一般都會選擇增計數模式MC_1;少數情況下MC_3據說可用來生成對稱波,沒有試過,但是MC_3會把普通pwm的頻率減半.......(使我naive的以為語句要占運作時間,是以即使使用8M晶振也隻能達到4M頻率而已)

TA總結如是,TB隻是比他多了幾個CCR和CCLT而已,可以用來輸出6路pwm,總的評價一下定時器,主要用比較模式來生成PWM波(含SPWM波),捕獲模式用來測頻,測頻精度非常高,感覺基本能滿足鄙人要求....,以後在構架系統的時候,應該會利用TB來輸出PWM,用TA測頻及測相,在需要測頻較多的情況下使用TB測頻測相。P2.4-P2.7用來鍵盤,P5.2-P5.6用來液晶顯示,基本人機互動和系統需求應該都可以滿足

繼續閱讀