INTERRUPT-ON-CHANGE

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

INTERRUPT-ON-CHANGE

Mensagempor Mersin » 12 Jan 2007 09:53

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?
Mersin
Mersin
Byte
 
Mensagens: 121
Registrado em: 22 Out 2006 13:07
Localização: Goiânia

Mensagempor ric_vas » 12 Jan 2007 10:08

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
ric_vas
Nibble
 
Mensagens: 93
Registrado em: 11 Out 2006 22:22
Localização: RS

Mensagempor andre_luis » 12 Jan 2007 10:56

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...


+++
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor Mersin » 12 Jan 2007 13:27

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?
Mersin
Mersin
Byte
 
Mensagens: 121
Registrado em: 22 Out 2006 13:07
Localização: Goiânia

Mensagempor ric_vas » 12 Jan 2007 15:07

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 :D
ric_vas
Nibble
 
Mensagens: 93
Registrado em: 11 Out 2006 22:22
Localização: RS

Mensagempor Rota » 13 Jan 2007 14:53

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).
Rota
Byte
 
Mensagens: 116
Registrado em: 16 Nov 2006 21:29


Voltar para PIC

Quem está online

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

cron

x