Microcontroladores 8 Timers

8
MECATRONICA SISTEMAS MICROCONTROLADOS 138 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas SISTEMAS MICROCONTROLADOS Capítulo 8 TIMERs En los PIC de la Gama Media puede haber hasta tres temporizadores denominados TMR0, TMR1 y TMR2. Las principales características de cada uno de ellos se muestran a continuación. 8.1. TIMER 0 (TMR0). El temporizador TMR0 (Figura 8.1) tiene las siguientes características: Contador / temporizador de 8 bits. Permite la lectura y escritura. Prescaler de 8 bits programable por software. Fuente de reloj interna o externa. Interrupción por rebose (overflow). De FFh a 00h. Selección de flanco para la fuente externa. Figura 8.1 Diagrama de bloque del TMR0.

Transcript of Microcontroladores 8 Timers

Page 1: Microcontroladores 8 Timers

MECATRONICASISTEMASMICROCONTROLADOS

138 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

SISTEMAS MICROCONTROLADOS

Capítulo 8

TIMERs

En los PIC de la Gama Media puede haber hasta tres temporizadores denominados TMR0, TMR1 y TMR2. Las principales características de cada uno de ellos se muestran a continuación.

8.1. TIMER 0 (TMR0).

El temporizador TMR0 (Figura 8.1) tiene las siguientes características:

Contador / temporizador de 8 bits. Permite la lectura y escritura. Prescaler de 8 bits programable por software. Fuente de reloj interna o externa. Interrupción por rebose (overflow). De FFh a 00h. Selección de flanco para la fuente externa.

Figura 8.1 Diagrama de bloque del TMR0.

Page 2: Microcontroladores 8 Timers

MECATRONICASISTEMASMICROCONTROLADOS

139 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Para la configuración del TMR0 se utilizan los bits del registro OPTION<5:0>

bit 7 RBPU bit 6 INTEDG bit 5 T0CS: Fuente de reloj para el TMR0. 1 = Pulsos introducidos por T0CKI (contador). 0 = Pulsos de reloj interno Fosc/4 (temporizador). bit 4 T0SE: Tipo de flanco activo del T0CKI. 1 = Incremento del TMR0 cada flanco descendente. 0 = Incremento del TMR0 cada flanco ascendente. bit 3 PSA: Asignación del divisor de frecuencia. 1 = Se le asigna al WDT. 0 = Se le asigna al TMR0. bit 2-0 PS2:PS0: Valor del divisor de frecuencia.

Valor División del TMR0

Cuando se opera con el TMR0 como temporizador (T0CS=0), se produce un incremento de este cada ciclo de instrucción, siempre que el predivisor esté a 1:1. Al producirse una escritura sobre el TMR0, este incremento se inhibe durante los dos siguientes ciclos de instrucción (figura 8.2).

Page 3: Microcontroladores 8 Timers

MECATRONICASISTEMASMICROCONTROLADOS

140 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Figura 8.2 Diagrama de tiempos el TMR0, con reloj interno y sin predivisor.

En el caso de que el predivisor de frecuencia esté asignado al TMR0, cuando se escribe sobre él, el registro del predivisor se pone a cero, y se produce un retardo de dos ciclos de instrucción más el valor del predivisor hasta que se reinicia la temporización (figura 8.3). En este caso el incremento del TMR0 se produce cada tantos ciclos de instrucción como valor tenga el predivisor.

Figura 8.3 Diagrama de tiempos del TMR0 con reloj interno y predivisor 1:2.

Cuando el TMR0 está configurado como contador (T0CS=1), se incrementará cada vez que se produzca un flanco de bajada o subida, según como este configurado (T0SE), por el pin T0CKI. Cuando no está configurado el predivisor de frecuencia con el TMR0, la entrada del reloj externo coincide con la salida del predivisor. La sincronización de la señal T0CKI con la fase interna del reloj se realiza haciendo un muestreo en la salida del predivisor en cada ciclo Q2 y Q4. Por esta razón es necesario que los pulsos tengan un ancho mínimo para que se puedan detectar.

Debido a que la salida del predivisor está sincronizada con el reloj interno, aparece un retardo desde que se detecta la señal T0CKI hasta que se incrementa el TMR0 (figura 8.4).

Page 4: Microcontroladores 8 Timers

MECATRONICASISTEMASMICROCONTROLADOS

141 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Figura 8.4 Diagrama de tiempos del TMR0 con reloj externo.

El temporizador TMR0 tiene asociados los bits T0IE (INTCON<5>) y T0IF (INTCON<2>) para la habilitación y señalización de interrupción cuando éste rebose, es decir, pase de FFh a 00h.

Como ya se vio los capítulos anteriores, el TMR0 tiene un predivisor de frecuencia asociado a él y compartido con el Perro Guardián o Watchdog.

Para lograr una temporización en concreto hay que inicializar el valor del TMR0 con el valor adecuado. Para calcular este valor a cargar se utiliza la siguiente expresión:

Ttemp = (256 – VTMR0) · 4 · TOSC · Valor del Predivisor (4.1)

Suponiendo una temporización de 20ms, y un TOSC de 4 MHz, se obtiene:

ValorPredivisor =20 •10-3 ≈78.125 (4.2)

256•10-6

El valor siguiente al obtenido es el de predivisor 128, con lo que se obtiene:

20 · 10-3

= (256 – VTMR0) · 10-6

· 128 (4.3) VTMR0 = 256 – 156 = 100 (4.4)

REGISTROS ASOCIADOS AL TIMER 0

Page 5: Microcontroladores 8 Timers

MECATRONICASISTEMASMICROCONTROLADOS

142 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

8.2 TIMER 1 (TMR1).

Es un contador/temporizador ascendente de 16 bits, el cual está implementado con dos registros de ocho bits que son TMR1H y el TMR1L (figura 8.5).

Figura 8.5 Diagrama de bloques del TMR1.

Como fuentes de los impulsos del reloj existen tres alternativas:

• El oscilador interno del PIC, de modo que el TMR1 se incrementará en cada ciclo de instrucción.

• Un oscilador externo de tipo XT conectado a RC0/T1OSO/T1CKI y a RC1/T1OSI/CCP2.

• Contando pulsos externos a través de la patilla RC0/T1OSO/T1CKI.

Para configurar el TMR1 se utiliza el registro T1CON. La estructura de este registro es la siguiente:

Page 6: Microcontroladores 8 Timers

MECATRONICASISTEMASMICROCONTROLADOS

143 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

bit 7 T1GINV: bit de inversión de puerto de Timer 1

bit 6 TMR1GE: bit habilitación de inversión de puerto de Timer 1

Si TMR1ON=0 el bit es ignorado

Si TMR1ON=1

1=la cuanta del Timer 1 es controlado por la función Gate de l Timer 1

0=Timer 1 siempre cuenta

bit 5-4 T1CKPS1:T1CKPS0: Selección del valor del predivisor del reloj de

entrada

11 = Valor del predivisor 1:8.

10 = Valor del predivisor 1:4.

01 = Valor del predivisor 1:2.

00 = Valor del predivisor 1:1.

bit 3 T1OSCEN: Habilitación del oscilador externo del TMR1.

1 = Oscilador habilitado T1OS.

0 = El oscilador es parado T1CKI habilitado.

bit 2 T1SYNC : Sincronización de la entrada de reloj externa.

Cuando TMR1CS = 1:

1 = No sincronizado con la entrada de reloj interno.

0 = Sincronización de la entrada del reloj externo.

Cuando TMR1CS = 0: Este bit es ignorado. Ya que utiliza el reloj interno.

bit 1 TMR1CS: Selección de la fuente de reloj para el TMR0.

1 = Reloj externo desde el pin T1OSO/T1CKI (en el flanco de subida).

0 = Reloj interno (FOSC/4).

bit 0 TMR1ON: Activación del TMR1.

1 = TMR1 activado.

0 = TMR1 parado.

Este periférico cuando pasa de FFFFh a 0000h puede producir una interrupción mediante el flag TMR1IF (PIR) siempre que estén habilitados los bits TMR1IE (PIE), PEIE (INTCON<6>) y GIE (INTCON<7>).

Page 7: Microcontroladores 8 Timers

MECATRONICASISTEMASMICROCONTROLADOS

144 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Como se puede ver el TMR1 permite funcionar con un predivisor de frecuencia de hasta 1:8.

Cuando actúa con un oscilador externo de tipo XT, dicho reloj puede estar o no sincronizado con el reloj interno. En el caso de que no lo esté, se puede utilizar para despertar al micro del modo SLEEP. En caso contrario no, ya que al dejar de funcionar el oscilador principal también lo haría el TMR1. En modo síncrono se puede utilizar como base de tiempos en operaciones de Captura y Comparación.

REGISTROS ASOCIADOS AL TIMER 1

8.3 TIMER 2 (TMR2).

Es un temporizador de 8 bits con un predivisor y un postdivisor asociados (figura 8.6). Si se usan ambos con su máximo valor, el tiempo para rebosar el TMR2 será semejante a tener un temporizador de 16 bits.

8.6 Diagrama de bloque del TMR2.

El registro de configuración del TMR2 es el T2CON que se describe a continuación:

Page 8: Microcontroladores 8 Timers

MECATRONICASISTEMASMICROCONTROLADOS

145 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

bit 7 Bit no implementado: Se lee como ‘0’.

bit 6-3 TOUTPS3:TOUTPS0: Selección del valor del postdivisor del TMR2.

0000 = Valor del postdivisor 1:1.

0001 = Valor del postdivisor 1:2.

.......

.......

1110 = Valor del postdivisor 1:15.

1111 = Valor del postdivisor 1:16.

bit 2 TMR2ON: Activación del TMR2.

1 = TMR2 activado.

0 = TMR2 parado.

bit 1-0 T2CKPS1:T2CKPS0: Selección del valor del predivisor del TMR2.

00 = Valor del predivisor 1:1

01 = Valor del predivisor 1:4

1x = Valor del predivisor 1:16

En el TMR2 aparece un registro llamado PR2 (registro de periodos), que reseteará al TMR2 cuando sean iguales sus valores. A su vez se incrementa el registro del postdivisor, que cuando rebosa produce una interrupción activando el bit TMR2IF (PIR), siempre que estén activados los bits TMR2IE (PIE), PEIE y GIE.

Este temporizador únicamente funciona con FOSC /4 del oscilador principal, por lo que a diferencia del TMR1, no se puede utilizar para sacar al micro del modo SLEEP.

Este temporizador se utiliza como base de tiempos en el modo PWM de los módulos CCP y es el encargado de generar la señal de reloj síncrona del módulo SSP.

REGISTROS RELACIONADOS CON EL TIMER 2