Timers PIC16F876

17
Tema 06: Temporizadores “Timers” del PIC 16F876, TMR0 Introducción. Los microcontroladores PIC16F876 disponen de un potente conjunto de temporizadores para manejar fi i t t td l i i l l ti l t d t Di h t i d t eficientemente todas las operaciones que involucran al tiempo y al conteo de eventos. Dichos temporizadores son tres y se denominan técnicamente: TMR0, TMR1 y TMR2. TMR0, tiene las siguientes características: 8 bit’s puede ser utilizado como “ti t “timery como counter. Se puede leer y escribir. Tiene un pre-escalador de 8 bits por software. La señal de reloj puede ser interna o externa externa. Interrupción por desbordamiento programable. Selección del flanco del reloj externo. Pre-escalador compartido con el periférico WDT. COMO “TIMER” OPTION_REG<5> = 0 Se incrementa en cada ciclo de instrucción. La sincronización en la escritura toma dos ciclos de reloj. COMO “COUNTER” OPTION_REG<5> = 1 Se incrementa en cada flanco de Instructor: José M. Rodríguez S. 06- 1 Se incrementa en cada flanco de subida o bajada sobre el pin RA4/T0CKI OPTION_REG<4>.

Transcript of Timers PIC16F876

Page 1: Timers PIC16F876

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR0

Introducción. Los microcontroladores PIC16F876 disponen de un potente conjunto de temporizadores para manejarfi i t t t d l i i l l ti l t d t Di h t i d teficientemente todas las operaciones que involucran al tiempo y al conteo de eventos. Dichos temporizadores son tres y se

denominan técnicamente: TMR0, TMR1 y TMR2.

TMR0, tiene las siguientes características:• 8 bit’s puede ser utilizado como

“ti ” “ t ”“timer” y como “counter”.• Se puede leer y escribir.• Tiene un pre-escalador de 8 bits por

software.• La señal de reloj puede ser interna o

externaexterna.• Interrupción por desbordamiento

programable.• Selección del flanco del reloj

externo.• Pre-escalador compartido con el

periférico WDT.

COMO “TIMER”• OPTION_REG<5> = 0• Se incrementa en cada ciclo de

instrucción.• La sincronización en la escritura

toma dos ciclos de reloj.

COMO “COUNTER”• OPTION_REG<5> = 1• Se incrementa en cada flanco de

Instructor: José M. Rodríguez S.06- 1

Se incrementa en cada flanco desubida o bajada sobre el pinRA4/T0CKI OPTION_REG<4>.

Page 2: Timers PIC16F876

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR0

Instructor: José M. Rodríguez S.06- 2

Ref.: www.Mikroe.com

Page 3: Timers PIC16F876

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR0

Instructor: José M. Rodríguez S.06- 3

Ref.: www.Mikroe.com

Page 4: Timers PIC16F876

REGISTROS PARA EL TMR0, “ OPTION_REG ” INTERRUPCIÓN POR TMR0

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR0

, _Una interrupción por TMR0 ocurrirácuando el registro de 8 bits asociado aéste timer llegue al desbordamiento“overflow” FF -> 00, cuando ocurre eloverflow el bit del registro INTCON<2>

ádenominado T0IF pasará a valer 1. Si el bitINTCON<5> TOIE es uno (permiso deinterrupción), entonces la interrupciónocurrirá y se ejecutará la rutina de serviciode interrupción por TMR0.

La interrupción por TMR0 no puededespertar al microcontrolador si este seencuentra en estado dormido “sleep”, yaque, el TMR0 es deshabilitado cuando seentra en modo de reposo o dormido.

OTROS REGISTROS ASOC. AL TMR0:

Instructor: José M. Rodríguez S.06- 4

Page 5: Timers PIC16F876

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR0

Como trabaja la temporización del TMR0:

Frecuencia de oscilación (resonador/cristal):

FOSC = 20 MHz para el PIC16F876

d l i

Pasos a seguir para la utilización del TMR0:

1ro. Ajustar el registro OPTION_REG<5> Bit TOCS = 0lo que significa que el TMRO se utilizará como tem_porizador con la fuente de reloj interna del PIC.

Incremento del Registro TMR0

INCREM = Pre-escalador * 4/FOSC

Tiempo de interrupción

Tint = INCREM * (255- Valor I)

2do. Ajustar el registro OPTION_REG<3> Bit PSA = 0lo que significa que el pre-escalador será asignadoal TMRO.

3ro Ajustar el registro OPTION REG<2:0> Bit’s PS2Ejemplo: Utilice al TMR0 para generar una interrupcióncada 10 ms, utilizando el PIC 16F876

Tint = 10 msFOSC = 20 MHz

3ro. Ajustar el registro OPTION_REG<2:0> Bit’s PS2,PS1 y PS0. Para un pre-escalador de 256, el valorde PS2= 1, PS1 = 1, PS0 = 1.

4to. Introducir en el TMR0, el valor inicial del conteo.TMR0 = 60FOSC 20 MHz

Tint|MAX(p) = Pre-escalador * 4/20MHz*(255-Valor I)

Tint|MAX(256) = 256 * 4/20Mhz * (255-0) = 13.056 msTint|MAX(128) = 128 * 4/20Mhz * (255-0) = 6.528 ms

> El pre escalador tendrá que ser de 256 para 10 ms

TMR0 60

5to. Habilitar la interrupción por TMR0, a través delregistro INTCON<5> bit TOIE

6to. Habilitar la interrupción por Periféricos, a través del-> El pre-escalador tendrá que ser de 256 para 10 ms

INCREM = Pre-escalador * 4/FOSC = 51.2 us

Valor I = 255 – Tint/INCREM = 255 – 10 ms/51.2 usValor I = 255 – Tint/INCREM = 255 – 195Valor I = 60 Valor Inicial a cargar en el Reg TMR0

registro INTCON<6> bit PEIE

7mo. Habilitar la interrupción global , a través del reg_gistro INTCON<7> bit GIE

Instructor: José M. Rodríguez S.06- 5

Valor I = 60 … Valor Inicial a cargar en el Reg. TMR0

Page 6: Timers PIC16F876

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR0

Instructor: José M. Rodríguez S.06- 6

Page 7: Timers PIC16F876

úREGISTRO “ T1CON ”

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR1

TMR1, es el único temporizador/contadorascendente con un tamaño de 16 bits, lo querequiere el uso de dos registros concatenadosde 8 bits: TMR1H:TMR1L, que son losencargados de guardar el valor del conteo entiempo real en el intervalo 0000h a FFFFhtiempo real en el intervalo 0000h a FFFFh.Utiliza tanto reloj interno como externo y puedeprovocar una interrupción por desbordamientode su registro de conteo.

Su funcionamiento está gobernado por el valorde programación de los bits del registrode programación de los bits del registroT1CON<5:0>.

Cuando los impulsos de reloj son externos, espreciso que el bit T1OSCEN, T1CON<3> =1, afin de que, los pines RC0/T1OSO/T1CKI YRC1/T1OSI/CCP2 ú d d lRC1/T1OSI/CCP2 actúen como entradas deloscilador externo. Si T1OSCEN vale cero, el relojvendrá as través del pin RC0/T1OSO/T1CKI. Enambos casos, el TMR1 funcionará comocontador de eventos externos anulando laprogramación de los bits 1 y o del registroprogramación de los bits 1 y o del registroTRISC<1:0>.

COMO “TIMER”: El registro TMR1H:TMR1Lse incrementa en cada ciclo de instrucción.

COMO “COUNTER”: El registro TMR1H TMR1L

Instructor: José M. Rodríguez S.06- 7

COMO COUNTER : El registro TMR1H:TMR1Lse incrementa en cada transición alfa del relojexterno.

Page 8: Timers PIC16F876

DIAGRAMA DE BLOQUES PARA EL TMR1

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR1

REGISTROS ASOCIADOS AL TMR1

Instructor: José M. Rodríguez S.06- 8

Page 9: Timers PIC16F876

DIAGRAMA DE BLOQUES PARA EL TMR1

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR1

Instructor: José M. Rodríguez S.06- 9

Ref.: www.Mikroe.com

Page 10: Timers PIC16F876

DIAGRAMA DE BLOQUES PARA EL TMR1 UTILIZADO COMO TIMER - COUNTER

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR1

Instructor: José M. Rodríguez S.06- 10

Ref.: www.Mikroe.com

Page 11: Timers PIC16F876

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR1

P i l tili ió d l TMR1Como trabaja la temporización TMR1:

Frecuencia de oscilación (resonador/cristal):

FOSC = 20 MHz para el PIC16F876

Incremento del Registro TMR1

Pasos a seguir para la utilización del TMR1:

1ro. Ajustar el registro T1CON<5:4> Bit’s T1CKPS2 = 0T1CKPS1 = 0, lo que significa pre-escalador = 1:1

2do Ajustar el registro T1CON<3> Bit T1OSCEN = 1Incremento del Registro TMR1

INCREM = Pre-escalador * 4/FOSC

Tiempo de interrupción

Tint = INCREM * (65535- Valor I)

Ej l Utili l TMR1 i t ió

2do. Ajustar el registro T1CON<3> Bit T1OSCEN = 1para habilitar el TMR1.

3ro. Ajustar el registro T1CON<2> Bit T1SYNC = 0sincronización del TMR1

Ejemplo: Utilice al TMR1 para generar una interrupcióncada 10 ms, utilizando el PIC16F876.

Tint = 10 msFOSC = 20 MHz

Tint|MAX(p) = Pre-escalador * 4/20MHz*(65535-Valor I)

4to. Ajustar el registro T1CON<1> Bit TMR1CS = 0selección del reloj para el TMR1 (int. ó Ext.)

5to. Ajustar el registro T1CON<0> Bit TMR1ON = 1Bit de ON/OFF del TMR1

| (p) e esca ado / 0 (65535 a o )

Tint|MAX(1:8) = 8 * 4/20Mhz * (65535-0) = 104.856 msTint|MAX(1:4) = 4 * 4/20Mhz * (65535-0) = 52.428 msTint|MAX(1:2) = 2 * 4/20Mhz * (65535-0) = 26.214 msTint|MAX(1:1) = 1 * 4/20Mhz * (65535-0) = 13.107 ms

> El pre escalador tendrá que cualquiera de los anterio

6to. Introducir en el TMR1H y TMR1L, el valor inicial delconteo, TMR1(H,L) = 15535

7mo. Habilitar la interrupción por TMR1, a través delregistro PIE1<0> bit TMR1IE-> El pre-escalador tendrá que cualquiera de los anterio-

res pero se utilizará 1:1 para disminuir el errorque introduce el pre-escalador.

INCREM = Pre-escalador * 4/FOSC = 0.2 us

Valor I = 65535 – Tint/INCREM = 65535 – 10 ms/0.2 us

registro PIE1<0> bit TMR1IE

8vo. Habilitar la interrupción por Periféricos, a través delregistro INTCON<6> bit PEIE

9no. Habilitar la interrupción global , a través del reg_

Instructor: José M. Rodríguez S.06- 11

Valor I 65535 Tint/INCREM 65535 10 ms/0.2 usValor I = 65535 – Tint/INCREM = 65535 - 50000Valor I = 15535

gistro INTCON<7> bit GIE

Page 12: Timers PIC16F876

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR1

Instructor: José M. Rodríguez S.06- 12

Page 13: Timers PIC16F876

REGISTRO T2CON

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR2

TMR2, es un temporizador ascendente de 8bits, que se puede leer y escribir. Tambiénpuede realizar funciones especiales para elpuerto serie sincrónico (SSP) y con los módulosde captura y comparación, que veremos másadelante Entre sus características más

REGISTRO T2CON

adelante. Entre sus características másimportantes tenemos:

• Es un temporizador de 8 bits.• Su valor se puede leer/escribir por medio

del registro TMR2g• La fuente de reloj es sólo interna• Pre-escalador de relación 1:1, 1:4 ,1:16• Post-escalador de 4 bits 1:1 a 1:16• No opera en modo SLEEP• Puede usarse como base de tiempo del

d l d i ió i l i ó imodulo de comunicación serial sincrónica o de los CCP.

• La escritura del TMR2, TCON2 o cualquier reset hacen que el pre y post- escalador se borren y tomen el valor 00h.

La señal de reloj es sólo interna FOSC/4 y antesde ser aplicada pasa por un pre-escalador conrangos 1:1, 1:4 y 1:16. La Salida del TRM2 parapor un post divisor de frecuencias con rangosdesde 1:1 a 1:16 pasando por 16 valores

Instructor: José M. Rodríguez S.06- 13

p pposibles del intervalo.

Page 14: Timers PIC16F876

REGISTROS ASOCIADOS AL TRM2

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR2

DIAGRAMA DE BLOQUES DEL TMR2

Instructor: José M. Rodríguez S.06- 14

Page 15: Timers PIC16F876

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR2

Instructor: José M. Rodríguez S.06- 15

Ref.: www.Mikroe.com

Page 16: Timers PIC16F876

Como trabaja la temporización TMR2:

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR2

P i l tili ió d l TMR2Como trabaja la temporización TMR2:

Frecuencia de oscilación (resonador/cristal):

FOSC = 20 MHz para el PIC16F876

Incremento del Registro TMR2

Pasos a seguir para la utilización del TMR2:

1ro. Ajustar el registro T2CON<6:3> Bit’s TOUTPS3 = 1TOUTPS2 = 1, TOUTPS1 = 0 y TOUTPS0 = 0, loque significa post-escalador = 1:13

g

INCREM = Pre-escalador * 4/FOSC

Tiempo de interrupción

Tint = INCREM * ( PR2) * Post-escalador

Ejemplo: Utilice al TMR2 para generar una interrupción

2do. Ajustar el registro T2CON<2> Bit TMR2ON = 1para habilitar el TMR2.

3ro. Ajustar el registro T2CON<1:0> Bit’s T2CKPS1 = 1T2CKPS0 = 1, lo que significa pre-escalador = 1:16Ejemplo: Utilice al TMR2 para generar una interrupción

cada 10 ms, utilizando el PIC16F876.

Tint = 10 msFOSC = 20 MHz

Tint|MAX(p) = Pre * 4/20MHz*(PR2) * Post

q g p

4to. Introducir en el TMR2, el valor inicial de 240

5to. Habilitar la interrupción por TMR2, a través delregistro PIE1<1> bit TMR2IE

Tint|MAX(1:16,1:16) = 16*4/20Mhz*(255)*16 = 13.056 msTint|MAX(1:16,1:13) = 16*4/20Mhz*(255)*13 = 10.608 msTint|MAX(1:16,1:12) = 16*4/20Mhz*(255)*12 = 9.792 ms-> El pre-escalador será 1:16 y el post escalador será

1:13 y el valor exacto del PR2 será:

6to. Habilitar la interrupción por Periféricos, a través delregistro INTCON<6> bit PEIE

7mo. Habilitar la interrupción global , a través del reg_gistro INTCON<7> bit GIE1:13, y el valor exacto del PR2 será:

INCREM = Pre-escalador * 4/FOSC = 0.2 usINCREM = 16 * 4/FOSC = 3.2 us

PR2 = Tint/(INCREM * post) = 10ms/(3.2us * 13)

gistro INTCON<7> bit GIE

Instructor: José M. Rodríguez S.06- 16

/( p ) /( )PR2 = 240

Page 17: Timers PIC16F876

Tema 06: Temporizadores “Timers” del PIC 16F876, TMR2

Instructor: José M. Rodríguez S.06- 17