Tutorial Completo: Interrupções em Microcontroladores PIC

As interrupçõesInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. permitem que o microcontrolador pare o que está fazendo para responder imediatamente a um evento específico, como o transbordamento de um timer, a mudança em um pino de entrada ou um sinal externo. Neste tutorial, exploraremos como configurar e utilizar os principais tipos de interrupções nos microcontroladores PICPrimeiros Passos com PIC: Entendendo o Microcontrolador e suas VersõesPrimeiros Passos com PIC: Entendendo o Microcontrolador e suas VersõesAprenda sobre microcontroladores PIC com este guia completo. Conheça a teoria, as práticas de otimização e casos reais para aplicações embarcadas de sucesso.: TimerImplementando Timers e Contadores: Criação de Delays e Frequências de SaídaImplementando Timers e Contadores: Criação de Delays e Frequências de SaídaAprenda a configurar microcontroladores PIC com técnicas avançadas de timers, PWM e temporizadores, garantindo precisão e performance em sistemas embarcados., RB (mudança de estado nos pinos da porta B) e InterrupçõesInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. Externas.

Visão Geral das Interrupções🔗

O mecanismo de interrupçãoInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. em um PIC envolve:

1. A habilitação global de interrupçõesInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. (bit GIE no registradorArquitetura Básica: Registradores, Memória e Organização de DadosArquitetura Básica: Registradores, Memória e Organização de DadosDomine a arquitetura PIC com este guia prático. Aprenda concepções avançadas, manipulação de registradores e otimização para sistemas embarcados. apropriado).

2. A configuração individual de cada fonte de interrupçãoInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico..

3. A implementaçãoEstrutura de Código em C para PIC: Definições e Convenções EssenciaisEstrutura de Código em C para PIC: Definições e Convenções EssenciaisDescubra técnicas avançadas de programação em C para microcontroladores PIC. Aprenda otimização de memória, gestão de interrupções e depuração eficaz. da rotina de serviço de interrupção (ISR, Interrupt Service Routine).

Quando ocorre um evento de interrupçãoInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico., o programa principal é pausado e o fluxo de execução salta para a ISR. Após tratar a interrupçãoInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico., o microcontrolador retorna ao ponto de parada no programa principal.

Dica: Certifique-se de limpar as flags de interrupção dentro da ISR. Caso contrário, a interrupção poderá ser acionada repetidamente sem necessidade.

Interrupção por Timer🔗

Os timers são periféricosEntendendo a Arquitetura dos PIC: Memória, Registradores e PeriféricosEntendendo a Arquitetura dos PIC: Memória, Registradores e PeriféricosDescubra conceitos essenciais de arquitetura Harvard, memória, registradores e periféricos dos microcontroladores PIC para projetos eficientes. usados para medir intervalos de tempo ou gerar eventos periódicos. Quando ocorre o transbordo (overflow) ou a partida (match) de um timer, você pode habilitar uma interrupçãoInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. para tratar esse evento no instante em que ele ocorre.

Configuração Básica

Para configurar, por exemplo, o Timer0 em um PICExemplos Práticos em Assembly: Quando Vale a Pena Programar em Baixo NívelExemplos Práticos em Assembly: Quando Vale a Pena Programar em Baixo NívelExplore como a programação Assembly em PIC maximiza controle de hardware com alta eficiência, ideal para sistemas críticos e dispositivos de baixa energia. básico:

1. Ajuste o prescaler (divisor de frequência) conforme a taxa de incremento desejada.

2. Habilite a interrupçãoInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. do Timer0 (bit TMR0IE) e a flag global de interrupçõesInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. (bit GIE).

3. Defina o modo de operação (8 ou 16 bits, conforme disponível) configurando o registradorArquitetura Básica: Registradores, Memória e Organização de DadosArquitetura Básica: Registradores, Memória e Organização de DadosDomine a arquitetura PIC com este guia prático. Aprenda concepções avançadas, manipulação de registradores e otimização para sistemas embarcados. de controle do timer.

Exemplo de Código

#include <xc.h>
// Exemplo simplificado para Timer0 em PIC16F
void main(void) {
    // Configurações iniciais do Timer0
    OPTION_REGbits.PSA = 0;    // Prescaler ativado
    OPTION_REGbits.PS = 0b111; // Prescaler = 256
    TMR0 = 0;                  // Zera o registro do Timer0
    // Habilita interrupção do Timer0 e interrupções globais
    INTCONbits.TMR0IE = 1;
    INTCONbits.GIE = 1;
    while(1) {
        // Loop principal
    }
}
// Rotina de Interrupção
void __interrupt() isr(void) {
    // Verifica a fonte de interrupção
    if (INTCONbits.TMR0IF) {
        // Trate a interrupção do Timer0 aqui
        TMR0 = 0;               // Reinicia o Timer0
        INTCONbits.TMR0IF = 0;  // Limpa a flag de interrupção
    }
}
Observação: Para microcontroladores PIC18 ou outras famílias, a configuração do Timer e seus registradores pode variar. Consulte sempre o datasheet específico do seu modelo de PIC.

Interrupção por Mudança na Porta RB🔗

Alguns microcontroladores PICPrimeiros Passos com PIC: Entendendo o Microcontrolador e suas VersõesPrimeiros Passos com PIC: Entendendo o Microcontrolador e suas VersõesAprenda sobre microcontroladores PIC com este guia completo. Conheça a teoria, as práticas de otimização e casos reais para aplicações embarcadas de sucesso. possibilitam a detecção de mudança de estado (low → high ou high → low) nos pinos da Porta B (normalmente RB4 a RB7). Esse tipo de interrupçãoInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. é útil, por exemplo, quando se deseja monitorar botõesManipulando Portas de I/O: LEDs, Botões e Display 7-SegmentosManipulando Portas de I/O: LEDs, Botões e Display 7-SegmentosDescubra como configurar portas I/O do PIC para controlar LEDs, botões e displays 7 segmentos. Tutorial com explicações claras e exemplos em C práticos. ou sensoresUso das Portas I/O: Controlando LEDs, Displays e SensoresUso das Portas I/O: Controlando LEDs, Displays e SensoresAprenda a configurar portas, CDs, LEDs, displays, ADC e muito mais em sistemas PIC, com dicas de segurança, depuração e integração de sensores. digitais com detecção rápida de variação.

Configuração Básica

1. Configure como entrada os pinos de RB em que deseja detectar mudanças.

2. Habilite a interrupçãoInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. por Port-B Change (bit RBIE).

3. Habilite a flag global de interrupçõesInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. (bit GIE).

Importante: A leitura inicial dos pinos RB antes de habilitar a interrupção costuma ser essencial para evitar interrupções “fantasma”.

Exemplo de Código

void main(void) {
    // Configurar RB4~RB7 como entrada
    TRISBbits.TRISB4 = 1;
    TRISBbits.TRISB5 = 1;
    TRISBbits.TRISB6 = 1;
    TRISBbits.TRISB7 = 1;
    // Leitura inicial de PORTB para "limpar" estados
    volatile unsigned char dummy = PORTB;
    // Habilita interrupção por mudança de estado em RB e GIE
    INTCONbits.RBIE = 1;
    INTCONbits.GIE = 1;
    while(1) {
        // Loop principal
    }
}
// Rotina de Interrupção
void __interrupt() isr(void) {
    if (INTCONbits.RBIF) {
        // Se chegou aqui, algum pino RB4~RB7 mudou de estado
        volatile unsigned char dummy = PORTB; // Leitura para atualizar a mudança
        INTCONbits.RBIF = 0;                  // Limpa a flag de interrupção
    }
}

Interrupções Externas (INT0, INT1, INT2)🔗

Em muitos PICs, há pinos dedicados para interrupçõesInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. externas (por exemplo, INT0, INT1, INT2). Esses pinos podem acionar uma interrupçãoInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. na borda de subida, na borda de descida ou em ambos os casos, dependendo da configuração.

Configuração Básica

1. Selecione a fonte de interrupçãoInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. externa (por exemplo, INT0IE para o pino INT0).

2. Defina a borda de disparo (rising/falling) no registradorArquitetura Básica: Registradores, Memória e Organização de DadosArquitetura Básica: Registradores, Memória e Organização de DadosDomine a arquitetura PIC com este guia prático. Aprenda concepções avançadas, manipulação de registradores e otimização para sistemas embarcados. de controle correspondente (por exemplo, INTEDG0).

3. Habilite a flag global de interrupçõesInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico..

Uma tabela resumida dos bits mais comuns para esse tipo de configuração em microcontroladores PIC16/PIC18 é apresentada a seguir:

Bit/FlagDescrição
INT0IEHabilita a interrupção no pino INT0
INTEDG0Define se a interrupção ocorre em subida ou descida
INT0IFFlag de interrupção no pino INT0
GIEHabilita todas as interrupções

Exemplo de Código

void main(void) {
    // Configura a borda de subida (1) ou descida (0) em INT0
    OPTION_REGbits.INTEDG = 1; // Ex.: interrupção na borda de subida
    // Habilita interrupção externa INT0 e global
    INTCONbits.INT0IE = 1;
    INTCONbits.GIE = 1;
    while(1) {
        // Loop principal
    }
}
void __interrupt() isr(void) {
    if (INTCONbits.INT0IF) {
        // Trate aqui a interrupção externa em INT0
        INTCONbits.INT0IF = 0; // Limpa a flag para evitar repetição
    }
}

Boas Práticas e Cuidados🔗

Conclusão🔗

O uso de interrupçõesInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. TimerImplementando Timers e Contadores: Criação de Delays e Frequências de SaídaImplementando Timers e Contadores: Criação de Delays e Frequências de SaídaAprenda a configurar microcontroladores PIC com técnicas avançadas de timers, PWM e temporizadores, garantindo precisão e performance em sistemas embarcados., RB e Externas em microcontroladores PICPrimeiros Passos com PIC: Entendendo o Microcontrolador e suas VersõesPrimeiros Passos com PIC: Entendendo o Microcontrolador e suas VersõesAprenda sobre microcontroladores PIC com este guia completo. Conheça a teoria, as práticas de otimização e casos reais para aplicações embarcadas de sucesso. abre caminho para projetos mais eficientes, permitindo que o firmware responda de maneira imediata a eventos cruciais. Com essas técnicas, você poderá criar aplicações seguras, econômicas no uso de processamento e muito mais interativas com o mundo externo.

Sugerimos que você experimente habilitar cada tipo de interrupçãoInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. individualmente e observe o comportamento do programa em um simulador ou diretamente no hardware. A prática é fundamental para entender de forma mais profunda o mecanismo de interrupçõesInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosInterrupções (Interrupts) em PIC: Conceitos, Configuração e ExemplosAprenda os segredos das interrupções em sistemas PIC. Domine técnicas avançadas, gestão de múltiplas interrupções e otimização para desempenho crítico. e seu impacto no fluxo de execução em sistemas embarcados.

Boas experimentações e estudos com os PICsEvolução dos PIC: Tendências, Desafios e Perspectivas FuturasEvolução dos PIC: Tendências, Desafios e Perspectivas FuturasDescubra a evolução dos microcontroladores PIC, desde os modelos 8 bits até as avançadas soluções de 32 bits, destacando tendências e desafios.!

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados