hello everyone, I use P1.5 (timer 0.0) in msp430 launchpad with msp430g2553 for capture mode. but it seems wrong somewhere. it does not work. can anyone show me why it does not work correctly
#include <msp430g2553.h>
#include "uart.h"
#define trigger BIT4;
#define echo BIT5;
void timer_init(void);
void do_khoang_cach(void);
unsigned int t1=0, t2=0, delta=0, first_pulse=0;
void main(void)
{
WDTCTL = WDTPW | WDTHOLD;
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
P1DIR |= trigger;
P1SEL |= echo;
uart_init();
timer_init();
_BIS_SR(GIE);
while (1)
{
do_khoang_cach();
__delay_cycles(30000);
}
}
void timer_init(void){
TA0CTL = TASSEL_2 + MC_2 ;
TA0CCTL0 = CM_3 + CAP + CCIS_0 + SCS+ CCIE; // falling edge & raising edge, capture mode, capture/compare interrupt enable
TA0CCTL0 &= ~ CCIFG;
}
void do_khoang_cach(void){
P1OUT |= trigger;
__delay_cycles(20);
P1OUT &= ~trigger;
}
#pragma vector = TIMER0_A0_VECTOR
__interrupt void timer0(void){
if (P1IN & BIT5 ==1 )
t1 = TA0CCR0;
else {
t2 = TA0CCR0;
if (t2 > t1){
delta = (t2-t1)/58;
uart_put_num(delta,0,0);
uart_puts("\r\n");
}
}
TA0CCTL0 &= ~ CCIFG;
}