Aprenda Timers e PWM no PIC: Tutorial Completo em Ação

Um dos recursos mais poderosos e versáteis dos 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. é o uso de TimersImplementando 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. e PWM (Pulse Width ModulationCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso.). Ambos permitem a criação de aplicações de controle de tempo, geração de sinais, acionamento de motores e diversas outras funcionalidades essenciais em projetos de engenharia e automação. A seguir, exploraremos de forma detalhada como os TimersImplementando 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. funcionam, como configurá-los e como tirar proveito das características do PWM para criar soluções eficazes.

Visão Geral dos Timers🔗

Os TimersImplementando 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. são periféricos internosEntendendo 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. do PIC que contam pulsos de clock, podendo operar com ou sem prescaler para ajustar a velocidade de contagem. Cada Timer é identificado por um número (Timer0, Timer1, Timer2 etc.) e possui características particulares em termos de largura (8 ou 16 bits), modo de operação, fontes de clock e opções de interrupção.

Principais Aplicações de Timers

Componentes Fundamentais de um Timer

Um ponto essencial para entender nos TimersImplementando 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. do PIC é o prescaler, que divide a frequência de clock de entrada para tornar as contagens mais lentas e permitir intervalos de tempo maiores.

Exemplo de Tabela de Prescaler (ilustrativo)

PrescalerFator de DivisãoFrequência vista pelo Timer
1:11Igual ao clock do MCU
1:22Metade do clock do MCU
1:441/4 do clock do MCU
1:881/8 do clock do MCU

Configuração e Uso de Interrupções🔗

Uma das grandes vantagens do uso dos TimersImplementando 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. é a capacidade de gerar 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. quando ocorrem eventos de transbordo (overflow) ou quando a contagem atinge um valor pré-determinado em registradoresArquitetura 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 comparação. Isso permite que o microcontrolador execute tarefas em tempo real ou em intervalos regulares, sem precisar verificar constantemente o valor do Timer no loop principal.

Para habilitar 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. de um Timer, geralmente seguimos estes passos:

1. Configurar o modo de operação do 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. (fonte de clock, prescaler, etc.).

2. Habilitar a interrupção 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 do Timer (por exemplo, TMR2IE, TMR1IE…).

3. Ativar o bit global de interrupção (GIE) e o bit 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. periférica (PEIE) no PIC.

4. Implementar a rotina de interrupção, verificando qual Timer gerou 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. e executando o código desejado.

Introdução ao PWM (Pulse Width Modulation)🔗

O PWMCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso. é uma forma de criar sinais periódicos variando o tempo em que o sinal permanece em nível alto (duty cycleCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso.). Em outras palavras, o PWM permite controlar a porcentagem de tempo em nível alto em cada período de sinal. Esse conceito é fundamental em aplicações como:

Módulos CCP e ECCP

Em muitos modelos de 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., a geração de PWM é feita pelos módulos CCP (Capture/Compare/PWMCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso.) ou ECCP (Enhanced CCPCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso.). Esses módulos estão associados a um 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. (dependendo do dispositivo, normalmente o Timer2 ou Timer4) que funciona como base de tempo para o PWMCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso.. A configuração típica envolve:

Para determinar a frequência do PWMCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso. (f_PWM), normalmente utilizamos a seguinte fórmula para Timer2:

$$ f_{PWM} = \frac{F_{OSC}}{4 \times (Prescaler) \times (1 + PR2)} $$

onde:

Já o duty cycleCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso. é definido pelos bits mais significativos em CCPRxL e pelos bits menos significativos em CCPxCONCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso. (DCPx bits). De forma simplificada:

$$ DutyCycle = \frac{(CCPRxL : DCPx\_bits) \times T_{OSC} \times (Prescaler)}{1} $$

Lembrando que detalhes de nomenclatura e funcionamento podem variar levemente de acordo com a família 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. (PIC16, PIC18, etc.), mas o princípio geral se mantém.

Exemplo Prático de Configuração de PWM🔗

A seguir, apresentamos um pequeno exemplo em C (usando o compilador XCInstalação e Configuração do MPLAB X IDE e do Compilador XCInstalação e Configuração do MPLAB X IDE e do Compilador XCAprenda passo a passo a instalar e configurar o MPLAB X IDE e os compiladores XC para desenvolver projetos com microcontroladores PIC de forma eficiente.) que configura o Timer2 e um módulo CCPCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso. para gerar um sinal PWM na saída CCP1 de 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. genérico. Nesse caso, vamos supor um clock de 8 MHz e que queremos uma frequência de PWM de aproximadamente 2 kHz.

Passo a Passo

1. Definir a frequência do PWMCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso.: 2 kHz.

2. Calcular PR2CCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso.:

  • Usando a fórmula:
$$ f_{PWM} = \frac{F_{OSC}}{4 \times (Prescaler) \times (1 + PR2)} $$
$$ PR2 = \frac{F_{OSC}}{4 \times Prescaler \times f_{PWM}} - 1 $$
  • Substituindo valores:
$$ PR2 = \frac{8\,000\,000}{4 \times 16 \times 2\,000} - 1 = 61 $$

3. Definir o Duty CycleCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso.: vamos supor 50% apenas como exemplo inicial. Se usarmos 10 bits para o duty cycleCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso. no CCP, metade do valor máximo seria 512 em decimal. Desmembramos esse valor em 8 bitsEvoluçã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. principais para CCPR1L e 2 bits para CCP1CONArquitetura 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..

Código de Exemplo

#include <xc.h>
// Configurações de Fuses omitidas para brevidade.
void main(void) {
    // Passo 1: Configurar TRIS para a saída CCP1 no pino apropriado
    TRISCbits.TRISC2 = 0; // Exemplo para PIC16F877A, onde CCP1 está em RC2
    // Passo 2: Ajustar Timer2
    PR2 = 61;            // Valor calculado para gerar ~2 kHz
    T2CONbits.T2CKPS = 0b10; // Prescaler = 16
    TMR2 = 0;            // Zera o Timer2
    // Passo 3: Configurar CCP1 para PWM e Duty Cycle ~50%
    CCP1CONbits.CCP1M = 0b1100; // Modo PWM
    // Valor do Duty Cycle (aprox. 512)
    CCPR1L = 0x80;             // 0x80 = 128 decimal; bits mais significativos
    CCP1CONbits.DC1B = 0b00;   // Bits menos significativos
    // Passo 4: Ligar Timer2
    T2CONbits.TMR2ON = 1;
    while(1) {
        // Loop principal: o PWM segue ativo em hardware
        // Pode-se ajustar CCPR1L / DC1B em tempo de execução para variar Duty Cycle
    }
}

Nesse código, a linha CCPR1L = 0x80; junto com DC1B = 0b00; coloca o duty cycleCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso. em aproximadamente 50%. Para valores diferentes, basta alterar o valor de CCPR1L e DC1B de acordo com a resoluçãoADC (Conversor Analógico-Digital): Lendo Valores Analógicos em PICADC (Conversor Analógico-Digital): Lendo Valores Analógicos em PICAprenda a configurar o ADC de microcontroladores PIC de forma avançada explorando teoria, implementação prática e técnicas de otimização para leituras precisas. da PWM (neste caso, 10 bits).

Dicas e Boas Práticas🔗

1. Escolha Correta de 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.: Alguns Timers podem ser 16 bits, mais adequados a temporizaçõesImplementando 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. mais longas. Outros, de 8 bits, são mais simples para geração de PWM de maior frequência.

2. Cuidados com Prescaler: Verifique se o prescaler escolhido permite o ajuste fino tanto da frequência quanto do duty cycleCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso. desejados.

3. 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.: Caso seja necessário alterar parâmetros do PWM dinamicamente ou monitorar limites, configure e utilize 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. do Timer responsável pela base de tempo.

4. Documentação: Cada família de PIC tem peculiaridades nas configurações de registradoresArquitetura 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.. Consulte sempre o datasheet do microcontrolador.

Conclusão🔗

Os TimersImplementando 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. e o PWMCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosCCP e PWM: Geração de Sinais para Controle de Motores e Outros DispositivosAprenda a configurar e otimizar módulos CCP/PWM em microcontroladores PIC com exemplos práticos, cálculos detalhados e técnicas avançadas para controle preciso. são recursos fundamentais para vários tipos de aplicações que exigem tanto controle de tempo quanto geração precisa de sinais. Dominá-los permite criar soluções robustas e eficientes, desde o simples controle de LEDUso 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. até o acionamento de motores em complexos sistemas de automação.

Ao compreender como configurar, ajustar prescalers, definir registradores de período e duty cycle, você estará apto a tirar o máximo proveito desses periféricos. O próximo passo natural é explorar projetos práticosUso 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. que integrem Timers e PWM com outros recursos do PIC, tornando seus sistemas cada vez mais sofisticados e versáteis.

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