Página 1 de 1
INTERRUPT-ON-CHANGE

Enviado:
12 Jan 2007 09:53
por Mersin
Olá pessoal,
Outra duvida é a respeito da função INTERRUPT-ON-CHANGE, para ocorrer a interrupção eu tenho que ficar lendo esta entrada frequentemente?
Ou a interrupção acontece por hardware sem a intervenção do software, ou seja, sem precisar fazer nenhum comando de leitura do pino?

Enviado:
12 Jan 2007 10:08
por ric_vas
Exato. Se estiver escrevendo o código em C o compilador chama as funções para você quando ocorre a interrupção.
Você deve verificar, no processador utilizado, quais pinos estão associados a esta interrupção sem esquecer, é claro, de ativar a mesma.
Ric

Enviado:
12 Jan 2007 10:56
por andre_luis
Sendo em assembly,
Havendo qualquer interrupcao, o PC do PIC desloca a linha de execução para o endereço 0x04. Cabe ao programador verificar qual o Flag de interrupcao está setado.
Realmente, em 'C', sebretudo com CCS tudo fica mais fácil...
+++

Enviado:
12 Jan 2007 13:27
por Mersin
Mas amigos,
Vcs já usaram essa INTERRUPT-ON-CHANGE no 12F675? parece que ela é separada para cada pino.
O problema é que, penso, eu, que para habilitá-la no CCS precisaria escrever #INT_RA3 por exemplo para o pino 3. É isso mesmo?

Enviado:
12 Jan 2007 15:07
por ric_vas
Eu ainda não trabalhei com este processador. Mas pelo que entendi as constantes INT_RA0 até INT_RA5 servem apenas para utilizar nas funções " enable_interrupts()" e "disable_interrupts()", ou seja, você pode habilitar a chamada da interrução apenas quando determinados pinos forem acionados. Entretanto elas continuam a serem tratadas, todas, em:
#INT_RB
void int_rb_isr(void)
{
}
Ric
P.S. Li tb. que em versões mais recentes do compilador o #INT_RB já foi alterado para #INT_RA


Enviado:
13 Jan 2007 14:53
por Rota
Meresin,
para a interrupção por mudança de estado funcionar no 12F675, voce tem que setar os bits GIE (habilitação geral das interrupçoes), e GPIE (interrupção por mudança de estado) no registrador INTCON e no registrador IOC, qual o pino que vc deseja que gere a interrupção.
em mikrobasic seria assim:
gie=%10001000 (interrupção geral habilitada e interrupção por mud estado habilitada)
ioc=%00000001 (interrupção mud estado habilitada somente no pino GPIO0).
Se vc não quizer usar interrupção, vc pode ler o flag GPIF, no registrador INTCON, para ver se ouve mudança de estado nos ports (que estão habilidados no registrador IOC).