Post on 04-Apr-2015
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>.
Tema 06: Temporizadores “Timers” del PIC 16F876, TMR0
Instructor: José M. Rodríguez S.06- 2
Ref.: www.Mikroe.com
Tema 06: Temporizadores “Timers” del PIC 16F876, TMR0
Instructor: José M. Rodríguez S.06- 3
Ref.: www.Mikroe.com
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
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
Tema 06: Temporizadores “Timers” del PIC 16F876, TMR0
Instructor: José M. Rodríguez S.06- 6
ú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.
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
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
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
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
Tema 06: Temporizadores “Timers” del PIC 16F876, TMR1
Instructor: José M. Rodríguez S.06- 12
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.
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
Tema 06: Temporizadores “Timers” del PIC 16F876, TMR2
Instructor: José M. Rodríguez S.06- 15
Ref.: www.Mikroe.com
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
Tema 06: Temporizadores “Timers” del PIC 16F876, TMR2
Instructor: José M. Rodríguez S.06- 17