Introducao Ao Estudo Dos Timer

Embed Size (px)

Citation preview

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    1/27

    Centro de Tecnologia Microgenios - Todos os direitos reservados 

     

    Clique aqui para Imprimir o doc umento

    Introdução ao estudo dos TIMERS 

      1.0 Os Timers/Counters   1.1 TIMER0   1.2 TIMER1   1.3 TIMER2   1.4 TIMER3 

    Os Timers/Counters 

    Os timers são ferramentas internas dos microcontroladores em geralque servem para contagem de tempo, eventos, temporização entreoutras funções. 

    O PIC18F452 possui internamente 4 TIMERS:

      TIMER0   TIMER1   TIMER2   TIMER3 

    Vamos conhecer cada um desses temporizadores: 

    voltar para o topo da página 

    TIMER0 

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    2/27

    O TIMER0 é um temporizador/contador de 8 ou 16 bits quepossuem duas funções básicas: 

      Contagem de eventos externos (quando a entrada declock é feita por meio do pino RA4/T0CKI; 

      Temporização (contagem de tempo) quando os pulsosde contagem é proveniente do clock interno do PIC (o clock do

    sistema dividido por 4). O TIMER0 pode ser configurado para trabalhar com prescaler

    dedicado. O prescaler nada mais é do que um contador/divisorprogramável que é utilizado para reduzir a freqüência do sinal declock aplicado ao TIMER0 por um fator conhecido. 

    O valor do prescaler pode ser configurado a partir dos bitsT0PS2, T0PS1 e T0PS0 do registrador T0CON (TIMER0 CONTROLREGISTER); 

    O prescaler passa a ser uma importantíssima ferramentas dotimer, pois através dele conseguimos gerar tempos muito maiores.

    Quando o TIMER0 é configurado para operar no modo de 8bits, podemos efetuar contagens de 0 a 255 (limite da capacidadepara 8 bits). Quando a contagem chega até seu valor máximo de255, o próximo pulso acarretaria o que chamamos de "estouro decontagem", fazendo com que o valor de contagem de início

    novamente a partir do 0 (zero). No caso anterior, caso tenhamos a interrupção do TIMER0

    habilitada, no momento que ocorre o "estouro de contagem", seriagerado um pedido de interrupção do TIMER0. 

    No modo 16 bits do TIMER0, seu funcionamento é igual aomodo de 8 bits, porém neste cado a faixa de contagem é de 0 a65535.

    Os valores de iniciais de temporização/contagem devem sercarregados nos registradores especiais intitulado de TMR0L (TIMER0Module Low Byte Register) e TMR0H (TIMER0 Module Hight ByteRegister); 

    Quando programamos os timers para atuarem como

    temporizadores, estamos considerando que os pulsos queincrementam os registradores de contagem são proveniente do valordo oscilador / 4, ou seja, caso estivermos utilizando um cristal de4MHz, iremos incrementar em uma unidade os registradores decontagem a cada 1 us, pois 4Mhz/4 = 1MHz = 1us (microsegundos). 

    Dica:

    Repare que a unidade resultante da divisão da Frequencia dooscilador / 4 (ciclo de máquina) esta em MHz ( unidade defrequência), neste caso para sabermos o tempo (periodo), basta dividir 1

    / seu valor.

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    3/27

    Ex: 1 / (Fosc / 4 )

    Para um cristal de 8 MHz teremos o seguinte tempo de ciclo demáquina:

    1 / (8 / 4) = 0,5 us (microsegundos).

    Os Registradores relacionados ao TIMER0 são:

     Figura 01 - Registrador relacionados com o TIMER0 

    TMR0L é um registrador de contagem de 8 bits que possui a função dearmazenar a parte baixa do valor de contagem programada do TIMER0.

    TMR0H é um registrador de contagem de 8 bits que possui a função dearmazenar a parte alta do valor de contagem programada do TIMER0.

    Os registradores TMR0L e TMR0H juntos formam um únicoregistrador de 16 bits, que nos permite uma contagem máxima de 0 a65535.

    INTCON é um registrador de 8 bits responsável pela configuração domodo de operação do TIMER0. Podemos definir através desseregistrador o valor do prescaler que desejamos acionar, o modo deoperação de contagem de 8 ou 16 bits, seleção da fonte de clock (internaou externa) para o timer, seleção de disparo do timer através de borda desubida ou borda de descida do clock externo no pino RA4/T0CK1.

    Faça download do diagrama esquemático do TIMER0 disponível na

    informações complementar dessa unidade. 

    Registradores de configuração do

    TIMER0: 

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    4/27

    O registrador T0CON é responsável pela configuração pelo modo deoperação do Timer0, é de vital importância conhecer todas as funções deseus bits.

    T0CON: (TIMER0 Counter Register) 

    TMR0ON  T08BIT  T0CS  T0SE  PSA  T0PS2  T0PS1  T0PS0 

    Bit7  Bit6  Bit5  Bit4  Bit3  Bit2  Bit1  Bit0 

    TMR0ON: Bit de controle para ligar e desligar a contagemdo TIMER0; 

    0 - TIMER para de contagem 1 - Habilita a contagem do TIMER0 

    T08BIT: Bit de seleção de funcionamento do TIMER0 em 8ou 16 bits; 

    0 - TIMER0 configurado para funcionar comocontador/temporizador em 16 bits; 

    1 - TIMER0 esta configurado para funcionar como contador /temporizador de 8 bits; 

    T0CS:  Bit de seleção de fonte de clock para o TIMER0; 0 - A fonte de clock é proveniente do meio interno do chip 1 - A fonte de clock é proveniente do pino T0CKI (meio

    externo) T0SE: Bit de seleção de borda (válido somente caso a fonte

    de clock seja pelo meio externo ao chip) 

    0 - Contagem do timer ocorre por borda de subida no PinoT0CKI 1 - O incremento do timer ocorre na borda de descida no

    pino T0CKI /PSA: Bit de seleção da utilização do prescaler; 1 - TIMER0 não utiliza prescaler. A cada alteração do pulso

    de clock, corre incremento de uma unidade nos registradores decontagem. 

    0 - TIMER0 utiliza prescaler. 

    T0PS2; T0PS1; T0PS0 : Bits de seleção de fonte deprescaler 

    T0PS2 T0PS1 T0PS0 Prescaler 

    1 1 1 1:256

    1 1 0 1:128

    1 0 1 1:64

    1 0 0 1:32

    0 1 1 1:16

    0 1 0 1:8

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    5/27

    0 0 1 1:4

    0 0 0 1:2

    Configuração do Prescaler: 

    Como sabemos, através do prescaler conseguimos temposmaiores com os timers, para entendermos melhor sua utilizaçãoacompanhe o exemplo abaixo: 

    Digamos que o ciclo de máquina no PIC sejá de 1us e oTIMER0 esteja configurado no modo 8 bits (contagem de 0 a 255) esem o presacaler. O TIMER0 ira "estourar" sua contagem em 256us. 

    Agora digamos que para o mesmo anunciado anterior,configuramos e acionamos o prescaler para 1:2. Nosso intervalo de"estouro" do TIMER0 não mais será 256us mas sim 512us.

    Se ao invés de prescaler de 1:2 utilizarmos prescaler 1:32, o

    tempo agora será de 256us x 32 = 8192us.

    Como calcular o tempo de estouro do TIMER0? 

    Para calcular o tempo de "estouro" do TIMER com prescaler,utilizamos a seguinte fórmula: 

    Tempo de estouro: ciclo de máquina x prescaler x (modo 8/16bits – valor de contagem). 

    Em que: 

    Ciclo de máquina: é o valor da relação entre: 1 / (Fosc / 4 ),onde Fosc é justamente a frequeência do cristal. 

    Obs: modo PLL desabilitado, iremos estudar esta função maisadiante. 

    Prescaler :  é o fator de divisão programado. Podemosconsiderar como sendo um "redutor" de frequencia. 

    Modo 8/16bits: é o modo de contagem programado no TIMER0,para 8 bits o valor é 256, e para 16 bits, o valor será de 65535.  

    Valor de contagem: é o valor de carregagem no registrador decontagem TMR0H eTMR0L. 

    Exemplo:

    Precisamos ligar e desligar um relé a cada segundo ( um segundoligado e um segundo desligado), estamos utilizamdo um cristalde 8Mhz, utilizaremos para isso os recursos do Temporizador Timer0,acompanhe:

    T0CON = 0B10000110; //configura timer modo 16 bits, com prescaler 1:128, fonte declock interno TMR0L = 0XF6; //carrega valores de contagem C2F6 equivale a

    TMR0H = 0XC2; //carrega valores de contagem 

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    6/27

    Calculo do tempo de estouro do Timer0:

    Tempo de estouro: 1 / (8 / 4) x 128 x (65536 –  49910 )Tempo de estouro: 1.000.064 us (microsegundos) ou aproximadamente1 segundo.

    obs: o valor  49910 surgio da conversão do valor em hexadecimalF6C2 para decimal

    O registrador INTCON

    O registrador INTCON possui diversar funções, entre elas a dehabilitar algumas interrupções do PIC (veremos mais adiante no nossocurso) e de armazenar os bits de estatus de estouro do TIMER0:

    INTCON (Interrupt Control) 

    GIE/GIEH PEIE/GIEL TMR0IE  INT0IE  RBIE  TMR0IF  INT0IF  RBIF 

    Bit7  Bit6  Bit5  Bit4  Bit3  Bit2  Bit1  Bit0 

    Iremos estudar todos esses bits mais adiante em nosso curso, pois eles tratam das configurações das interrupções, e neste momentonão é importante conhecer alguns deles. Vamos apresentar somente os

     bits que são utilizados nos TIMERS.

    INTCON. GIEH  = bit de acionamento da "chave geral dasinterrupções" e habilitação das interrupções de alta prioridade

    0 - liga a chave geral das interrupções1 - desliga a chave geral das interrupçõesINTCON. GIEL  = bit de habilitação das interrupções de baixa

     prioridade0 - TIMER0 não ocorreu estouro de contagem (overflow)

    1 - TIMER0 ocorreu estouro de contagem (overflow). Este bit deveser apagado por software.

    INTCON.TMR0IE = bit que habilita interrupção do TIMER0 naocorrência do estouro de contagem.

    0 - Desabilita interrupção do TIMER0 por ocorrencia de estouro decontagem (overflow)

    1 - Habilita interrupção do TIMER0 por ocorrência de estouro decontagem (overflow).

    INTCON. TMR0IF = bit sinalizador de estouro do TIMER00 - TIMER0 não ocorreu estouro de contagem (overflow)

    1 - TIMER0 ocorreu estouro de contagem (overflow). Este bit deveser apagado por software.

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    7/27

     

    Aprendendo a programar os TIMER0:

    Conhecemos os registradores responsáveis pela configuração doTIMER0 do PIC, agora vamos configurá-los:

    Vamos nos recordar da fórmula do TIMER0:

    Tempo de estouro: ciclo de máquina x prescaler x (modo 8/16bits – valor de contagem). 

    Exemplo 1 :

    Se tivermos conectado ao nosso PIC um cristal de 8 MHz e o TIMER0 seja programado como temporizador, com prescaler de 1:4, modo 8 bits e contagem inicialem TMR0L = 0, teremos então:

    Tempo de estouro: ciclo de máquina x prescaler x (modo 8/16bits – valor de contagem). Tempo de estouro: 0,5us * 4 *(255 - 0) Tempo de estouro: 510us 

    Exemplo 2 :

    Se tivermos conectado ao nosso PIC um cristal de 8 MHz e o TIMER0 seja programado como temporizador, com prescaler de 1:256, modo 16 bits e contageminicial em TMR0L = 0 e TMR0H = 0, teremos então:

    Tempo de estouro: ciclo de máquina x prescaler x (modo 8/16bits – valor de contagem). Tempo de estouro: 0,5us * 256 * (65536 - 0) Tempo de estouro: 8.388.608us, ou seja, 8, 388 segundos 

    Obs: Repare que este é o tempo máximo de estouro do TIMER0

    Vamos realizar mais um exemplo de programa: 

    vamos supor que desejamos que um led conectado ao pino RB0do PIC pisque em intervalos de 1 segundo (ligado e desligado) utilizandoos recursos de temporização do TIMER0.

    Cristal: 8MhzPIC18F452TIMER0 / MODO 16BITS

    Acompanhe o esquema eletrico abaixo:

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    8/27

     

    Primeiramente devemos programar os TIMER0: 

    Para este exemplo, vamos programar o TIMER0 no modo 16 bits (contagem de 0 a 65535), prescaler de 1:16, clock interno, cristal de8Mhz e modo HSPLL desativado (multiplicador do oscilador), termosentão:

    tempo de estouro do TIMER0 = ciclo de máquina x prescaler x

    (modo 8/16 bits - valor de contagem do TIMER0) logo:

    1 000 0000 = 0,5 * 16 * (65536 - X)x = 59464

    Concluimos que o valor de carregagem em TMR0L e TMR0H deverá serde 59464, ou seja, TMR0L = 0X48; , TMR0H = 0XE8; (valores 59464convertido em hexadecimal é igual a E848)

    Exemplo:

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    9/27

    /*********************************************************

    ************

    Centro de tecnologia Microgenios

    Configuração parcial de um programa de configuração do

    TIMER0

    **********************************************************

    *************/  Comandos:

    T0CON = 0b10000011;  //configura temporizador 16 bits,com prescaler ativado em 1:16, clock interno 

    TMR0L = 0x48;  //carrega valores de contagem emTMR0L - registrador baixo de contagem 

    TMR0H = 0xE8;  //carrega valores de contagem emTMR0H - registrador alto de contagem 

    O programa abaixo tem por função configurar o modo de

    trabalho do TIMER0. Repare que o registrador T0CON foi configuradoda seguinte forma:

      TIMER0 ligado. (TMR0ON = 1)  Clock interno (T0CS = 0)  Modo de contagem de 16 bits (T08BIT = 0)  Prescaler ligado (PSA = 0)  Prescaler 1:16 (T0PS2 = 0, T0PS1 = 1, T0PS0 = 1)

    Os registradores de contagem TMR0L e TMR0H serão

    inicializados com o valor 59464.

    Vamos realizar mais um exemplo de programa: 

    O programa seguinte tem por objetivo alterar os estados dos leds conectados aoPORTB em intervalos de 1 segundo.

    Hardware:Cristal: 8 MhzMicrocontrolador: PIC18f452Temporizador: Timer0

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    10/27

     /*********************************************************

    ************

    Centro de tecnologia Microgenios

    Placa: Kit PICGeniosPrograma: Pisca Pisca utilizando o TIMER0 do PIC

    Objetivo: Este programa tem por objetivo piscar os leds

    do portb em

    intervalo de 1 segundo (ligado e desligado) utilizando o

    TIMER0 do PIC.

    Modo programado: 16 bits, prescaler 1:128

    **********************************************************

    *************/

    void  main() {  //função principal do programaT0CON = 0b10000110;  //configura timer modo 16 bits, com

     prescaler

    TMR0L = 0XF7;  //carrega valores de contagemTMR0H = 0XC2;  //carrega valores de contagem intcon.tmr0if = 0; TRISB = 0;  // PORT B configurado como saídaPORTB = 0xFF;  // Initialize PORT B

    do {if (intcon.tmr0if == 1) {  //se o flag de estouro do

    TIMER0 for igual a 1, então

    PORTB = ~PORTB;  // inverte o estado do portbTMR0L = 0xF7;TMR0H = 0XC2;Iintcon.tmr0if = 0; // apaga flag de entouro do

    TIMER0//para uma nova contagem 

    }

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    11/27

      }  while(1);  // loop}

    Calculo do tempo de estouro do timer0

    tempo de estouro do TIMER0 = ciclo de máquina x prescaler x

    (modo 8/16 bits - valor de contagem do TIMER0) tempo de estouro = 0,5 * 128 * (65536 - 49911)  Tempo de estouro = 1.000,000 us ou 1 segundo 

    Estudo detalhado do programa:

    void  main() {  //função principal do programaT0CON = 0b10000011;  //configura timer modo 16 bits, com

     prescaler 128

    TMR0L = 0XF7;  //carrega valores de contagemTMR0H = 0xC2;  //carrega valores de contagem intcon.tmr0if = 0; // apaga flag de entouro do TIMER0 

    Os comandos seguinte configuram o portb como saída.

    TRISB = 0;  // PORT B é configurado como saidaPORTB = 0xFF;  // Initialize PORT B 

    Repare que nosso TIMER0 já foi configurado e iniciou acontagem dos pulsos de ciclo de máquina. Agora precisamos monitorar o

     bit de estouro do TIMER0, pois não sabemos a que momento o estourovai ocorrer, o que sabemos é que vai levar 1 segundos para ocorrer o

    estouro, ou seja, o bit TMR0IF vai para 1. Para isso, utilizaremos ocomando de tomada de decisão IF, que terá a seguinte função:

    Se o bit de estouro intcon.tmr0if for igual a 1, representa que oTIMER0 estourou, e os comandos do bloco IF são executados. Toda avez que o TIMER0 estura, ou seja, o timer chega até 1 segundos, éinvertido o estado do portb e reiniciado a contagem do TIMER0.

    if (intcon.tmr0if == 1) {  //se o flag de estouro doTIMER0 for igual a 1, então

    PORTB = ~PORTB;  // inverte o estado do portbTMR0L = 0XF7;  //carrega valores de

    contagemTMR0H = 0xC2;  //carrega valores de

    contagem intcon.tmr0if = 0; // apaga flag de entouro do

    TIMER0 }

     Modo Contador do TIMER0:

    Vamos fazer mais um exemplo de programa utilizando o

    TIMER0 do PIC: 

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    12/27

      Neste novo exemplo de programa, vamos programar o TIMER0

    do PIC para trabalhar como contador de pulsos externos. Neste modo, os pulsos externos, são aplicados no pino RA0/T0CK1 do PIC. Devemoscontar apenas 10 pulsos externos, que neste caso, configuraremos o

    TIMER0 do PIC no modo 8 bits com prescaler 1:1, e os pulsos serãolidos por borda de descida. Ao completar a contagem de 10 pulsos, o ledconectado ao pino RB7 do PIC deverá acender para sinalizar o fim dacontagem.

    Esquema elétrico:

    Para realizar o seguinte desafio é necessário configurar osseguintes registradores do TIMER0:

      INTCON.TMR0IF (Bit de estouro do TIMER0)   TMR0L (registrador de contagem do TIMER0)   T0CON (registrador de configuração do modo de

    operação do TIMER0) 

    Programa: 

    /*********************************************************

    ************ 

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    13/27

    Centro de tecnologia Microgenios Placa: Kit PICGenios Programa: Pisca Pisca utilizando o contador T0CK1 do PIC  Objetivo: Este programa tem por objetivo piscar os leds

    do portb a cada 10 pulsos gerados no pino contador RA4/T0CK1 do PIC. 

    ***********************************************************************/  

    void  main() {  //função principal do programa T0CON = 0b11100000;  //configura timer modo 8 bits, com

     prescaler 1:1 TRISB.f7 = 0;  // PORT B é configurado como

    saida PORTB.f7 = 0;  // Initializa PORT B TMR0L = 246;  //carrega valores de contagem de

     pulsos //como somente vamos contar 10

     pulsos, temos: (255 - 10 = 245) 

    intcon.tmr0if = 0; do { if (intcon.tmr0if == 1) {  //se o flag de estou for

    igual a 1, então PORTB.f7 = ~PORTB.f7;  // inverte o estado do pino

    RB0 TMR0L  = 246;  //recarrega valor de

    contagem de contagem intcon.tmr0if = 0;  // Seta T0IE, apaga flag de

    entouro do TIMER0 //para uma nova contagem 

    } }  while(1);  // loop 

    Estudo detalhado do programa: 

    Repare que o nos comandos abaixo que o registrador T0CONfoi configurado como contador de pulsos externos, modo de operação doTIMER0 de 8 bits, com prescaler 1:1.

    O registrador de contagem TMR0L é o registrador onde será

    armazenado os valores de contagem dos pulsos externos, e neste caso elefoi pré configurado com o valor 246, devido a necessidade de contarmosapenas 10 pulsos. Devemos lembrar que os registradores de contagem doTIMER0 são incrementados em 1 unidade e contam para cima, nestecaso, como desejamos programar o TIMER0 para que a cada 10 pulsosno pino RA0/T0CK1 seja gerado um estouro, devemos carregar emTMR0L o valor da diferença entre o valor máximo de contagem para omodo 8 bits, que é 256, pelo valor da quantidade de pulsos a ser contado,que neste cado é 10. Então teremos:

    256 - 10 = 246

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    14/27

     

    O TIMER1: 

    Realizamos nas unidades passadas um estudo não muitoaprofundado sobre as funções e características dos TIMERS do PIC.Agora chegou o momento de estudarmos mais profundamente osrecursos e a programação dos registradores e modos de trabalho dessestemporizadores e contadores.

    O TIMER1 pode operar como temporizador ou como contadorde 16 bits, suas características são muito parecida com a do TIMER0.

    Dizemos que o timer está operando como temporizador quandoa referência do clock de incremento da contagem é realizada pelo clockinterno do PIC, e dizemos que o timer esta operando como contador

    quando a referência do clock de incremento da contagem é provenientede um clock externo ao PIC. (pulso aplicado no pinoRB6/T1OSO/T1CK1).

    Registradores de configuração do TIMER1: 

     Figra 01 - Registrador relacionados com o TIMER0 

    P1R1: é um registrador onde é armazenado os bits de status das

    interrupções e estouro dos timers.P1E1: é um registrador de 8 bits onde é habilitado as interrupções do

    PIC.TMR1L é um registrador de contagem de 8 bits que possui a função

    de armazenar a parte baixa do valor de contagem programada doTIMER0.

    TMR1H é um registrador de contagem de 8 bits que possui a funçãode armazenar a parte alta do valor de contagem programada do TIMER0.

    Os registradores TMROL e TMR0H juntos formam um únicoregistrador de 16 bits, que nos permite uma contagem máxima de 0 a65535.

    T1CON é um registrador de 8 bits responsável pela configuração domodo de operação do TIMER1. Podemos definir através desse

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    15/27

    registrador o valor do prescaler que desejamos acionar, o modo deoperação de contagem de 8 ou 16 bits, seleção da fonte de clock (internaou externa) para o timer, seleção de disparo do timer através de borda desubida ou borda de descida do clock externo no pinoRB6/T10S0/T1CK1.

    T1CON: (TIMER1 CONTROL REGISTER):

    RD16  ---  T1CKPS1  T1CKPS0  T10SCEN  T1SYNC  TMR1CS  TMR1ON 

    Bit7  Bit6  Bit5  Bit4  Bit3  Bit2  Bit1  Bit0 

    RD16: bit de leitura e escrita em 16bits

    0– leitura e escrita em 16 bits habilitada 

    1 – leitura e escrita em 16 bits desabilitada T1CKPS1; T1CKPS0: Bits de seleção de fonte de prescaler 

    T1CKPS1 T0CKPS0  Prescaler 

    1 1 1:8

    1 0 1:4

    0 1 1:2

    0 0 1:1

    T1OSCEN:  Habilitação do oscilador externo de baixafrequeência nos pinos T1OSO e T1OSI 

    0 - Oscilador desligado 1 - Oscilador Ligado T1SYNC: Controle do sincronismo interno. Caso TMR1CS =

    0, esse bit é descartado 0 - Sincronismo ligado 1 - Sincronismo desligado TMR1CS: Bit de seleção de clock; 0 - A base de clock para o TIMER1 é interna (Fosc/4); 1 - Clock externo no pino RC0/T1CK1; 

    TMR1ON: Habilita TIMER1; 

    0 - TIMER1 desligado 1 - TIMER1 ligado 

    Obs: Bit6 não implementado, lido como "0".Abaixo o diagrama simplificado do Timer1:

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    16/27

    Faça download do diagrama esquemático do TIMER1 disponível na

    informações complementar dessa unidade. 

    O TIMER1 opera de maneira identica a do timer anterior, suasdiferenças básicas é que este novo timer pode operar como temporizador para o modo Capture/Compare para o modo CCP. Foi implementadoneste novo Timer a possibilidade de ligarmos um outro cristal oscilador,de forma que nos permite ligar cristais de baixa frequência, tais como32,768 KHz, para maiores precisão na temporização.

    Obs: Este segundo cristal deverá ser ligado entre os pinos RC0 e RC1 eem ipótese alguma poderemos dispensar o uso do cristal oscilador

     principal Fosc.

    A figura 01 apresenta o diagrama de funcionamento doTIMER1 operando com o oscilador de baixa frequência.

    Figura 01

    Abaixo segue um exemplo de ligação ( Revista Elektor / Ano 4 Nº 43)

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    17/27

     

    Programando o TIMER1 do PIC. 

    Para exemplificar a utilização do TIMER1 do PIC vamosanalizar um exemplo de programa:

     /*********************************************************

    ************

    Centro de tecnologia Microgenios

    Configuração parcial de um programa de configuração do

    TIMER1

    **********************************************************

    *************/  

    T1CON = 0B10110001;  //liga TIMER1, prescaler 1:8, modotemporizador 16 bits.

    PIR1.TMR1IF = 0;  //apaga flag de estouro do TIMER1 

    TMR1L = 0;  //carrega valor de contagem baixa doTIMER1

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    18/27

    TMR1H = 0;  //carrega valor de contagem alta doTIMER1 

    O programa acima configura o TIMER1 para operar em 16bits com prescaler 1:8, clock interno.

    Análise detalhado do programa: 

    Sabendo que nosso microcontrolador esta trabalhando com um cristalexterno de 4MHz, vamos calcular o tempo de estouro do TIMER1:

    Configuração do TIMER1:

      Modo de Operação: 16 bits   Fonte de oscilação: Ciclo interno.   Prescaler: 1:8 

    Tempo de estouro:,

      Cálculo: (65535 - valor do registrador de contagem) x (1 (Fosc

    / 4)) x Prescaler   65535 x 1us x 8 = 524, 28 ms, ou 0.5 segundos. 

    Exemplo de programa:

    /*********************************************************

    ************

    Centro de tecnologia Microgenios

    Placa: Kit PICGenios

    Programa: Pisca Pisca utilizando o TIMER1 do PIC

    Objetivo: Este programa tem por objetivo piscar os leds

    do portb emintervalo de 0,5 segundo (ligado e desligado) utilizando o

    TIMER1 do PIC.

    Modo programado: 8 bits, prescaler 1:16

    **********************************************************

    *************/void  main()  //função principal do programa{

    TRISB = 0;  //define portb como saidaT1CON = 0B10110001;  //liga TIMER1, prescaler 1:8, modo

    16bits.

    PIR1.TMR1IF = 0;  //apaga flag de estouro do TIMER1

    TMR1L = 0;  //carrega valor de contagem baixa doTIMER1

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    19/27

      TMR1H = 0;  //carrega valor de contagem alta doTIMER1

    PORTB = 0x00;  //reseta portb

    do {if (PIR1.TMR1IF == 1)  //se flag estiver em 1,

    representa que houve o estouro do timer1{PORTB  = ~PORTB;  //inverte o valor do portbTMR1L = 0;  //recarrega valor de

    contagem baixa do timer1

    TMR1H = 0;  //recarrega valor decontagem alta do timer1

    PIR1.TMR1IF = 0;  //resseta flag de estouro dotimer1 para uma nova contagem.

    }}  while (1);

    }

    voltar para o topo da página 

    O TIMER2 : 

    O TIMER2 é um timer de 8 bits com recarga automática.Esse TIMER tem um registrador de configuração, um de contagem e

    outro de comparação. Ele possui um registrador de contagem de 8 bits (0 a 255) chamado TMR2. Diferentemente dos outros timers, o TIMER2

     possui um prescale e um postscaler. Os registradores especiaisresponsável pela configuração do TIMER2 são:

      T2CON (TIMER2 CONTROL REGISTER): Configura osetup do TIMER2; 

      TMR2: Registrador de contagem do TIMER2 (8 bits);   PR2: Registrador de comparação do TIMER2 

    Dizemos que o TIMER2 é um timer com recarga automáticapois quando o valor carregado em PR2 é igual ao de contagem TMR2,o valor de TMR2 é zerado e inicia-se uma nova contagem, ou melhordizendo, temporização. 

    Os registradores relacionados com o TIMER2 são:

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    20/27

     

    Através do registrador T2CON, podemos configurar o modo deoperação do TIMER2, tais como: valor do prescale e postcale e ligar oudesligar o timer2.

    Faça download do diagrama esquemático do TIMER3 disponível nainformações complementar dessa unidade. 

    Registradores de configuração do TIMER2:

    Registradores de configuração do TIMER2: 

    T2CON: (TIMER1 CONTROL REGISTER): 

    ---  TOUTPS3  TOUTPS2  TOUTPS1  TOUTPS0  TMR2ON  T2CKPS1  T2CKPS0 

    Bit7  Bit6  Bit5  Bit4  Bit3  Bit2  Bit1  Bit0 

    TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0: Bits de ajuste dopostcale: 

    TOUTPS3 TOUTPS2

     TOUTPS1

     TOUTPS0

     Postscale 0 0 0 0 1:1

    0 0 0 1 1:2

    0 0 1 0 1:3

    0 0 1 1 1:4

    0 1 0 0 1:5

    0 1 0 1 1:6

    0 1 1 0 1:7

    0 1 1 1 1:8

    1 0 0 0 1:9

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    21/27

    1 0 0 1 1:10

    1 0 1 0 1:11

    1 0 1 1 1:12

    1 1 0 0 1:13

    1 1 0 1 1:14

    1 1 1 0 1:15

    1 1 1 1 1:16

    O funcionamento do postcale é muito semelhante aoprescaler, sua diferença básica está na contagem. Em vez de contarpulsos de ciclos de máquina, o postcale conta n  comparações doTIMER2 com PR2. Após n comparações, o flag de estouro do TIMER2é sinalizado com nível lógico 1. 

    TMR2ON: Habilitação do TIMER2; 0 - TIMER2 desligado 1 - TIMER 2 ligado 

    T2CKPS1 T2CKPS0: Bits responsáveis pelo ajuste deprescaler: 

    T2CKPS1 T2CKPS0 Prescaler 

    0 0 1:10 1 1:4

    1 x 1:16

    X pode ser 1 ou 0

    Para exemplificar, vamos estudar um programa que tem comofunção piscar um led conectado ao pino RB0 do PIC em intervalos de 1segundo (ligado e desligado). Neste exemplo iremos utilizar o TIMER2

    com ajuste de prescale e postcale para entendermos o funcionamento.

    Esquema elétrico: 

    http://localhost/var/www/Microgenios/Desktop/Curso%20PIC/curso_pic_online/unidade2_pronto/05_u2.htm#top#top

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    22/27

     

    Programa: 

    /*********************************************************

    ************

    Centro de tecnologia Microgenios

    Configuração parcial de um programa de configuração do

    TIMER2

    **********************************************************

    *************/  

    T2CON = 0b01111111;  //programa TIMER2 com prescaler

    1:16, postcale 1:16TMR2  = 0;  //inicia contagem a partir do 0PR2  = 0;  //inicia contagem a partir do 0 

    Descrição detalhada do programa: 

    Para calcularmos o tempo de estouro do TIMER2 utilizamos as seguintescontas (observe que estamos utilizando um cristal externo de 4MHz):

    Tempo de estouro do TIMER2 = valor do prescale x valor do postcale x PR2 x ( 1/(Fosc/4) ) 

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    23/27

    que nos resulta:

    Tempo de estouro do TIMER2 = 16 x 16 x 255 x 1us = 65280us

    Exemplo de Programa:

    /*********************************************************

    ******************

    Microgenios soluções eletrônica Ltda

    Programa: Pisca Pisca utilizando o TIMER2

    Compilador: MikroC

    Objetivo: Este programa tem por objetivo piscar o led

    conectado ao pino RB0 do PIC em intervalos de 1 segundo

    (ligado / desligado) APROXIMADAMENTE.

    **********************************************************

    *****************/

    unsigned  short i; //define variável i

    //************************* subrotina de inversão do led

    *******************

    void  inverte_led() {  //subrotina de inversão do estado doled

    PORTB.f0 = ~PORTB.f0;}

    //************************ função principal do programa

    ******************

    void  main() {i = 0;

    TRISB = 0;PORTB = 0;

    T2CON = 0b01111111;  //programa TIMER2 com prescaler1:16, postcale 1:16

    PR2  = 200;  //inicia contagem a partir do 0

     while (1){

    if (pir1.tmr2if == 1) //se o TIMER2 estourar oscomandos serão executados

    {i++;  //foi criado a variável i para que

    somente depois de

    //15 estouros do TIMER2, asubrotina de inversão do

    //estado do led seja chamada.

    //a variável i é incrementada em

    um unidade a cada

    //estouro do TIMER2

    if (i > 15)  //caso i seja maior que 15, entãochama subrotina de

    {inverte_led();  //inversão dos leds

    i = 0;  //zera novamente i para umanova contagem

    }PIR1.TMR2IF = 0; //apaga o bit de sinalização deestouro do TIMER2

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    24/27

      //para inciar uma nova contagem}

    }}

    O TIMER3 : 

    O TIMER3 é um temporizador e contador de 16 bits. Possuiinternamente dois registradores de 8 bits, TMR3L e TMR3H, que juntosformam um registrador de 16 bits (contagem de 0 a 65535).

    Os registradores relacionados com o TIMER3 são:

    Através do registrador T3CON, podemos configurar o modo deoperação do TIMER3, tais como: valor do prescale , ligar ou desligar oTIMER3, seleção de clock interno ou externo (contador) e fonte do timer

     para o módulo CCP do PIC.

    Faça download do diagrama esquemático do TIMER3 disponível nainformações complementar dessa unidade. 

    Registradores de configuração do TIMER3: 

    O registrador de controle do TIMER3; 

    T3CON: (TIMER3 CONTROL REGISTER); 

    RD16  T3CCP2  T3CKPS1  T3CKPS0  T3CCP1  T3SYNC  TMR3CS  TMR3ON 

    Bit7  Bit6  Bit5  Bit4  Bit3  Bit2  Bit1  Bit0 

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    25/27

     

    RD16: bit de leitura e escrita em 16bits0 – leitura e escrita em 16 bits habilitada 1 – leitura e escrita em 16 bits desabilitada 

    T3CCP2 T3CCP1: Habilita a fonte de timer para o móduloCCP; 

    T3CCP2 T3CCP1  Prescaler 

    0  0 

    TIMER1 fontede timer paraos módulos

    CCP 

    0  1 

    TIMER1 fontede timer para

    o móduloCCP1 

    1  0 

    TIMER3 fontede timer para

    o móduloCCP2 

    1  1 

    TIMER3 fontede timer paraos módulos

    CCP 

    T3CKPS1 T3CKPS0: bits de ajuste do prescaler do TIMER3; 

    T3CKPS1 T3CKPS0 Prescaler 

    0 0 1:10 1 1:21 0 1:41 1 1:8

    /T3SYNC: Controle de sincronismo interno. Caso TMR3CS =0, este bit é descartado; 

    obs: este bit somente é utilizado para trabalhar com outro cristalligado ao T1OSO e T1OSI.

    0 - Sincronismo ligado 1 - Sincronismo desligado 

    TMR3CS: Seleção de Clock

    0 - Clock Interno ( Fosc/ 4 ) 1 - clock externo no pino T1CK1 

    TMR3ON: Habilitação do TIMER3; 

    0 - TIMER3 desligado 

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    26/27

    1 - TIMER3 ligado 

    Para exemplificar a utilização do TIMER3, vamos programarseus registradores:

    Primeiramente devemos programar os TIMER3: 

    Para este exemplo, vamos programar o TIMER3 no modo 16 bits (contagem de 0 a 65535), prescaler de 1:8, clock interno, cristal de4Mhz e modo HSPLL desativado (multiplicador do oscilador), termosentão:

    Tempo de estouro do TIMER0 = valor de contagem do TIMER0 x

    PRESCALER X tempo de ciclo de máquina

    65535 x 8 x 1us = 524280 us, ou 0.524 segundos. 

    Logo o tempo de estouro do TIMER3 será a cada 0.524 segundos.

    /*********************************************************

    ************

    Centro de tecnologia Microgenios

    Configuração parcial de um programa de configuração do

    TIMER3

    **********************************************************

    *************/  

    T3CON = 0b10110001;  //programa TIMER3 com prescaler1:8, modo 16 bits, clock interno

    TMR3l = 0;  //inicia contagem a partir do 0TMR3H = 0; //inicia contagem no modo 16 bits

    Descrição detalhada do programa : 

    O programa abaixo tem por função configurar o modo detrabalho do TIMER3. Repare que o registrador T3CON foi configuradoda seguinte forma:

      TIMER3 ligado. (TMR3ON = 1)   Clock interno (TMR3CS = 0)   Modo temporizador em 16 bits (RD16 = 1)   Prescaler 1:8 (T3CKPS1 = 0, T3CKPS0 = 1) 

    Os registradores de contagem dos pulsos dos clocks internos doPIC são inicializados a partir do zero.

    voltar para o topo da página 

  • 8/19/2019 Introducao Ao Estudo Dos Timer

    27/27

     Centro de Tecnologia Microgenios - Curso de Microcontroladores PIC - Programaçãoem CMicrogenios © 1998 - 2007. Todos os direitos reservados. É proibido cópia parcial ouintegral desse material sem prévio aviso. Maiores informações:

    [email protected]