當TACCTLx中的CAP為1時進入捕獲模式
MSP430F169支持三種捕獲模式由TACCTLx中的CM_x控制
x=0:不捕獲 x=1:上升沿捕獲 x=2:下降沿捕獲 x=3:上升下降沿都捕獲
有四種捕獲來源由TACCLx中的CCIS_x控制
x=0:CCIxA x=1:CCIxB x=2:GND x=3 :VCC
可以與定時時鐘同步捕獲也可以異步捕獲由TACCTLx中的SCS控制
0:異步捕獲 1:同步捕獲
TACCTLx中的SCCI和CCI可以查詢輸入的電平高低,區別是CCI是捕獲輸入的瞬時值,而SCCI為經時鐘同步后鎖存的捕獲值.
捕獲模式有兩個中斷源TACCR0和TAIV,其中TACCR0是一個單元中斷,TAIV為多元中斷,均為可屏蔽中斷,由SR中的GIE控制
當TACCTLx中的CCIE置位時捕獲中斷使能,中斷標志位為TACCTLx中的CCIFG。
TACCTL0控制的TACCR0中斷向量為TIMERA0_VECTOR,中斷服務之后CCIFG由硬件自動清零。
TACCTL1,TACCR2控制下的TACCR1,TACCR2和Timer overflow 中斷公用TAIV中斷,中斷為TIMERA1_VECTOR,中斷同時發生時較高優先級的中斷標志自動清零,然后進入低優先級中斷。
中斷優先級TACCR1最高,Timer overflow最低。中斷標志分別為CCIFG CCIFG TAIFG。
#include
unsigned int cap=0;
void main()
{
WDTCTL=WDTPW+WDTHOLD;
P1SEL=0X02;
P2DIR=0X01;
BCSCTL1=DIVA_3;
CCTL0=CM_1+SCS+CCIS_0+CAP+CCIE;
TACTL=TASSEL_2+MC_2;
_BIS_SR(LPM0_bits+GIE);
}
#pragma vector=TIMEA0_VECTOR __interrupt void TimerA0(void)
{cap=TACCR0;}
|