Вы находитесь на странице: 1из 12

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI ATE-UNIOVI ATE-UNIOVI ATE-UNIOVI ATE-UNIOVI


Temporizadores
ATE-Universidad de Oviedo

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

CARACTERSTICAS GENERALES ATE-UNIOVI

Temporizador TMR0

ATE-UNIOVI

ATE-UNIOVI

Contador / Temporizador de 8 bits que se pueden leer y escribir. Prescaler de 8 bits programable por software. Generacin de interrupcin al desbordarse de FFh a 00h. Se puede seleccionar el flanco activo si se usa reloj externo.

ATE-UNIOVI
Temporizador TMR1

ATE-UNIOVI

Contador / Temporizador de 16 bits que se pueden leer y escribir. Prescaler programable por software. Generacin de interrupcin al desbordarse de FFFFh a 0000h. Puede activarse o desactivarse.

ATE-UNIOVI

ATE-UNIOVI

Temporizador TMR2 Temporizador de 8 bits que se pueden leer y escribir. Prescaler para el reloj y postscaler para la salida. TMR2 se incrementa hasta alcanzar el valor de PR2. Puede activarse o desactivarse.

ATE-UNIOVI

ATE-UNIOVI
ATE-Universidad de Oviedo

Temporizadores

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

TEMPORIZADOR TMR0/WDT ATE-UNIOVI


CLKOUT (fOSC/4) 0

ATE-UNIOVI
Bus de datos

RA4 / T0CKl
T0SE

M P X

ATE-UNIOVI
1 0

M P X

SYNC 2 ciclos

TMR0
Levanta flag T0IF ATE-UNIOVI al desbordarse

ATE-UNIOVI
Watchdog
Habilitacin de WDT

T0CS

PSA

0 1

M P X

Prescaler de 8 bits ATE-UNIOVI


8

ATE-UNIOVI

Mpx 8:1
0 1

PSA

ATE-UNIOVI
PSA

PS2:PS0

ATE-UNIOVI Temporizacin del WDT


Temporizadores
ATE-Universidad de Oviedo

MPX

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

Registro OPTION_REG (81h, 181h) ATE-UNIOVI ATE-UNIOVI


RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

bit 7 bit 6 bit 5 bit 4 bit 3

RBPU INTEDG

ATE-UNIOVI
CLK/4)

ATE-UNIOVI 0: Reloj interno (f

T0CS: Seleccin del reloj a utilizar


1: Reloj externo (RA4) 1: Flanco de bajada

ATE-UNIOVI

T0SE: Seleccin del flanco activo del reloj externo

ATE-UNIOVI PSA: Asignacin del prescaler


0: Flanco de subida 0: Asignado a TMR0 1: Asignado a WDT 100: 101: 110: 111: 1:32 para TMR0 / 1:16 para WDT. 1:64 para TMR0 / 1:32 para WDT. 1:128 para TMR0 / 1:64 para WDT. 1:256 para TMR0 / 1:128 para WDT. 4

ATE-UNIOVI 000: 1:2 para TMR0 / 1:1 para WDT.


bits 2:0 PS2:PS0: Prescaler

ATE-UNIOVI

001: 1:4 para TMR0/ 1:2 para WDT. 010: 1:8 para TMR0 / 1:4 para WDT. 011: 1:16 para TMR0 / 1:8 para WDT.

ATE-UNIOVI
ATE-Universidad de Oviedo

Temporizadores

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI
Bit 7 Bit 6

Registro TMR0 (01h, 101h)


Bit 4 Bit 3

ATE-UNIOVI
Bit 1 Bit 0

Bit 5

Bit 2

* Muestra en todo momento el nmero de pulsos que se han producido.

ATE-UNIOVI

Cuenta desde 0 (0x00) hasta 255 (0xFF). La cuenta es cclica: tras el 255 se vuelve al 0 (desbordamiento). Si cuenta pulsos del oscilador, est constantemente incrementndose.

ATE-UNIOVI

ATE-UNIOVI

Registro INTCON (0Bh, 8Bh, 10Bh, 18Bh)


GEIE PEIE T0IE INTE RBIE T0IF INTF RBIF

ATE-UNIOVI

* Se puede generar una interrupcin cada vez que se desborda ATE-UNIOVI TMR0. ATE-UNIOVI
Es preciso habilitar la interrupcin por overflow de TMR0 (T0IE=1). Tambin hay que habilitar la mscara global de interrupciones (GEIE=1). Aun sin habilitar la interrupcin, T0IF siempre se pone a 1 tras un overflow de TMR0. El usuario debe encargarse de hacer T0IF=0 en el programa.

ATE-UNIOVI
ATE-Universidad de Oviedo

Temporizadores

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

Clculo de la temporizacin en TMR0 ATE-UNIOVI ATE-UNIOVI

temp = [(256 carga) PS + 2] Tinstr


Temporizacin

ATE-UNIOVI
Si se asigna a WDT tomara el valor 1

4 / fosc

Incrementos hasta ATE-UNIOVI desbordamiento

ATE-UNIOVI ATE-UNIOVI

sincronizacin tras cargar TMR0

ATE-UNIOVI Ciclos de

Se llama carga al valor que se asigna al registro TMR0 (01h, 101h) al comenzar la temporizacin.

El valor del prescaler PS queda determinado por los tres bits ms bajos del registro OPTION_REG (81h, 181h). Si el prescaler se le asigna al watchdog (bit PSA=1), se tiene PS=1 para esta expresin.

ATE-UNIOVI

ATE-UNIOVI
ATE-Universidad de Oviedo

Temporizadores

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI

Ejemplo 1 (temp01.asm)

Fichero incluido con el curso. Utiliza el temporizador TMR0 para hacer que el LED conectado a RB3 parpadee: 500ms encendido y 500ms apagado.

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI
Carga TMR0

INICIALIZACIN * Define E/S * Configura TMR0 * Inicializa CONT

ATE-UNIOVI ATE-UNIOVI
NO

ATE-UNIOVI
NO

T0IF=1

ATE-UNIOVI
S

Cambia RB3 Inicializa CONT

ATE-UNIOVI
Temporizadores
ATE-Universidad de Oviedo

T0IF 0 CONT CONT-1

CONT=0

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI

EJERCICIO

ATE-UNIOVI

Comprobar ATE-UNIOVI el funcionamiento del programa temp01.asm

ATE-UNIOVI Crear un proyecto con dicho fichero.

ATE-UNIOVI

Emular el comportamiento del programa y verificar que el LED se enciendeATE-UNIOVI segn lo previsto.

ATE-UNIOVI ATE-UNIOVI Introducir las modificaciones necesarias para que el LED


est 500ms encendido y 1s apagado.

Visualizar el contenido de algunos registros usando una ventana de visualizacin (Watch).

ATE-UNIOVI
Temporizadores
ATE-Universidad de Oviedo

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

TEMPORIZADOR TMR1 ATE-UNIOVI


Levanta flag TMR1IF al desbordarse

ATE-UNIOVI
0 Entrada de reloj sincronizada

TMR1H

TMR1L

ATE-UNIOVI
1 TMR1ON On/off 1 T1SYNC

ATE-UNIOVI
RC0 T1OSO T1CKl RC1 T1OSI CCP2
T1OSC

ATE-UNIOVI
Deteccin de sincronizacin
Reloj interno

ATE-UNIOVI
0

Prescaler 1,2,4,8
2

ATE-UNIOVI

TMR1CS fOSC/4 Reloj interno

T1CKPS1:T1CKPS0

T1OSCEN Habilita oscilador

ATE-UNIOVI

ATE-UNIOVI
ATE-Universidad de Oviedo

Temporizadores

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI
00: 01: Prescaler 1:1. Prescaler 1:2.

Registro T1CON (10h)


T1CKPS0 T1OSCEN

ATE-UNIOVI
TMR1CS TMR1ON Prescaler 1:4. Prescaler 1:8.

T1CKPS1

T1SYNC

bits 5-4 T1CKPS1:T1CKPS0: Seleccin del prescaler

ATE-UNIOVI
10: 11:

ATE-UNIOVI bit 3 T1OSCEN: Habilitacin del oscilador de TMR1


0: Apagado 1: Habilitado

ATE-UNIOVI

bit 2

T1SYNC: Control de la sincronizacin con el reloj externo


Slo si TMR1CS=1 0: Sincronizar 1: No sincronizar

ATE-UNIOVI

bit 1 TMR1CS: Reloj de TMR1 ATE-UNIOVI 0: Reloj interno (f /4).


OSC

1: Reloj externo ( en RC0).

ATE-UNIOVI

bit 0

TMR1ON: Bit de encendido de TMR1


0: TMR1 apagado.

1: TMR1 encendido. ATE-UNIOVI


ATE-Universidad de Oviedo

Temporizadores

10

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

Registros TMR1L (0Eh) y TMR1H (0Fh) ATE-UNIOVI ATE-UNIOVI


7 0 7 0 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 TMR1H Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

ATE-UNIOVI * Muestran en todo momento el nmero de pulsos que se han producido.


TMR1L

ATE-UNIOVI

Cuenta desde 0 (0x0000) hasta 65.535 (0xFFFF). La cuenta es cclica: tras el 65.535 se vuelve al 0 (desbordamiento). Puede apagarse.

ATE-UNIOVI

Registro INTCON (0Bh, 8Bh, 10Bh, 18Bh)

ATE-UNIOVI
INTE RBIE

ATE-UNIOVI * Se puede generar una interrupcin cada vez que se desborda ATE-UNIOVI TMR1.
La habilitacin de la interrupcin correspondiente se hace en otro registro. En este registro hay que habilitar la mscara global de interrupciones (GEIE=1). Tambin se habilita el registro de interrupciones generadas por perifricos (PEIE=1).

GEIE

PEIE

T0IE

T0IF

INTF

RBIF

ATE-UNIOVI
ATE-Universidad de Oviedo

Temporizadores

11

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI
PSPIE ADIE RCIE

Registro PIE1 (8Ch)


TXIE SSPIE

ATE-UNIOVI
CCP1IE TMR2IE TMR1IE

* Contiene los bits de habilitacin de varias interrupciones generadas por perifricos.


Se puede generar una interrupcin cada vez que se desborda TMR1. Para ello hay que habilitar dicha interrupcin (TMR1IE=1).

ATE-UNIOVI

ATE-UNIOVI
Registro PIR1 (0Ch) ATE-UNIOVI
PSPIF ADIF RCIF TXIF SSPIF

ATE-UNIOVI

CCP1IF

TMR2IF

TMR1IF

* Contiene los flags de las interrupciones contenidas en PIE1. ATE-UNIOVI ATE-UNIOVI


Aun sin habilitar la interrupcin, TMR1IF siempre se pone a 1 tras un overflow de TMR1.

ATE-UNIOVI
Temporizadores
ATE-Universidad de Oviedo

El usuario debe encargarse de hacer TMR1IF=0 en el programa.

12

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI
Define E/S Configura TMR0 Configura TMR1

Ejemplo 2 (temp02.asm)

Fichero incluido con el curso. Utiliza el temporizador TMR0 para hacer que el LED conectado a RB3 parpadee: 500ms encendido y 500ms apagado. Este parpadeo slo se produce durante 5s (temporizados con TMR1).

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI
1

Inicializa CONT0 Inicializa CONT1 PORTB FFh

Carga TMR1 TMR1IF 0 T0IF 0 TMR1 ON

ATE-UNIOVI CONT1=0
S 1 NO

NO

ATE-UNIOVI Cambiar RB3


Inic. CONT0
S NO

TMR1IF=0
S

TMR1IF 0 Decr. CONT1

ATE-UNIOVI
RA4=0
S

NO

CONT0=0 T0IF 0
S

Carga TMR0

ATE-UNIOVI
NO

PORTB 08h

T0IF=1 Decr. CONT0 ATE-UNIOVI


ATE-Universidad de Oviedo

Temporizadores

13

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI
Define E/S Configura TMR0 Configura TMR1

Ejemplo 2 (temp02.asm)

Fichero incluido con el curso. Utiliza el temporizador TMR0 para hacer que el LED conectado a RB3 parpadee: 500ms encendido y 500ms apagado. Este parpadeo slo se produce durante 5s (temporizados con TMR1).

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI
1

Inicializa CONT0 Inicializa CONT1 PORTB FFh

Carga TMR1 TMR1IF 0 T0IF 0 TMR1 ON

ATE-UNIOVI CONT1=0
S 1 NO

NO

ATE-UNIOVI Cambiar RB3


Inic. CONT0
S NO

TMR1IF=0
S

TMR1IF 0 Decr. CONT1

ATE-UNIOVI
RA4=0
S

NO

CONT0=0
S

Carga TMR0

ATE-UNIOVI
NO

PORTB 08h
N ACI LIZ A I Temporizadores NIC

ATE-UNIOVI
ATE-Universidad de Oviedo

T0IF 0 Decr. CONT0

T0IF=1

14

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI
Define E/S Configura TMR0 Configura TMR1

Ejemplo 2 (temp02.asm)

Fichero incluido con el curso. Utiliza el temporizador TMR0 para hacer que el LED conectado a RB3 parpadee: 500ms encendido y 500ms apagado. Este parpadeo slo se produce durante 5s (temporizados con TMR1).

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI
1

Inicializa CONT0 Inicializa CONT1 PORTB FFh

Carga TMR1 TMR1IF 0 T0IF 0 TMR1 ON

ATE-UNIOVI CONT1=0
S 1 NO

NO

ATE-UNIOVI Cambiar RB3


Inic. CONT0
S NO

TMR1IF=0
S

TMR1IF 0 Decr. CONT1

ATE-UNIOVI
RA4=0
S

NO

CONT0=0 T0IF 0
S

Carga TMR0

FUN ATE-UNIOVI CIO N


NO

PORTB 08h

T0IF=1 Decr. CONT0 ATE-UNIOVI


ATE-Universidad de Oviedo

AM DE TM IENT O R1

Temporizadores

15

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI
Define E/S Configura TMR0 Configura TMR1

Ejemplo 2 (temp02.asm)

Fichero incluido con el curso. Utiliza el temporizador TMR0 para hacer que el LED conectado a RB3 parpadee: 500ms encendido y 500ms apagado. Este parpadeo slo se produce durante 5s (temporizados con TMR1).

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI
1

Inicializa CONT0 Inicializa CONT1 PORTB FFh

Carga TMR1 TMR1IF 0 T0IF 0 TMR1 ON

ATE-UNIOVI CONT1=0
S 1 NO

NO

ATE-UNIOVI Cambiar RB3


Inic. CONT0
S NO

TMR1IF=0
S

TMR1IF 0 Decr. CONT1

ATE-UNIOVI
RA4=0
S

NO

CONT0=0
S

Carga TMR0

ATE-UNIOVI
NO

PORTB 08h

ATE-UNIOVI
ATE-Universidad de Oviedo

T0IF 0 Decr. CONT0

T0IF=1

Temporizadores

0 CIO MR FUN DE T 16

TO EN MI A N

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI

EJERCICIO

ATE-UNIOVI

Comprobar ATE-UNIOVI el funcionamiento del programa temp02.asm

ATE-UNIOVI Crear un proyecto con dicho fichero.

ATE-UNIOVI

Emular el comportamiento del programa y verificar que el LED se enciendeATE-UNIOVI segn lo previsto.

ATE-UNIOVI ATE-UNIOVI Introducir las modificaciones necesarias para que el LED


est parpadeando 7s a una velocidad mayor que la dada inicialmente.

Visualizar el contenido de algunos registros usando una ventana de visualizacin (Watch).

ATE-UNIOVI
ATE-Universidad de Oviedo

Temporizadores

17

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

UTILIZACIN de INTERRUPCIONES ATE-UNIOVI

Es muy habitual que en los programas las temporizaciones se lleven a cabo mientras se estn ejecutando otras tareas. En estos casos, es preferible dejar que sea el propio microcontrolador el que nos avise de cundo ha finalizado la temporizacin, sin que el programa principal tenga que estar verificando peridicamente si se ha levantado el flag correspondiente.

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI

El servicio de una interrupcin producida por desbordamiento de uno de los temporizadores del microcontrolador deber encargarse de: a) Guardar el estado del sistema (W, STATUS, PCLATH). b) Borrar el flag de la interrupcin. c) Generar los cambios que permitan que el programa principal pase a otro modo de funcionamiento. d) Si la temporizacin precisa de varios desbordamientos del temporizador, recargar el temporizador y actualizar la cuenta de overflows producidos.

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI
ATE-Universidad de Oviedo

Temporizadores

18

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI
Define E/S Configura TMR0 Configura TMR1

Ejemplo 3 (temp03.asm)

Fichero incluido con el curso. Hace uso de las interrupciones asociadas a TMR0 y TMR1 para repetir el funcionamiento de temp02.asm.

ATE-UNIOVI
TMRxIF 0 Decr. CONTx Carga TMRx CONTx=0
S

ATE-UNIOVI

ATE-UNIOVI
1

GEIE 0 Inicializa CONT0 Inicializa CONT1 PORTB FFh

ATE-UNIOVI
Cambiar RB3 FinT0 0 Inic. CONT0
1 S

Carga TMR0 Carga TMR1 TMR1 ON TMR1IF 0 T0IF 0 GEIE 1

ATE-UNIOVI
NO

ATE-UNIOVI RA4=0
NO S

FinT0=1
NO

ATE-UNIOVI
NO

[TMRx OFF] FinTx 1

PORTB 08h
Temporizadores

ATE-UNIOVI
ATE-Universidad de Oviedo

FinT1=1

RETFIE
19

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI

EJERCICIO

ATE-UNIOVI

Comprobar ATE-UNIOVI el funcionamiento del programa temp03.asm

ATE-UNIOVI Crear un proyecto con dicho fichero.

ATE-UNIOVI

Emular el comportamiento del programa y verificar que el LED se enciendeATE-UNIOVI segn lo previsto.

ATE-UNIOVI ATE-UNIOVI Introducir las modificaciones necesarias para que el LED


est parpadeando 7s a una velocidad mayor que la dada inicialmente.

Visualizar el contenido de algunos registros usando una ventana de visualizacin (Watch).

ATE-UNIOVI
ATE-Universidad de Oviedo

Temporizadores

20

10

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

EJERCICIO PROPUESTO ATE-UNIOVI

Desarrollar un cronmetro digital capaz de temporizar 60 minutos en cuenta ascendente.

ATE-UNIOVI

ATE-UNIOVI

El cronmetro arrancar parado mostrando 00:00 y slo se pondr en marcha si se acciona el pulsador RA4. A partir de ese momento, la cuenta se ir incrementando de segundo en segundo.

ATE-UNIOVI

Si durante el funcionamiento del cronmetro se pulsa el botn RC2(*), la cuenta se detendr. Tras pulsar de nuevo RA4, la temporizacin contina desde el punto en que se haba detenido.

ATE-UNIOVI

ATE-UNIOVI

La cuenta debe ser cclica: al minuto 59 debe seguirle el minuto 00.

ATE-UNIOVI

Temporizador 00:00

RA4 RC2

ATE-UNIOVI
(*) RB0 en placas PICDEM 2 PLUS 21

ATE-UNIOVI
ATE-Universidad de Oviedo

Temporizadores

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI
Define E/S Configura TMR0 Configura LCD Inicializa vars.

Algunas ideas
T0IF 0 Carga TMR0 ON=0

ATE-UNIOVI
S

ATE-UNIOVI
NO

Activar interrupciones de TMR0. Cada 1/n segundos se genera una interrupcin.

ATE-UNIOVI Escribe MM:SS


ON 1
S

Decr. CONT

Tras n interrupciones, ATE-UNIOVI hay que aumentar en una


NO

RA4=0
NO NO

ATE-UNIOVI
S

CONT = 0

unidad la cuenta de segundos.

ATE-UNIOVI
S

RC2=0

CONT n Ajusta SS Ajusta MM RETFIE

ON 0

Fuera de la interrupcin, ATE-UNIOVI el programa se limita a escribir la hora y a explorar las teclas.
22

Puede que sea necesario ajustar las decenas de segundo y/o los minutos.

ATE-UNIOVI
Temporizadores
ATE-Universidad de Oviedo

11

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

EJERCICIO ALTERNATIVO ATE-UNIOVI ESTADO S0

Completar el funcionamiento del sistema de identificacin de claves.

ATE-UNIOVI

Muestra Pulsa C
Se pulsa C. ATE-UNIOVI

ATE-UNIOVI
Pasan 5 seg. (TMR0)

ATE-UNIOVI
Pasan 10 seg. (TMR1)

ESTADO S1

Muestra Introduzca cdigo

ATE-UNIOVI

ATE-UNIOVI

Se introduce un cdigo correcto

ESTADO S2 Muestra Puerta abierta

ATE-UNIOVI

ATE-UNIOVI
ATE-Universidad de Oviedo

Temporizadores

23

Diseo de Aplicaciones Prcticas con Microcontroladores PIC

ATE-UNIOVI

Algunas ideas

En el estado S1, adems de leer las teclas para determinar si el cdigo introducido es el correcto, se cargar TMR0 con el valor adecuado y se habilitar su interrupcin.

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI

En el estado S2 se deshabilita la interrupcin por desbordamiento del temporizador TMR0. Tambin en este estado S2 se encender TMR1 tras haberlo cargado con el valor adecuado para llevar a cabo la temporizacin deseada. La interrupcin asociada a TMR1 debe estar habilitada. est habilitada ninguna de las interrupciones asociadas a los temporizadores.
ESTADO S0 Muestra Pulsa C
Se pulsa C. Pasan 5 seg. (TMR0)

ATE-UNIOVI
Pasan 10 seg. (TMR1)

ATE-UNIOVI
Se introduce un cdigo correcto

ESTADO S1 Muestra Introduzca cdigo

Asegurarse de que en el estado S0 no ATE-UNIOVI

ESTADO S2

ATE-UNIOVI

Muestra Puerta abierta

ATE-UNIOVI
ATE-Universidad de Oviedo

Temporizadores

24

12

Вам также может понравиться