Ngắt timer !

Phạm Minh

Thành Viên PIF
Cho em hỏi là cách dùng timer để ngắt như interrupt được không ? Có thể hướng dẫn cho em cách làm được không ?:D:D:la:
 

thienbk14

Thành Viên PIF
timer có ngắt bạn. có các chế đọ như up/down, continious ,..... bạn chỉ cần set CCR0 rồi khi timer đếm tới sẽ vô ngắt
 

Phạm Minh

Thành Viên PIF
Cho mình hỏi code sai chỗ nào mà không chạy được vậy.:D:1cool_byebye:.
#include <msp430g2553.h>
void timer_a0_init();
void port_init();
/*************CHƯƠNG TRÌNH CON*****************/
void timer_a0_init()
{
TA0CTL = TASSEL_1 + MC_2 + ID_3 + TAIE ; // TIMER tăng lên 1 tương ứng 0.8us
TA0CCR0 = 31250; // tương ứng với 0.25s
TA0CCR1 = 62500 ; // tương ứng với 0.5s
TA0CCTL0 = CCIE ;
TA0CCTL1 = CCIE;
}
void port_init()
{
P1DIR |= BIT0 + BIT1 + BIT2;
P1OUT = 0XFF;
}
/**********************KHAI BAO NGAT**************/
#pragma vector = TIMER0_A1_VECTOR // vector ngat cua CCR1, CCR2, TAIFG
__interrupt void TAIN_Interrupt(void)
{
switch(TA0IV)
{
case 0x02: // CCR1 bao ngat, TA0IV gia tri 0x02
{
P1OUT ^= BIT0;
TA0CCR1 += 62500; // lan ngat sau bat dau tu gia tri 0.5s
break;
}
case 0x0A:
{
P1OUT ^= BIT1;
break;
}
}
}
#pragma vector = TIMER0_A0_VECTOR
__interrupt void CCR0_interrupt(void)
{
P1OUT ^= BIT2;
}
/**********************CHUONG TRINH CHINH*********************/
void main(void)
{
WDTCTL = WDTPW | WDTHOLD;// Stop watchdog timer
port_init();
timer_a0_init();
_BIS_SR(LPM0_bits + GIE);

}
/************************END************************/
 

Phạm Minh

Thành Viên PIF
Mình đã sữa được, các bạn nếu có tham khảo thì sữa chỗ chương trình con đầu tiên, TASSEL_2 ms chạy được :D:D
 
Top