Interrupções?

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Interrupções?

Mensagempor Vonnilmam » 08 Set 2008 10:00

Saudações a todos,

Prezados colegas, para falar a verdade numca utilizei interrupção a não ser nos ultimos tempos utilizei a do TMR0....

Porém estou querendo utilizar duas interrupções: TMR0 e a externa pelo RB0, minha curiosidade é a seguinte:

Se houver uma chamada de interrupção pelo TMR0 e o mesmo tiver excutando essa chamada e exatamente nesse instante houver uma outra chamada pelo RB0 o que acontece?

- Será que após o TMR0 sair da sua chamada pelo RETFIE o MCU entende que há outra interrupçao pendende no caso a do RB0 e a atende voltando ao vetor de interrupão.

NOTA: entendemos que a segunda interrupção aconteceu exatamente dentro da excução da primeira interrupção, passando do ponto de checagem dos flags pertinentes a cada uma delas como é de praxe...

P.S. eu numca tive essa curiosidade de fazer esse teste na pratica, bem porque numca precisei, mas agora tenha essa necessidade e gostaria de compartilhar com o conhecimento dos colegas...

Muito obrigado,
Vonnilmam
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Mensagempor Sergio38br » 08 Set 2008 10:22

bom dia, pelo que conheço do PIC, mesmo vc estando dentro da rotina de interrupção os flag de sinalização das outras é ativado, o correto é antes de sair das rotinas de interrupção, verifique os outros flags, com uma rotina de scan. e trate-os. A unica coisa que pode atrapalhar é caso vc queira detectar uma largura de pulso que esteja entrando pelo RB0, pois não existe meio de saber a quanto tempo ela ficou pendurada..

[ ]'s
Sergio
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP

Mensagempor leoabubauru » 08 Set 2008 13:40

Vonnilmam, é possível, sim, trabalhar com as duas. Basta que elas estejam habilitadas e o bit de habilita int (global) não seja desligado durante o tratamento da primeira. Assim que uma termina o processador tratará imediatamente a outra.
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!
leoabubauru
Byte
 
Mensagens: 227
Registrado em: 21 Nov 2006 19:08
Localização: São Paulo

Mensagempor Sergio38br » 08 Set 2008 16:41

boa tarde, MKpic , qdo vc esta dentro das rotinas de interrupção desconheço algum compilador que não desligue o GIE, tem de ficar atento para os flags habilitados das outras interrupções antes de sair das rotinas de tratamento.

[ ]'s
Sergio
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP

Mensagempor Vonnilmam » 08 Set 2008 23:05

É, muito interessante essa coisa, desde já agradeço a todos vocês pela atenção...

No meu caso vou dar prioridade para a interrupção do RB0, visto que essa port irá ter que ler um pulso, no caso irá ler o código "manchester" portanto é de suma importancia toda a atenção nesse port, e o timer 0 irei utilizar para dar o tempo de refreshe de 4 displays 7segs.

Mas a idéia de se utilizar a leitura "scan" dos flags ao final da rotina principal que esta dentro da interrupção é uma boa jogada...

Muito obrigado,
Vonnilmam....

NOTA: Em breve postarei aquí os resultados, porque acho interessante essa observação para efeito didatico...
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial


Voltar para PIC

Quem está online

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

cron

x