Timers Em Microcontroladores

28
Timers em Microcontroladores PIC16F877A. Alunos: Anderson Rocha, João de Deus, Ycaro Felipe.

Transcript of Timers Em Microcontroladores

Page 1: Timers Em Microcontroladores

Timers em Microcontroladores PIC16F877A.

Alunos: Anderson Rocha, João de Deus, Ycaro Felipe.

Page 2: Timers Em Microcontroladores

Roteiro

• Introdução• Timers.• Timers do PIC 16F877A.• Conclusões.• Referências.

Page 3: Timers Em Microcontroladores

Introdução

• 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 medição de tempo.

• A contagem pode ser utilizada em diversas aplicações, como contagem de tempo, controle de amostragem de dados analógicos entre outros.

Page 4: Timers Em Microcontroladores

Timers

• Segundo (Assef, 2006) “São contadores digitais assíncronos, que para funcionar precisam receber pulsos de clock”.

• Timers são estruturas presentes em micro controladores que possibilitam descrever tempo em função de ciclos de clock.

• Podem funcionar na mesma frequência do ciclo de clock da instrução do microcontrolador, e utilizar um divisor de frequência programável chamado prescaller.

Page 5: Timers Em Microcontroladores

• Os contadores além realizar contagem podem também ser usados como divisores de frequência.

Page 6: Timers Em Microcontroladores

• Os PICs possuem duas fontes primárias de clock: (1) clock interno fosc/4 ou (2) clock externo diretamente ligado no pino do timer, cuja posição varia de acordo com o PIC utilizado.

• Os PICs possuem basicamente tres timers: TIMER0, TIMER1,TIMER2.

Page 7: Timers Em Microcontroladores

• Diagrama do TIMER0 do PIC:

• O bit de configuração T0CS seleciona o clock, bit T0SE seleciona borda de descida ou subida.

Page 8: Timers Em Microcontroladores

Timers do PIC 16F877A.

Page 9: Timers Em Microcontroladores

Timer0

• Características:– Contador/Temporizador de 8 bits.– Prescaler de 8 bits programado via software.– Seleção de clock interno/externo.– Interrupção no estouro de 00h ate ffh.– Seleção de borda para o clock (Descida/Subida).– Utiliza o pino RA4 como entrada para o clock

externo.

Page 10: Timers Em Microcontroladores

• 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.

Page 11: Timers Em Microcontroladores

• 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.

• Interrupções 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 interrupção, podendo ser desabilitada zerando este bit.

• Para que uma nova interrupção ocorra o bit TMR0IF deve ser zerado ao final da rotina de interrupção.

Page 12: Timers Em Microcontroladores

• As vezes para permitir realizar maiores contagens, e dividir a frequência do clock, utiliza-se 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.

• Além de definir o prescaler para ser utilizado pelo timer0, ainda é necessário configurar a divisão a ser realizada, como há três bits (OPTION_REG<2:0>) logo possuímos 8 opções para divisão do clock.

Page 13: Timers Em Microcontroladores

Timer1

• O módulo temporizador/contador timer1, possui as seguintes características:– Contador/temporizador de 16 bits, consistindo de

2 registradores (TMR1H e TMR1L).– Possui prescaler programável via software.– Permite selecionar clock interno(4Mhz) ou

externo.– A interrupção ocorre no estouro do intervalo de

0000h até ffffh (0 a 65535).

Page 14: Timers Em Microcontroladores

• 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 contrário 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 interrupção para o timer1 ocorre quando acontece o overflow, e o bit flag da interrupção é setado TMR1IF (PIR<1>)=‘1’, esta interrupção pode ser habilitada/desabilitada setando/zerando o bit TMR1. Caso necessite repetir, ou realizar várias vezes a contagem, o flag TMR1IF deve ser resetado no código.

Page 15: Timers Em Microcontroladores

Prescaler Divisor de frequência.

• Assim como para o Timer0, podemos utilizar o prescaler do Timer1 para realizar divisões de frequência do sistema de clock.

• Em:<http://www.microcontrollerboard.com/pic-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 divisões: 1:1, 1:2,1:4,1:8.

Page 16: Timers Em Microcontroladores

Estrutura do Registrador T1CON

Page 17: Timers Em Microcontroladores

Calculo dos valores de Count, fout, e Timer1.

• Caso esteja utilizando o oscilador interno como clock:

• Fout – Frequencia de saída depois da divisão.• Tout – Ciclo de tempo depois da divisão.• 4 – Divisão 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.

Page 18: Timers Em Microcontroladores

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

Page 19: Timers Em Microcontroladores

Timer2

• Características:

– Possui dois registradores de 2 bits (TMR2 e PR2).– Possui um prescaler e um postscaler.– Conecta somente ao clock interno – 4Mhz.– Sua interrupção ocorre ao acontecer um overflow.

Page 20: Timers Em Microcontroladores

• 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 máximo que nós 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 então é resetado para 00h no próximo ciclo de clock

Page 21: Timers Em Microcontroladores

Prescaler e Postcaler

• O timer2 é um timer de 8 bits que possui um prescaler, e um postcaler.

• Cada um permite fazer uma divisão adicional do clock da fonte.

• Prescaler - Divide a frequência antes da contagem ser realizada no TMR2.

• A saída da comparação de TMR2 atravessa um postcaler de 4-bits para gerar uma interrupção TMR2.

• Postcaler – Divide a frequência que sai do comparador pela última vez.

Page 22: Timers Em Microcontroladores

Representação do Prescaler e Poscaler.

Page 23: Timers Em Microcontroladores

Registrador de Controle do Timer2

• A clock de entrada (FOSC/4) tem opção 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

Page 24: Timers Em Microcontroladores

TMR2ON bit de ativação 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.

Page 25: Timers Em Microcontroladores

TOUTPS3:TOUTPS0 -Selecionando saída do postcale.

• A saída da comparação 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

Page 26: Timers Em Microcontroladores

Como calcular valores requeridos no Timer2.

• Fout – frequência de saída após a divisão.• Tout – tempo de ciclo após divisão.• 4 – A divisão do clock original (4Mhz), quando usado clock

interno.• Count – valor numérico para se alocado para obtera

frequencia de saída desejada – fout.• (PR2-TMR2) – Numero de vezes que o contador irá contar.

Page 27: Timers Em Microcontroladores

Considerações Finais

• A utilização de timers permite realizar controle de operações que envolvem tempo (sinais A/D, leitura de dados externos, entre outros).

• Através dos timers é possível contar tempo sem travar o microntrolador para isso, essa forma é mais eficiente que o uso da função delay.

Page 28: Timers Em Microcontroladores

Referências

• Em: <http://www.microcontrollerboard.com/pic-timer0-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.