

O maior inimigo do conhecimento não é a ignorância, mas sim a ilusão de que conhecemos. (Stephen Hawking)

INTERRUPÇÕES
Interrupções, diferentemente do que o nome sugere, não é em hipótese alguma, a parada de execução das atividades do PIC como, por exemplo, um RESET que volta tudo do início, “matando” seu código que estava em execução (a não ser que você programe para isso). Interrupções são programas ou funções que trabalham em sincronia com o programa principal e que em um determinado momento são ativadas executando alguma ação que foi programada e depois voltando às execuções do código principal. Por exemplo, você tem um programa rodando e que só será feita determinada tarefa quando alguém apertar um botão, portanto seria inviável fazer um programa que fique verificando quando alguém aperta ou não esse botão, afinal iria causar vários transtornos em seu código e até atrasos de respostas. Por isso as interrupções (que são funções externas) são métodos mais viáveis para este tipo de situação pois não trabalham dentro do código principal mas por outro lado trabalham em sincronia com este evitando atrasos de respostas e possíveis inconvenientes em seus projetos. Vamos seguir que no decorrer das aulas entenderemos melhor.
Os microcontroladores PIC, a depender de cada um, detém de várias interrupções. As mais comuns serão apresentadas e conhecidas no decorrer desta aula. De qualquer forma vamos adiantar que as aulas sobre interrupções contarão com o PIC18F2550 que possui as interrupções principais e mais usadas, ou seja, a maioria delas estão neste PIC.
Para vermos as interrupções que estão ao nosso favor, vamos abrir o nosso PIC C Compiler e vamos na aba View e depois clicamos em Valid Interrupts como mostra a figura abaixo.
Após o clique irá abrir a janela que lista todas as interrupções dependendo do PIC. Vamos selecionar o PIC 18F2550.
Você verá que esse microcontrolador possui 21 interrupções que são bastante, diga-se de passagem, sendo esse o motivo de abordarmos somente ele, afinal estaremos falando sobre os outros também.
As interrupções mais utilizadas são as interrupções por TIMER que são um tipo de interrupção que é acionada conforme um tempo pré-determinado, por exemplo: estou rodando meu programa principal e a cada dois segundos eu quero mostrar algum texto na tela. As interrupções por TIMER são listadas logo no começo, são elas: RTCC, TIMER0, TIMER1, TIMER2, TIMER3.
Vamos a outras interrupções mais importantes:
Interrupções Externas – EXT, EXT1, EXT2: É um tipo de interrupção que é acionada por um periférico externo, como um botão, por exemplo: estou querendo realizar uma atividade após três pressões em um botão.
Interrupções das portas B – RB: É um tipo de interrupção qualquer mas que só é realizada pelas portas B do nosso microcontrolador.
Interrupções AD: Só é realizada quando a conversão analógica para digital é completada e podemos pensar nesta como um sistema de segurança para nossa conversão.
Interrupção RDA: É acionada quando algum dado está disponível para envio pela porta serial via RS-232.
Interrupção TBE: É realizada quando verifica-se que todos os dados do buffer já foram enviados evitando assim o envio de sujeira pela porta serial via RS-232.
Interrupção SSP: Quando os protocolos de comunicação SPI e I2C estão ativados.
Interrupção BUSCOL: Quando há alguma colisão de dados na minha comunicação quando estou utilizando periféricos externos trabalhando juntos.
Interrupção LOWVOLT: Acionada quando verifica-se uma baixa voltagem.
As outras interrupções não são muito usadas e portanto não vamos nos aprofundar nelas, até mesmo algumas interrupções listadas não serão mostradas nas nossas aulas, afinal poucos vamos usá-las e para dar foco e tempo às interrupções mais importantes esse será nosso método adotado.
Vamos dar foco às interrupções por TIMER e as interrupções Externas.

