Microcontroladores PIC – Timer0 2


Timer

Olá pessoal! No artigo de hoje vamos aprender um pouco mais sobre os microcontroladores PIC. Nossa aula trará um exemplo de configuração e utilização do Timer0. Lembrando que estamos utilizando o PIC 16F628A.

Conforme seu datasheet, algumas características que o temporizador/contador TIMER0 do 16F628A possui são as seguintes:

 

– Temporizador / Contador de 8 bits;

– Software Prescaler programável;

– Seleção de clock interno ou externo;

– Borda de seleção para clock externo.

 

Código

Nosso Objetivo: Tempo de estouro de 2 segundos.

 

Registradores

 

Vamos analisar o código passo a passo. Analisaremos os registradores utilizados para o exemplo do Timer 0. No datasheet do microcontrolador, na página 25 você encontrará as seguintes informações referentes ao registrador OPTION_REG:

 

Option_Reg

Figura 1 – Registrador OPTION_REG

 

Veja então que configuramos o registrador da seguinte forma:

OPTION_REG = 0x82;

O valor hexadecimal 0x82 é a mesma coisa que o valor em binário 0b10000010. Por isso, observe que estamos colocando o valor de 1 no bit 7 e o valor de 1 no bit 1. Em outras palavras, significa que estamos desabilitando os resistores de pull-up e configurando o prescaler para 1:8, conforme você pode conferir na figura anterior.

Os outros valores que estão com 0, você também pode conferir na figura anterior o que cada um significa. O prescaler entra no cálculo que você verá mais adiante.

Outro registrador utilizado é o INTCON. Veja na figura abaixo, as informações retiradas do datasheet.

 

INTCON

Figura 2 – Registrador INTCON

 

No programa, estamos configurando os bits de forma individual. Poderíamos fazer também da mesma forma como foi feito com o OPTION_REG, de uma só vez, não tem problema. Conforme as informações no datasheet, iremos atribuir 1 ou 0 para os bits correspondentes. O registrador TMR0 faz as vezes da contagem. Como tem 8 bits, ele poderá contar de 0 a 255. No código definimos o seu valor inicial, ou seja, ele irá começar a contar a partir de 0x06.

 

GIE_bit    = 0x01;        Irá habilitar a interrupção global

PEIE_bit  = 0x01;        Irá habilitar a interrupção por periféricos

T0IE_bit  = 0x01;        Irá habilitar a interrupção por estouro do TMR0

TMR0 = 0x06;             Inicialização da contagem em 0x06

 

Quando ocorre o estouro da contagem, é reiniciado o processo. O bit atrelado a essa situação é o T0IF. Quando ocorre esse estouro é chamado uma rotina denominada no mikroC como void interrupt ().

Dentro dessa função você então irá testar a flag T0IF e em seguida escrever o código que você deseja. No nosso exemplo estamos incrementando uma variável counter. Após, atribuímos novamente o valor de inicialização para o TMR0 e zeramos a flag T0IF. Abaixo você pode ver os passos referentes a esta explicação.

 

 

Cálculo do tempo

 

Ao desenvolver o timer, você pode efetuar o cálculo do tempo da seguinte forma:

 

Calculo

Figura 3 – Cálculo do Tempo Total

 

Veja na tabela abaixo, onde você tem os tempos já “mastigados” de acordo com o prescaler e o cristal que utilizar. Lembrando que para os valores abaixo, considerei o tempo inicial igual a zero.

TabelaClock

Tabela 1 – Valores de acordo com a configuração utilizada

 

Vamos então rever o código. Nosso objetivo é calcular o estouro do timer a cada 2 segundos. Como estou utilizando um cristal de 4 MHZ, pela tabela anterior, de cara já posso ver que tenho um valor de 2,048 ms caso eu configure o prescaler em 1:8.

Ora, se fizéssemos o cálculo desse valor de 2,048 ms (milissegundos) * 1000, teríamos algo muito próximo do nosso tempo de 2 segundos.Por este motivo utilizamos este valor na condição da variável counter.

Para ficar mais preciso, iniciamos o registrador TMR0 em 0x06, ao invés de 0x00. Com isso o novo cálculo ficaria da seguinte forma:

Calculo2

Figura 4 – Cálculo do Exemplo

 

Simulação

EsquemaCircuito

Figura 5 – Circuito

 

CapturaTempo

Figura 6 – Tempo

 

 

TimerGif

Figura 7 – Simulação

Inscreva-se para ficar atualizado!

Inscreva-se agora e fique por dentro das novidades do site

Fique tranquilo, respeitamos sua privacidade!


Deixe um comentário

O seu endereço de e-mail não será publicado.

2 pensamentos em “Microcontroladores PIC – Timer0