msp430的定時器A 劃分幾個獨(dú)立時間間隔
#define TAIV_TACCR1 (0x0002)
#define TAIV_TACCR2 (0x0004)
#define TAIV_TAIFG (0x000A)
TIMERA1_VECTOR是一個中斷向量,主要處理CCR1,CCR2,以及定時器A溢出的中斷標(biāo)志,而CCR1,CCR2,以及定時器A產(chǎn)生中斷是的TAIV是不同的,分別是2,4,10
switch( TAIV ) { case 2: break; case 4: break; case 10: P3OUT ^= BIT4; break; }
這一句的意思是,判斷是哪個產(chǎn)生中斷的,以執(zhí)行不懂的程序,當(dāng)然,在里面沒寫有,但是當(dāng)你自己去寫的時候可自己加進(jìn)去。
CCR0,CCR1,CCR2
分別是比較/捕獲模塊1,2,3的比較/捕獲寄存器,一般CCR0用來控制周期。
至于具體怎么應(yīng)用,這是很難解釋的,解釋了可能你還是不同。最好的辦法就是一邊寫程序,一邊查書。
6月2日 周四 晴 定時器A
現(xiàn)在的認(rèn)識:
MSP430 5438 有3個時鐘,分別是 TA0、TA1 和TB
了解了定時器A的用法:
定時器A可以分成幾個獨(dú)立的時間周期。這幾個時鐘周期共用一個計(jì)數(shù)器TA1R 或TA0R。
在頭文件中可以查到:
#define TIMER1_A1_VECTOR (48 * 2u)
#define TIMER1_A0_VECTOR (49 * 2u)
#define TIMER0_A1_VECTOR (53 * 2u)
#define TIMER0_A0_VECTOR (54 * 2u)
TIMER0 含 TA0CCR0- TA0CCR4 五個
TIMER1 含 TA1CCR0- TA1CCR2 三個
TA0CCR0 對應(yīng)中斷向量 A0_VECTOR
TA0CCR1-4 對應(yīng)中斷向量 A1_VECTOR
//A0定時器,用于界面處理
TA0CCTL0 = CCIE; // CCR0 interrupt enabled
TA0CCTL1 = CCIE; // CCR1 interrupt enabled//時間周期1使能
TA0CCTL2 = CCIE; // CCR2 interrupt enabled//時間周期2使能
TA0CCTL3= CCIE; // CCR3 interrupt enabled//時間周期3使能
//TA0CCTL4= CCIE; // CCR3 interrupt enabled//時間周期3使能
TA0CCR0=256;//TA0R 計(jì)數(shù)到65535才清零。
TA0CCR1=4096; //1s
TA0CCR2=1024; //1/4
TA0CCR3=8192; //2s
TA0CTL = TASSEL_1+ID_3 + MC_2 + TACLR+ TAIE; // ACLK, 8分頻,MC_2:連續(xù)模式, clear TAR
// Timer1 A0 interrupt service routine
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A0 (void)
{
// TA0CCR0 += 64;// Add Offset to CCR0
TA0CCR0 += 256;// 1/16s Add Offset to CCR0
if(ReadUART0_new>0)
ReadUART0_new--;
if(ReadUART1_new>0)
ReadUART1_new--;
}
// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMER0_A1_VECTOR
__interrupt void TIMER0_A1_ISR(void)
{
switch(__even_in_range(TA0IV,14))
{
case 0:
break;
case 2:
TA0CCR1 +=4096; //1s Add Offset to CCR1
SecondReach=1;
CountToMunite++;
SecondTimecount++;
if(waringstatus>0)
{
//buzzer();
// waringlight();
}
break; // CCR4 not used
case 4:
TA0CCR2+= 1024; // 1/2s Add Offset to CCR2
// buzzer();
// waringlight();
break;
case 6:
spark++;
TA0CCR3+=8192; // 2s Add Offset to CCR3
// buzzer();
// waringlight();
break;
case 8:
break; // CCR3 not used
case 10:
break; // CCR5 not used
case 12:
break; // Reserved not used
case 14: // overflow
break;
default:
break;
}
}
關(guān)鍵詞:
msp430定時器時間間
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號放大器
評論