Interrupção no HI-TECH

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Interrupção no HI-TECH

Mensagempor denis neves » 16 Mar 2010 14:12

Olá senhores, olha eu aqui de novo !!!

Larguei mão de usar o CCS e agora estou me aventurando no HI-TECH e, por enquanto, estou gostando. Como nele se trabalha diretamente com os registradores a gente acaba aprendendo mais sobre o hardware que estemos usando, no meu caso o 16f877A.

Agora uma duvida: Estou usando os comparadores analógicos para comparar uma tensão externa, se ela for maior que a referencia dispara uma interrupção. Configurei os comparadores e eles funcionaram certinho (saida C1OUT), mas não estou conseguindo fazer a interrupção!!!

Meu codigo:


CMCON = 0b00000010; //configura os comparadores para o modo 4.
CVRCON = 0b10000101; //configura o modulo REF. interna com tensão de 2,03V.
INTCON = 0b11000000; //habilita a interrupção por periferico.
PIE1 = 0b01000000; //usar interrupção dos perifericos (comparadores analogicos).
CMIF = 0;

while(1)
{
/*
if(C1OUT == 1)
RD1 = 1;
else
RD1 = 0;
*/
}



}

void interrupts()
{
if(CMIF == 1)
{
CMIF = 0;
RD1 = 1;
DelayMs(1000);
RD1 = 0;
}

}

Não sei se esse codigo está faltando alguma coisa ou tem alguma coisa errada...será que vcs poderiam me ajudar a resolver isso ???

Muito obrigado,

Denis.
HEY HO LET'S GO !!!
denis neves
Byte
 
Mensagens: 117
Registrado em: 25 Jul 2007 17:16

Mensagempor ze » 16 Mar 2010 14:39

//tenta
static void interrupt() //leia o manual antes pra ver a sintaxe correta!
o_nome_nao_e_importante(void)
{
RD1^=1; //ex.
...
}
//eu prefiro colocar antes do
void main(void)
{
...
...
while(1)
//se vc mexer no mesmo pino aqui num vai de causar confusão não?
//mexa em outro só pra teste...
...
}

welcome...
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor denis neves » 16 Mar 2010 15:17

Olá Lellis

dei uma olhada no manual e a sintaxe está assim :

static void interrupts()
{
if(CMIF == 1)
{
CMIF = 0;
RD1^=1;
}

}

void main() {

TRISA = 0b11111111;
TRISB = 0b00000000;
TRISC = 0b00000000;
TRISD = 0b00000000;
TRISE = 0b00000000;
CMCON = 0b00000010; //configura os comparadores para o modo 4.
CVRCON = 0b10000101; //configura o modulo REF. interna com tensão de 2,03V.
INTCON = 0b11000000; //habilita a interrupção por periferico.
PIE1 = 0b01000000; //usar interrupção dos perifericos (comparadores analogicos).
CMIF = 0;


while(1)
{

if(C1OUT == 1)
RD2 = 1;
else
RD2 = 0;

}

O bixim não quer funcionar não !!!

O que será eim ???... :?

}
HEY HO LET'S GO !!!
denis neves
Byte
 
Mensagens: 117
Registrado em: 25 Jul 2007 17:16

Mensagempor ze » 16 Mar 2010 16:22

olá denis
fiz um teste com sua sintaxe e compilou mas não funcionou. portanto faça com a que lhe passei pra ver que merdadá.
gozado que não achei esta tua tal interrupts() no manual
http://ww1.microchip.com/downloads/en/D ... techUG.pdf
static void interrupt // tava sobrando ()
comparador(void)
{
...
}
abç
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x