Você está na página 1de 28

Timers em Microcontroladores PIC16F877A.

Alunos: Anderson Rocha, Joo de Deus, Ycaro Felipe.

Roteiro
Introduo Timers. Timers do PIC 16F877A. Concluses. Referncias.

Introduo
Todo microcontrolador possui um clock implementado por um cristal oscilador que sincroniza todo seu funcionamento. Os timers utilizam o clock do microcontrolador para implementar contagens e medio de tempo. A contagem pode ser utilizada em diversas aplicaes, como contagem de tempo, controle de amostragem de dados analgicos entre outros.

Timers
Segundo (Assef, 2006) So contadores digitais assncronos, que para funcionar precisam receber pulsos de clock. Timers so estruturas presentes em micro controladores que possibilitam descrever tempo em funo de ciclos de clock. Podem funcionar na mesma frequncia do ciclo de clock da instruo do microcontrolador, e utilizar um divisor de frequncia programvel chamado prescaller.

Os contadores alm realizar contagem podem tambm ser usados como divisores de frequncia.

Os PICs possuem duas fontes primrias de clock: (1) clock interno fosc/4 ou (2) clock externo diretamente ligado no pino do timer, cuja posio varia de acordo com o PIC utilizado. Os PICs possuem basicamente tres timers: TIMER0, TIMER1,TIMER2.

Diagrama do TIMER0 do PIC:

O bit de configurao T0CS seleciona o clock, bit T0SE seleciona borda de descida ou subida.

Timers do PIC 16F877A.

Timer0
Caractersticas:
Contador/Temporizador de 8 bits. Prescaler de 8 bits programado via software. Seleo de clock interno/externo. Interrupo no estouro de 00h ate ffh. Seleo de borda para o clock (Descida/Subida). Utiliza o pino RA4 como entrada para o clock externo.

Para utilizar o timer0 deve-se configurar o registrador OPTION_REG.

O modo timer selecionado zerando o bit TOSC, OPTION_REG<5>, onde nesse modo o timer ser incrementado a cada ciclo de clock. O modo contador selecionado setando o bit TOSC em 1, onde nesse modo o TIMER0 ser incrementado a cada subida/descida do clock na porta RA4/T0CKI.

Para determinar a borda de incremento do contador, preciso configurar o bit T0SE OPTION_REG<4>, onde setando-o como 0 seleciona incremento na borda de descida do clock, setando 1, borda de subida. Interrupes no timer0 ocorrem quando acontece um overflow na contagem (podendo variar de 0 at 255), este overflow seta o bit TMR0IF no registrador INTCON<2>, onde caso o bit TMR0IE esteja habilitado em INTCON<5>, ocorre a interrupo, podendo ser desabilitada zerando este bit. Para que uma nova interrupo ocorra o bit TMR0IF deve ser zerado ao final da rotina de interrupo.

As vezes para permitir realizar maiores contagens, e dividir a frequncia do clock, utilizase a estrutura prescaler. O prescaler compartilhado pelo timer0 e pelo watchdog, logo preciso zerar o bit PSA em OPTION_REG<3>, para ele ser usado pelo timer. Alm de definir o prescaler para ser utilizado pelo timer0, ainda necessrio configurar a diviso a ser realizada, como h trs bits (OPTION_REG<2:0>) logo possumos 8 opes para diviso do clock.

Timer1
O mdulo temporizador/contador timer1, possui as seguintes caractersticas:
Contador/temporizador de 16 bits, consistindo de 2 registradores (TMR1H e TMR1L). Possui prescaler programvel via software. Permite selecionar clock interno(4Mhz) ou externo. A interrupo ocorre no estouro do intervalo de 0000h at ffffh (0 a 65535).

Pode ser operado de dois modos: Como contador, ou como temporizador. Para isso caso seja setado o bit TMR1CS(T1CON<1>) ele funcionar como timer e incrementar a cada ciclo de clock, caso contrrio ele ser um contador e contar a cada subida/descida do clock. O timer1 pode ser habilitado ou desabilitado setando/zerando o bit de controle TMR1ON (T1CON<0>). A interrupo para o timer1 ocorre quando acontece o overflow, e o bit flag da interrupo setado TMR1IF (PIR<1>)=1, esta interrupo pode ser habilitada/desabilitada setando/zerando o bit TMR1. Caso necessite repetir, ou realizar vrias vezes a contagem, o flag TMR1IF deve ser resetado no cdigo.

Prescaler Divisor de frequncia.


Assim como para o Timer0, podemos utilizar o prescaler do Timer1 para realizar divises de frequncia do sistema de clock. Em:<http://www.microcontrollerboard.com/p ic-timer1-tutorial.html>. Acesso em: 28 de Maio 2012.), O tamanho do registrador do prescaler do timer1 de 2 bits, logo s podem ser realizadas 4 divises: 1:1, 1:2,1:4,1:8.

Estrutura do Registrador T1CON

Calculo dos valores de Count, fout, e Timer1.


Caso esteja utilizando o oscilador interno como clock:

Fout Frequencia de sada depois da diviso. Tout Ciclo de tempo depois da diviso. 4 Diviso original do clock(4Mhz) por 4, isso quando se est utilizando o clock interno. (65536-TMR1) Numero de vezes que o timer ir contar baseado no registrador TMR1.

Supondo que queiramos contar 2 segundos, qual o valor do count precisamos estabelecer? Supondo-se prescaler 1:1, e TMR1 = 0.

Timer2
Caractersticas:
Possui dois registradores de 2 bits (TMR2 e PR2). Possui um prescaler e um postscaler. Conecta somente ao clock interno 4Mhz. Sua interrupo ocorre ao acontecer um overflow.

O registrador TMR2 usado o valor inicial da contagem. (valor do qual a contagem iniciada). O registrador PR2 usado para armazenar o valor final da contagem. (valor mximo que ns precisamos chegar) Usando o timer2 podemos determinar o valor do count inicial, o valor do count final, e a contagem ser entre esses dois valores. O timer2 incrementa de 00h at ser comparado com PR2, e ento resetado para 00h no prximo ciclo de clock

Prescaler e Postcaler
O timer2 um timer de 8 bits que possui um prescaler, e um postcaler. Cada um permite fazer uma diviso adicional do clock da fonte. Prescaler - Divide a frequncia antes da contagem ser realizada no TMR2. A sada da comparao de TMR2 atravessa um postcaler de 4-bits para gerar uma interrupo TMR2. Postcaler Divide a frequncia que sai do comparador pela ltima vez.

Representao do Prescaler e Poscaler.

Registrador de Controle do Timer2

A clock de entrada (FOSC/4) tem opo de prescaler de: 1:1, 1:4, 1:16, selecionado pelos bits de controle T2CKPS1:T2CKPS0 (T2CON<1:0>).
00 = Prescaler 1 01=Prescaler 4 1x = Prescaler 16

TMR2ON bit de ativao do timer


O timer2 pode ser desligado zerando o bit de controle TMR2ON (T2CON<2>), para minimizar o consumo de energia.
1 = Timer2 ligado. 0 = Timer2 desligado.

TOUTPS3:TOUTPS0 -Selecionando sada do postcale.


A sada da comparao de TMR2 passa por um postcaler de 4 bits (que dado de 1:1 at 1:16), selecionado pelos bits de controle TOUTPS3:TOUTPS0 (T2CON<6:3>).
0000 = 1:1 postscale

0001 = 1:2 postscale


0010 = 1:3 postscale 1111 = 1:16 postscale

Como calcular valores requeridos no Timer2.

Fout frequncia de sada aps a diviso. Tout tempo de ciclo aps diviso. 4 A diviso do clock original (4Mhz), quando usado clock interno. Count valor numrico para se alocado para obtera frequencia de sada desejada fout. (PR2-TMR2) Numero de vezes que o contador ir contar.

Consideraes Finais
A utilizao de timers permite realizar controle de operaes que envolvem tempo (sinais A/D, leitura de dados externos, entre outros). Atravs dos timers possvel contar tempo sem travar o microntrolador para isso, essa forma mais eficiente que o uso da funo delay.

Referncias
Em: <http://www.microcontrollerboard.com/pictimer0-tutorial.html> Acesso em: 28 Maio 2012. (ASSEF, Amauri.Timers. Em:<http://pessoal.utfpr.edu.br/amauriassef/>. Acesso em: 28 de Maio de 2012.) Microchip 2003 ,PIC 16F877A Datasheet, em: www.microchip.com.br Acesso em: 27/05/2012.