Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Como Utilizar o Prescaler em Microcontroladores Microchip

O prescaler é um componente fundamental em sistemas de temporização e contagem em microcontroladores, especialmente em ambientes de microchip. Ele permite a divisão da frequência do clock, tornando possível a utilização de temporizadores e contadores para uma ampla gama de aplicações, desde a geração de delays até a medição de eventos. Este artigo explicará a importância do prescaler, como ele funciona e como configurá-lo em microcontroladores Microchip, utilizando exemplos práticos.

O prescaler é essencial para ajustar a frequência do clock a um valor adequado para o temporizador ou contador, permitindo uma maior flexibilidade e precisão no controle de tempo. Em microcontroladores Microchip, como os da família PIC, o prescaler pode ser configurado para diferentes valores, permitindo uma divisão precisa da frequência do clock.

Exemplos:

  1. Configuração do Prescaler em um Temporizador PIC16F877A:
#include <xc.h>

// Configuração do oscilador
#pragma config FOSC = HS
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config BOREN = ON
#pragma config LVP = OFF
#pragma config CPD = OFF
#pragma config WRT = OFF
#pragma config CP = OFF

void main() {
    // Configuração do prescaler para o Timer0
    OPTION_REGbits.T0CS = 0; // Seleciona o clock interno
    OPTION_REGbits.PSA = 0;  // Prescaler atribuído ao Timer0
    OPTION_REGbits.PS = 0b111; // Prescaler de 1:256

    // Configuração do Timer0
    TMR0 = 0; // Inicializa o Timer0
    INTCONbits.TMR0IE = 1; // Habilita a interrupção do Timer0
    INTCONbits.GIE = 1; // Habilita as interrupções globais

    while (1) {
        // Loop principal
    }
}

void __interrupt() ISR() {
    if (INTCONbits.TMR0IF) {
        // Código de tratamento da interrupção do Timer0
        TMR0 = 0; // Reinicia o Timer0
        INTCONbits.TMR0IF = 0; // Limpa a flag de interrupção do Timer0
    }
}
  1. Configuração do Prescaler em um Temporizador PIC18F4550:
#include <xc.h>

// Configuração do oscilador
#pragma config FOSC = HS
#pragma config WDTEN = OFF
#pragma config PWRTEN = OFF
#pragma config BOREN = ON
#pragma config LVP = OFF
#pragma config CPD = OFF
#pragma config WRT = OFF
#pragma config CP = OFF

void main() {
    // Configuração do prescaler para o Timer0
    T0CONbits.T0CS = 0; // Seleciona o clock interno
    T0CONbits.PSA = 0;  // Prescaler atribuído ao Timer0
    T0CONbits.T0PS = 0b111; // Prescaler de 1:256

    // Configuração do Timer0
    TMR0 = 0; // Inicializa o Timer0
    INTCONbits.TMR0IE = 1; // Habilita a interrupção do Timer0
    INTCONbits.GIE = 1; // Habilita as interrupções globais
    T0CONbits.TMR0ON = 1; // Liga o Timer0

    while (1) {
        // Loop principal
    }
}

void __interrupt() ISR() {
    if (INTCONbits.TMR0IF) {
        // Código de tratamento da interrupção do Timer0
        TMR0 = 0; // Reinicia o Timer0
        INTCONbits.TMR0IF = 0; // Limpa a flag de interrupção do Timer0
    }
}

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.