Академический Документы
Профессиональный Документы
Культура Документы
ATE-UNIOVI
ATE-UNIOVI
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
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
ATE-UNIOVI
Mpx 8:1
0 1
PSA
ATE-UNIOVI
PSA
PS2:PS0
MPX
RBPU INTEDG
ATE-UNIOVI
CLK/4)
ATE-UNIOVI
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
ATE-UNIOVI
Bit 7 Bit 6
ATE-UNIOVI
Bit 1 Bit 0
Bit 5
Bit 2
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
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
ATE-UNIOVI
Si se asigna a WDT tomara el valor 1
4 / fosc
ATE-UNIOVI ATE-UNIOVI
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
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
ATE-UNIOVI ATE-UNIOVI
NO
ATE-UNIOVI
NO
T0IF=1
ATE-UNIOVI
S
ATE-UNIOVI
Temporizadores
ATE-Universidad de Oviedo
CONT=0
ATE-UNIOVI
EJERCICIO
ATE-UNIOVI
ATE-UNIOVI
Emular el comportamiento del programa y verificar que el LED se enciendeATE-UNIOVI segn lo previsto.
ATE-UNIOVI
Temporizadores
ATE-Universidad de Oviedo
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
T1CKPS1:T1CKPS0
ATE-UNIOVI
ATE-UNIOVI
ATE-Universidad de Oviedo
Temporizadores
ATE-UNIOVI
00: 01: Prescaler 1:1. Prescaler 1:2.
ATE-UNIOVI
TMR1CS TMR1ON Prescaler 1:4. Prescaler 1:8.
T1CKPS1
T1SYNC
ATE-UNIOVI
10: 11:
ATE-UNIOVI
bit 2
ATE-UNIOVI
ATE-UNIOVI
bit 0
Temporizadores
10
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
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
ATE-UNIOVI
PSPIE ADIE RCIE
ATE-UNIOVI
CCP1IE TMR2IE TMR1IE
ATE-UNIOVI
ATE-UNIOVI
Registro PIR1 (0Ch) ATE-UNIOVI
PSPIF ADIF RCIF TXIF SSPIF
ATE-UNIOVI
CCP1IF
TMR2IF
TMR1IF
ATE-UNIOVI
Temporizadores
ATE-Universidad de Oviedo
12
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
ATE-UNIOVI CONT1=0
S 1 NO
NO
TMR1IF=0
S
ATE-UNIOVI
RA4=0
S
NO
CONT0=0 T0IF 0
S
Carga TMR0
ATE-UNIOVI
NO
PORTB 08h
Temporizadores
13
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
ATE-UNIOVI CONT1=0
S 1 NO
NO
TMR1IF=0
S
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=1
14
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
ATE-UNIOVI CONT1=0
S 1 NO
NO
TMR1IF=0
S
ATE-UNIOVI
RA4=0
S
NO
CONT0=0 T0IF 0
S
Carga TMR0
PORTB 08h
AM DE TM IENT O R1
Temporizadores
15
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
ATE-UNIOVI CONT1=0
S 1 NO
NO
TMR1IF=0
S
ATE-UNIOVI
RA4=0
S
NO
CONT0=0
S
Carga TMR0
ATE-UNIOVI
NO
PORTB 08h
ATE-UNIOVI
ATE-Universidad de Oviedo
T0IF=1
Temporizadores
0 CIO MR FUN DE T 16
TO EN MI A N
ATE-UNIOVI
EJERCICIO
ATE-UNIOVI
ATE-UNIOVI
Emular el comportamiento del programa y verificar que el LED se enciendeATE-UNIOVI segn lo previsto.
ATE-UNIOVI
ATE-Universidad de Oviedo
Temporizadores
17
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
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
ATE-UNIOVI
Cambiar RB3 FinT0 0 Inic. CONT0
1 S
ATE-UNIOVI
NO
ATE-UNIOVI RA4=0
NO S
FinT0=1
NO
ATE-UNIOVI
NO
PORTB 08h
Temporizadores
ATE-UNIOVI
ATE-Universidad de Oviedo
FinT1=1
RETFIE
19
ATE-UNIOVI
EJERCICIO
ATE-UNIOVI
ATE-UNIOVI
Emular el comportamiento del programa y verificar que el LED se enciendeATE-UNIOVI segn lo previsto.
ATE-UNIOVI
ATE-Universidad de Oviedo
Temporizadores
20
10
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
ATE-UNIOVI
Temporizador 00:00
RA4 RC2
ATE-UNIOVI
(*) RB0 en placas PICDEM 2 PLUS 21
ATE-UNIOVI
ATE-Universidad de Oviedo
Temporizadores
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
Decr. CONT
RA4=0
NO NO
ATE-UNIOVI
S
CONT = 0
ATE-UNIOVI
S
RC2=0
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
ATE-UNIOVI
Muestra Pulsa C
Se pulsa C. ATE-UNIOVI
ATE-UNIOVI
Pasan 5 seg. (TMR0)
ATE-UNIOVI
Pasan 10 seg. (TMR1)
ESTADO S1
ATE-UNIOVI
ATE-UNIOVI
ATE-UNIOVI
ATE-UNIOVI
ATE-Universidad de Oviedo
Temporizadores
23
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 S2
ATE-UNIOVI
ATE-UNIOVI
ATE-Universidad de Oviedo
Temporizadores
24
12