Olá pessoal,
Tenho um projeto para meu curso técnico que apresentarei um radar, porém estou com problemas a respeito da interrupção
Meu sensores são dois infravermelhos e dois fototransistores, ja com a saída condicionada para 3.3v (para entrada do MSP.
O radar é basicamente uma pista com estes sensores (separados por 26.55mm) onde o carrinho passa por eles e o microcontrolador deve
registrar a velocidade (26.55mm/tempo).
O sensor A eu joguei ele na porta 1.0, uma I/O , e quando setado ela deveria gerar uma interrupção e neste função zerar o TIMERA0.
O sensor B joguei ele na porta 1.1, entrada do TIMERA0, quando gerar uma interrupção ele deve registrar o valor do timer em TACCR0 que logo em seguida em coloca na variavel "tempo".
este é um fragmento do meu programa (tem mais coisas, como funções do display e delay)
porém o programa nao registra nada quando ligo e testo. Gostaria de uma ajuda. Obrigado
#pragma vector= TIMERA1_VECTOR
__interrupt void TIMERA1(void)
{
TACTL |= 0x0004;
tempo = TACCR1;
tempo = tempo*0.00003051757813;
velocidade = 26.55/tempo;
BCD = velocidade;
BINDEC ();
DECASC ();
TACCTL1 &= 0xFFFE;
}
#pragma vector= PORT1_VECTOR
__interrupt void PORT1(void)
{
TACCTL0 |= 0x0001;
tempo = TACCR0;
}
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P1DIR &= 0xFC; // Define P1.0 e P1.1 como entrada
P1SEL |= 0x02; // Habilita funcão especial da P1.1
BCSCTL1 = 0x46; //Registro de Controle de Clock e Oscilador
BCSCTL2 = 0x08; //Registro de Controle de Clock e Oscilador
TACTL = 0x0120; // Controle do Timer A; Clear resetado; Modo Contínuo; clock p/ timer; ACLK
TACCTL0 |= 0x7918; //Controle de Captura;Borda de subida;Sincronizar com clock;Modo captura;Habilita Interrupção;CCi habilitado;Capturar o valor do time desabilitado
asm("EINT");
for(;{
}
return 0;
}