SlideShare una empresa de Scribd logo
1 de 19
UNIVERSIDAD RICARDO PALMA
EL TIMER0 DEL 16F84A
Microcontroladores
UNIVERSIDAD TECNOLÒGICA EL PERÙ
FACULTAD DE INGENIERÍA ELECTRÓNICA
CIRCUITOS DIGITALES II
MICROCONTROLADORES PIC
DOCENTE: ING. Luis Pacheco Cribillero
REGISTROS ASOCIADOS AL
TEMPORIZADOR TMR0
• TMR0: Registro de 8 bits de lectura/escritura
• OPTION: Configura al TMR0 para que trabaje como
temporizador ó contador y asigna el valor al prescaler
• INTCON: Da información mediante el bit “TOIF”
cuando el TMR0 se ha desbordado.
• TRISA (PUERTO A): Permite el ingreso de pulsos
cuando el TMR0 está configurado como contador por
RA4
22/05/13 2ING. Luis Pacheco Cribillero
REGISTRO OPTION (Dirección 81H)
• bit 7, RPBU : Resistencia Pull-up, Puerto B, habilita el bit
1: Desactivadas
0: Activadas
• bit 6, INTEDG: Flanco activo para el control de interrupciones
1: Con flanco Ascendente
0: Con flanco Descendente
• bit 5, TOCS: Fuente de Reloj para TMR0
1: Pulsos introducidos a través de RA4/T0CK1 (Contador)
0: Pulsos de reloj interno Fosc/4 (Temporizador)
• bit 4, TOSE: Tipo de flanco en TOCK1
1: Incremento de TMR0 cada flanco descendente
0: Incremento de TMR0 cada flanco ascendente
• bit 3, PSA: Bit de asignación del prescaler divisor de frecuencia
1: El divisor de frecuencia se asigna al WDT
0: El divisor de frecuencia se asigna al TMR0
• bit 2-0, PS2:PSO: Rango con el que actúa el divisor de frecuencia.
22/05/13 3ING. Luis Pacheco Cribillero
EJEMPLOS DE CONFIGURACIÓN
• Configure al PIC16F84 para que el temporizador TMR0, trabaje con los
pulsos provenientes de un reloj externo, y el mismo cambie en el flanco
de subida del pulso externo:
• Configure al PIC16F84 para que el TMR0, trabaje con el reloj interno y la
frecuencia del mismo sea dividida por 32:
¿Y los demás bits?
¿Cómo lo cargo al OPTION?
En el primer caso:
movlw b’xx11xxxx1’
movwf OPTION
En el segundo caso:
movlw b’xx0x0100’
movwf OPTION
OPTION_REG
OPTION_REG
22/05/13 4ING. Luis Pacheco Cribillero
TEMPORIZADOR TMR0
• Registro asociado al Timer0. Se encuentra en la posición 01H de la
memoria RAM. Es el corazón del módulo Timer0. Puede ser leído o
escrito en cualquier momento. El TMR0 se incrementará
automáticamente por cada ciclo de instrucción y contará desde 0 (00H)
hasta 255 (FFH) (Contador de 8 bits).
• Para que opere como temporizador, el bit TOCS (del registro OPTION)
debe ser cero (0), el bit PSA= 0 y deben ser cargados los bits PS2 a
PS0, según sea el preescaler a utilizar para lograr nuestra
temporización.
• Para que opere como contador, se usa una entrada de reloj externo en el
TMR0 y se deben de cumplir ciertos requisitos para que el reloj externo
pueda ser sincronizado con el reloj interno (TOSC). Además existe un
retardo en el incremento real del TMR0, después de la sincronización. El
bit TOCS= 1. Se debe seleccionar el tipo de flanco que producirá el
incremento del TMR0 ( TOSE = 1 ó 0).
22/05/13 5ING. Luis Pacheco Cribillero
¿QUÉ ES EL PRESCALER?
• Divide la frecuencia de reloj de entrada del Timer0, entre valores predefinidos,
como se ve en la tabla asociada al registro OPTION, 1:32, 1: 64, 1:256, etc.,
genera una nueva señal de menor frecuencia a la salida, que será la señal de reloj
de entrada al registro TMR0.
• “Ralentiza” señales de entrada demasiado rápidas para nuestros propósitos.
• También existe un postescaler, asociado al perro guardián WDT (Watch Dog
Timer) del microcontrolador, pero en este caso recibe el nombre de postcaler ya
que se usa a la salida del WDT, no pudiendo estar asignado a la vez al Timer0 o al
WDT. El preescaler es transparente para el programador, no se puede leer ni
escribir sobre él, pero se puede seleccionar por software, como ya se ha dicho,
mediante el registro OPTION.
• Nota: Para evitar un RESET no deseado del sistema, es necesario ejecutar una
secuencia de instrucciones específicas cuando se cambia la asignación del
prescaler del TMR0 al WDT. Esta secuencia debe ser seguida, aún cuando el WDT
esté inactivo.
22/05/13 6ING. Luis Pacheco Cribillero
¿CÓMO CUENTA EL TMR0?
El TMR0 cuenta exclusivamente de
forma ascendente, nunca descendente.
Si el TMR0 se carga con un valor,
éste comenzará a contar desde el
valor cargado hasta que se
desborda (cuando pasa a 00H)
00H
FFH
00H
00H
FFH
Valor cargado
En el TMR0
00H
(28
– N10)
22/05/13 7ING. Luis Pacheco Cribillero
CÁLCULOS CON EL TMR0
• Cuando se carga en el registro TMR0 un valor XXH, él mismo
contará: (FFH – XXH) impulsos y el tiempo que tarda en hacerlo
viene dado por la expresión:
 Temporización= 4 * TOSC * Valor Real TMR0 * Rango del divisor
de Frecuencia
 Valor Real TMR0 = (28
– N10) = (256 – N10)
 N10= Valor a cargar en el TMR0
Ejemplo: Sea un valor a cargar en el TMR0 de 100, un prescaler
seleccionado de 1:32 y un oscilador XT. Determine el tiempo en
que tardará el TMR0 en desbordarse.
Solución: Sea XT = Frecuencia = 4 MHz, T = 0.25 μs.
Temporización= 4*0.25 μs* (256 – 100) * 32 = 4.992 ms.
22/05/13 8ING. Luis Pacheco Cribillero
OTROS EJEMPLOS
• Se desea saber: ¿Qué valor debemos cargar en el TMR0, si
deseamos obtener una temporización de 10,24 ms, utilizando un
preescaler de 128 y un cristal XT?
Solución:
(256 – N10
) = = = 80
(256 – N10
) = 80, despejando N10
= (256 – 80) = 176, el valor que debemos
cargar en el TMR0 es 176, para que éste cuente desde 176 hasta 256.
• Elegir el TMR0, para generar un retraso de 1.5 ms utilizando un
oscilador de 10 MHz.
Solución: Sea Fosc= 10 MHz, T = 100 ns
(256 – N10
) = =
N10
= 256 - (3750/RgoDivisor)
RgodivisorT
iónTemporizac
OSC ∗∗4 12825.04
24,10
∗∗ s
ms
µ
RgodivisorT
iónTemporizac
OSC ∗∗4 RgoDivisorns
ms
∗∗1004
5.1
22/05/13 9ING. Luis Pacheco Cribillero
Démosle valores al Rango del divisor, hasta obtener un valor que se
acerque lo más posible al retardo propuesto:
Si Prescaler= 256, Valor a cargar en el TMR0= 241 (redondeado)
Si Prescaler= 128, Valor a cargar en el TMR0= 227 (redondeado)
Si Prescaler= 64, Valor a cargar en el TMR0= 197 (redondeado)
Si Prescaler= 32, Valor a cargar en el TMR0= 139 (redondeado)
Etc…
A manera de práctica, realice usted, el cálculo de la Temporización, para
cada uno de los valores que se consiguieron en los cálculos anteriores.
Escoja uno y justifique. Particularmente parece que el que tiene el rango
de divisor de 64, es el mejor.
• Nota: En este ejercicio resuelto, usted puede darse cuenta de que no
hay un solo resultado para los ejercicios, pero lo que si debe cumplirse
es que sea cualquiera que sean los valores que se tomen para los
cálculos, estos deben de estar cercanos a la respuesta que se espera del
temporizador que esté diseñando.
CONTINUACIÓN EJEMPLO ANTERIOR
22/05/13 10ING. Luis Pacheco Cribillero
• Ejemplo. Diga ¿cuánto es la máxima temporización que se puede
hallar con el TMR0? Asuma que se está trabajando con un XT.
Solución: Tomamos el máximo factor de escala de división todos
los estados que puede contar el TMR0:
– Temporización= 4*0.25 μs*(256 )*256 = 65.536 ms.
– Este es el máximo valor que podemos conseguir del TMR0.
• ¿Cómo hacemos entonces para conseguir valores superiores a
éste, tales como 0,5 s; 1 s; 2 s; entre otros?
– Esto se puede arreglar si tenemos un contador de mayor
número de bits. La solución está en extender el Timer0 con
un registro (auxiliar) controlado por software.
– Dicho registro (auxiliar) contará el número de interrupciones
por desbordamiento que genera el Timer0, de forma de que
éste pase por cero, cuando haya pasado el tiempo que
estamos calculando.
22/05/13 11ING. Luis Pacheco Cribillero
USO DE REGISTRO AUXILIAR
Pasos:
1. Escoger un valor para el prescaler.
Un posible criterio es calcular todas las frecuencias de prescaler que
podemos obtener con cada divisor posible. Las frecuencias sin decimales
son interesantes al poder encontrar múltiplos de ellas a la salida del
TMR0 con mayor facilidad. En general, la elección del valor del
prescaler es empírica: depende del problema, la experiencia y sobre
todo de la práctica.
2. Determinar el valor del Registro Auxiliar, a partir del valor dado por
el TMR0.
Normalmente viene dado por un múltiplo de la frecuencia, asociada al
tiempo calculado. Con un ejemplo entenderemos mejor lo que se desea
plantear:
Ejemplo: Determine los valores del TMR0 y del Registro Auxiliar para
conseguir una temporización de 1 segundo. Utilice un oscilador XT.
Solución: XT= Frecuencia = 4 MHz ; Tosc= 250 ns
• Paso 1. Como no se nos ha impuesto que prescaler utilizar ni que
temporización, podemos aleatoria mente escogerlas, como en el ejemplo
6. Evaluando cualquiera, cuya temporización del TMR0 se basó en 5 ms,
escojamos el prescaler 128 y sustituyamos los valores en la ecuación
principal:
– Temporización= 4*250 ns*(256 - 217)*128 = 4.992 ms
22/05/13 12ING. Luis Pacheco Cribillero
CONTINUACIÓN DEL EJEMPLO ANTERIOR
• Paso 2. ¿Qué valor debe de tener el registro auxiliar?
a) Al tiempo de 4.992 ms, se asocia una frecuencia del TMR0 de =
= 200.3 Hz, redondeando, tomamos este múltiplo:
200, Así, tendremos entonces que si multiplicamos 200*4.992
ms = 0.998 s, que es un valor bastante cercano a 1 segundo.
b) La misma operación pero interpretada de una forma más sencilla
es determinar cuantas veces necesitamos al tiempo calculado
para lograr un segundo:
La que usted entienda mejor es válida.
Nuestro registro auxiliar debe ser de 200!!!
Recuerde de que éste registro auxiliar no debe superar 255.
Si supera este valor, se debe adicionar un nuevo registro
auxiliar
ms992.4
1
32.200
992.4
1
=
ms
segundo
22/05/13 13ING. Luis Pacheco Cribillero
DE LOS CÁLCULOS A LA PROGRAMACIÓN
• Realicemos un ejercicio completo: Realice un programa que
permita encender y apagar un led cada 15 ms, mediante el
timer0. Utilice un oscilador XT.
22/05/13 14ING. Luis Pacheco Cribillero
DE LOS CÁLCULOS A LADE LOS CÁLCULOS A LA
PROGRAMACIÓNPROGRAMACIÓN
Paso 2. Debemos de
estructurar el programa
para que vigile e informe
cuando el TMR0 se ha
desbordado, y el bit que nos
da esta información es el
TOIF, del Registro
INTCON. Adicional a esto
debemos configurar el
registro OPTION para que
este trabaje con el
prescaler que hemos
seleccionado para nuestros
cálculos, así como de
asignarlo al TMR0. Así como
la rutinaria configuración
de los puertos.
22/05/13 15ING. Luis Pacheco Cribillero
LIST P=16F84A
INCLUDE P16F84A.INC
ORG 00H
GOTO INICIO
INICIO BSF STATUS,5
CLRF TRISA
MOVLW B’11010110’
MOVWF OPTION_REG
BCF STATUS,5
CLRF INTCON
LEDON BSF PORTA,0
CALL RETARDO
LEDOFF BCF PORTA,0
CALL RETARDO
GOTO LEDON
;***RUTINA DE RETARDO***
RETARDO MOVLW D’139’
MOVWF TMR0
ESPERA BTFSS INTCON,TOIF
GOTO ESPERA
BCF INTCON,TOIF
RETURN
END
Paso 3. Programa
22/05/13 16ING. Luis Pacheco Cribillero
Ejercicio. Realice
un programa que
permita encender
y apagar un led
cada un segundo.
Mediante Timer0
y con un oscilador
XT.
Programa Principal
Subru
22/05/13 17ING. Luis Pacheco Cribillero
22/05/13 18ING. Luis Pacheco Cribillero
¿OTRA FORMA DE HACER LOS CÁLCULOS?
• Pero si aún le enredan todas estas fórmulas, para calcular
temporizaciones, probemos con estas tres:
Pruebe ahora realizar los mismos cálculos siguiendo el 1, 2, 3…
22/05/13 19ING. Luis Pacheco Cribillero
¡ GRACIAS !!!...¡ GRACIAS !!!...

Más contenido relacionado

La actualidad más candente

Puertos de Comunicacion
 Puertos de Comunicacion Puertos de Comunicacion
Puertos de Comunicacionannyjuli
 
Radioenlaces ejercicios propuestos
Radioenlaces ejercicios propuestosRadioenlaces ejercicios propuestos
Radioenlaces ejercicios propuestosacaymo fettmilch
 
Pirometros y Medición de Temperatura Keller
Pirometros y Medición de Temperatura KellerPirometros y Medición de Temperatura Keller
Pirometros y Medición de Temperatura Kellervinkoc
 
Lecture 14 modulacion digital parte 2
Lecture 14 modulacion digital    parte 2Lecture 14 modulacion digital    parte 2
Lecture 14 modulacion digital parte 2nica2009
 
Lecture 7 probabilidad de error de transmisión pcm. formateo de señales dpcm,...
Lecture 7 probabilidad de error de transmisión pcm. formateo de señales dpcm,...Lecture 7 probabilidad de error de transmisión pcm. formateo de señales dpcm,...
Lecture 7 probabilidad de error de transmisión pcm. formateo de señales dpcm,...nica2009
 
Circuitos Electronicos 5
Circuitos Electronicos 5Circuitos Electronicos 5
Circuitos Electronicos 5F Blanco
 
Actividad no.2 grupal
Actividad no.2 grupalActividad no.2 grupal
Actividad no.2 grupallisi2407
 
Cinco diodos de uso común
Cinco diodos de uso comúnCinco diodos de uso común
Cinco diodos de uso comúnLuis Palacios
 
Señales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABSeñales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABJose Agustin Estrada
 
3.1 Introducción a la transmision por radio
3.1 Introducción a la transmision por radio3.1 Introducción a la transmision por radio
3.1 Introducción a la transmision por radioEdison Coimbra G.
 
Resumen de la Modulación BPSK
Resumen de la Modulación BPSKResumen de la Modulación BPSK
Resumen de la Modulación BPSKGustavo Cuervo
 
Informe Laboratorio Telecomunicaciones II
Informe Laboratorio Telecomunicaciones IIInforme Laboratorio Telecomunicaciones II
Informe Laboratorio Telecomunicaciones IIAndy Juan Sarango Veliz
 

La actualidad más candente (20)

trafico
traficotrafico
trafico
 
Puertos de Comunicacion
 Puertos de Comunicacion Puertos de Comunicacion
Puertos de Comunicacion
 
Radioenlaces ejercicios propuestos
Radioenlaces ejercicios propuestosRadioenlaces ejercicios propuestos
Radioenlaces ejercicios propuestos
 
Pirometros y Medición de Temperatura Keller
Pirometros y Medición de Temperatura KellerPirometros y Medición de Temperatura Keller
Pirometros y Medición de Temperatura Keller
 
Lecture 14 modulacion digital parte 2
Lecture 14 modulacion digital    parte 2Lecture 14 modulacion digital    parte 2
Lecture 14 modulacion digital parte 2
 
Protocolo modbus
Protocolo modbusProtocolo modbus
Protocolo modbus
 
Lecture 7 probabilidad de error de transmisión pcm. formateo de señales dpcm,...
Lecture 7 probabilidad de error de transmisión pcm. formateo de señales dpcm,...Lecture 7 probabilidad de error de transmisión pcm. formateo de señales dpcm,...
Lecture 7 probabilidad de error de transmisión pcm. formateo de señales dpcm,...
 
Instrumentacion
InstrumentacionInstrumentacion
Instrumentacion
 
Circuitos Electronicos 5
Circuitos Electronicos 5Circuitos Electronicos 5
Circuitos Electronicos 5
 
PLC: Programación en PLC LOGO
PLC: Programación en PLC LOGO PLC: Programación en PLC LOGO
PLC: Programación en PLC LOGO
 
Actividad no.2 grupal
Actividad no.2 grupalActividad no.2 grupal
Actividad no.2 grupal
 
Demostrador de sistemas de antenas.desbloqueado
Demostrador de sistemas de antenas.desbloqueadoDemostrador de sistemas de antenas.desbloqueado
Demostrador de sistemas de antenas.desbloqueado
 
Tema 1 canales en comunicaciones digitales
Tema 1   canales en comunicaciones digitalesTema 1   canales en comunicaciones digitales
Tema 1 canales en comunicaciones digitales
 
Cinco diodos de uso común
Cinco diodos de uso comúnCinco diodos de uso común
Cinco diodos de uso común
 
Señales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABSeñales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLAB
 
5. Cálculo de radioenlaces
5. Cálculo de radioenlaces5. Cálculo de radioenlaces
5. Cálculo de radioenlaces
 
3.1 Introducción a la transmision por radio
3.1 Introducción a la transmision por radio3.1 Introducción a la transmision por radio
3.1 Introducción a la transmision por radio
 
Circuitos rc y rl
Circuitos rc y rlCircuitos rc y rl
Circuitos rc y rl
 
Resumen de la Modulación BPSK
Resumen de la Modulación BPSKResumen de la Modulación BPSK
Resumen de la Modulación BPSK
 
Informe Laboratorio Telecomunicaciones II
Informe Laboratorio Telecomunicaciones IIInforme Laboratorio Telecomunicaciones II
Informe Laboratorio Telecomunicaciones II
 

Similar a TIMER0_PIC16F84A

Curso Micro Tema 4
Curso Micro Tema 4Curso Micro Tema 4
Curso Micro Tema 4Luis Zurita
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesLuis Zurita
 
Lab# 2 - Temporizador.pdf
Lab# 2 - Temporizador.pdfLab# 2 - Temporizador.pdf
Lab# 2 - Temporizador.pdfsopitamani1
 
Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05Hamiltonn Casallas
 
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizadorLab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizadorDaniel Pardo
 
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricialGabriel Bravo Rojas
 
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores   pucesiInterrupciones y Temporizadores   pucesi
Interrupciones y Temporizadores pucesiDavid Narváez
 
Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)alascaperu
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Hamiltonn Casallas
 
TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"Diego Rojas Ruiz
 

Similar a TIMER0_PIC16F84A (20)

Curso Micro Tema 4
Curso Micro Tema 4Curso Micro Tema 4
Curso Micro Tema 4
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
 
UNIDAD IV
UNIDAD IVUNIDAD IV
UNIDAD IV
 
Lab# 2 - Temporizador.pdf
Lab# 2 - Temporizador.pdfLab# 2 - Temporizador.pdf
Lab# 2 - Temporizador.pdf
 
Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05
 
Clase Timer 1
Clase Timer 1Clase Timer 1
Clase Timer 1
 
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizadorLab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
 
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHOPRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
 
Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887
 
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
 
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores   pucesiInterrupciones y Temporizadores   pucesi
Interrupciones y Temporizadores pucesi
 
Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)
 
Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887
 
Timer0 PIC16F84A
Timer0 PIC16F84ATimer0 PIC16F84A
Timer0 PIC16F84A
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06
 
TEMPORIZADORES Y CONTADORES.PDF
TEMPORIZADORES Y CONTADORES.PDFTEMPORIZADORES Y CONTADORES.PDF
TEMPORIZADORES Y CONTADORES.PDF
 
TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"
 
Caso timers
Caso timersCaso timers
Caso timers
 
Ccp2009170309
Ccp2009170309Ccp2009170309
Ccp2009170309
 
Timers
TimersTimers
Timers
 

TIMER0_PIC16F84A

  • 1. UNIVERSIDAD RICARDO PALMA EL TIMER0 DEL 16F84A Microcontroladores UNIVERSIDAD TECNOLÒGICA EL PERÙ FACULTAD DE INGENIERÍA ELECTRÓNICA CIRCUITOS DIGITALES II MICROCONTROLADORES PIC DOCENTE: ING. Luis Pacheco Cribillero
  • 2. REGISTROS ASOCIADOS AL TEMPORIZADOR TMR0 • TMR0: Registro de 8 bits de lectura/escritura • OPTION: Configura al TMR0 para que trabaje como temporizador ó contador y asigna el valor al prescaler • INTCON: Da información mediante el bit “TOIF” cuando el TMR0 se ha desbordado. • TRISA (PUERTO A): Permite el ingreso de pulsos cuando el TMR0 está configurado como contador por RA4 22/05/13 2ING. Luis Pacheco Cribillero
  • 3. REGISTRO OPTION (Dirección 81H) • bit 7, RPBU : Resistencia Pull-up, Puerto B, habilita el bit 1: Desactivadas 0: Activadas • bit 6, INTEDG: Flanco activo para el control de interrupciones 1: Con flanco Ascendente 0: Con flanco Descendente • bit 5, TOCS: Fuente de Reloj para TMR0 1: Pulsos introducidos a través de RA4/T0CK1 (Contador) 0: Pulsos de reloj interno Fosc/4 (Temporizador) • bit 4, TOSE: Tipo de flanco en TOCK1 1: Incremento de TMR0 cada flanco descendente 0: Incremento de TMR0 cada flanco ascendente • bit 3, PSA: Bit de asignación del prescaler divisor de frecuencia 1: El divisor de frecuencia se asigna al WDT 0: El divisor de frecuencia se asigna al TMR0 • bit 2-0, PS2:PSO: Rango con el que actúa el divisor de frecuencia. 22/05/13 3ING. Luis Pacheco Cribillero
  • 4. EJEMPLOS DE CONFIGURACIÓN • Configure al PIC16F84 para que el temporizador TMR0, trabaje con los pulsos provenientes de un reloj externo, y el mismo cambie en el flanco de subida del pulso externo: • Configure al PIC16F84 para que el TMR0, trabaje con el reloj interno y la frecuencia del mismo sea dividida por 32: ¿Y los demás bits? ¿Cómo lo cargo al OPTION? En el primer caso: movlw b’xx11xxxx1’ movwf OPTION En el segundo caso: movlw b’xx0x0100’ movwf OPTION OPTION_REG OPTION_REG 22/05/13 4ING. Luis Pacheco Cribillero
  • 5. TEMPORIZADOR TMR0 • Registro asociado al Timer0. Se encuentra en la posición 01H de la memoria RAM. Es el corazón del módulo Timer0. Puede ser leído o escrito en cualquier momento. El TMR0 se incrementará automáticamente por cada ciclo de instrucción y contará desde 0 (00H) hasta 255 (FFH) (Contador de 8 bits). • Para que opere como temporizador, el bit TOCS (del registro OPTION) debe ser cero (0), el bit PSA= 0 y deben ser cargados los bits PS2 a PS0, según sea el preescaler a utilizar para lograr nuestra temporización. • Para que opere como contador, se usa una entrada de reloj externo en el TMR0 y se deben de cumplir ciertos requisitos para que el reloj externo pueda ser sincronizado con el reloj interno (TOSC). Además existe un retardo en el incremento real del TMR0, después de la sincronización. El bit TOCS= 1. Se debe seleccionar el tipo de flanco que producirá el incremento del TMR0 ( TOSE = 1 ó 0). 22/05/13 5ING. Luis Pacheco Cribillero
  • 6. ¿QUÉ ES EL PRESCALER? • Divide la frecuencia de reloj de entrada del Timer0, entre valores predefinidos, como se ve en la tabla asociada al registro OPTION, 1:32, 1: 64, 1:256, etc., genera una nueva señal de menor frecuencia a la salida, que será la señal de reloj de entrada al registro TMR0. • “Ralentiza” señales de entrada demasiado rápidas para nuestros propósitos. • También existe un postescaler, asociado al perro guardián WDT (Watch Dog Timer) del microcontrolador, pero en este caso recibe el nombre de postcaler ya que se usa a la salida del WDT, no pudiendo estar asignado a la vez al Timer0 o al WDT. El preescaler es transparente para el programador, no se puede leer ni escribir sobre él, pero se puede seleccionar por software, como ya se ha dicho, mediante el registro OPTION. • Nota: Para evitar un RESET no deseado del sistema, es necesario ejecutar una secuencia de instrucciones específicas cuando se cambia la asignación del prescaler del TMR0 al WDT. Esta secuencia debe ser seguida, aún cuando el WDT esté inactivo. 22/05/13 6ING. Luis Pacheco Cribillero
  • 7. ¿CÓMO CUENTA EL TMR0? El TMR0 cuenta exclusivamente de forma ascendente, nunca descendente. Si el TMR0 se carga con un valor, éste comenzará a contar desde el valor cargado hasta que se desborda (cuando pasa a 00H) 00H FFH 00H 00H FFH Valor cargado En el TMR0 00H (28 – N10) 22/05/13 7ING. Luis Pacheco Cribillero
  • 8. CÁLCULOS CON EL TMR0 • Cuando se carga en el registro TMR0 un valor XXH, él mismo contará: (FFH – XXH) impulsos y el tiempo que tarda en hacerlo viene dado por la expresión:  Temporización= 4 * TOSC * Valor Real TMR0 * Rango del divisor de Frecuencia  Valor Real TMR0 = (28 – N10) = (256 – N10)  N10= Valor a cargar en el TMR0 Ejemplo: Sea un valor a cargar en el TMR0 de 100, un prescaler seleccionado de 1:32 y un oscilador XT. Determine el tiempo en que tardará el TMR0 en desbordarse. Solución: Sea XT = Frecuencia = 4 MHz, T = 0.25 μs. Temporización= 4*0.25 μs* (256 – 100) * 32 = 4.992 ms. 22/05/13 8ING. Luis Pacheco Cribillero
  • 9. OTROS EJEMPLOS • Se desea saber: ¿Qué valor debemos cargar en el TMR0, si deseamos obtener una temporización de 10,24 ms, utilizando un preescaler de 128 y un cristal XT? Solución: (256 – N10 ) = = = 80 (256 – N10 ) = 80, despejando N10 = (256 – 80) = 176, el valor que debemos cargar en el TMR0 es 176, para que éste cuente desde 176 hasta 256. • Elegir el TMR0, para generar un retraso de 1.5 ms utilizando un oscilador de 10 MHz. Solución: Sea Fosc= 10 MHz, T = 100 ns (256 – N10 ) = = N10 = 256 - (3750/RgoDivisor) RgodivisorT iónTemporizac OSC ∗∗4 12825.04 24,10 ∗∗ s ms µ RgodivisorT iónTemporizac OSC ∗∗4 RgoDivisorns ms ∗∗1004 5.1 22/05/13 9ING. Luis Pacheco Cribillero
  • 10. Démosle valores al Rango del divisor, hasta obtener un valor que se acerque lo más posible al retardo propuesto: Si Prescaler= 256, Valor a cargar en el TMR0= 241 (redondeado) Si Prescaler= 128, Valor a cargar en el TMR0= 227 (redondeado) Si Prescaler= 64, Valor a cargar en el TMR0= 197 (redondeado) Si Prescaler= 32, Valor a cargar en el TMR0= 139 (redondeado) Etc… A manera de práctica, realice usted, el cálculo de la Temporización, para cada uno de los valores que se consiguieron en los cálculos anteriores. Escoja uno y justifique. Particularmente parece que el que tiene el rango de divisor de 64, es el mejor. • Nota: En este ejercicio resuelto, usted puede darse cuenta de que no hay un solo resultado para los ejercicios, pero lo que si debe cumplirse es que sea cualquiera que sean los valores que se tomen para los cálculos, estos deben de estar cercanos a la respuesta que se espera del temporizador que esté diseñando. CONTINUACIÓN EJEMPLO ANTERIOR 22/05/13 10ING. Luis Pacheco Cribillero
  • 11. • Ejemplo. Diga ¿cuánto es la máxima temporización que se puede hallar con el TMR0? Asuma que se está trabajando con un XT. Solución: Tomamos el máximo factor de escala de división todos los estados que puede contar el TMR0: – Temporización= 4*0.25 μs*(256 )*256 = 65.536 ms. – Este es el máximo valor que podemos conseguir del TMR0. • ¿Cómo hacemos entonces para conseguir valores superiores a éste, tales como 0,5 s; 1 s; 2 s; entre otros? – Esto se puede arreglar si tenemos un contador de mayor número de bits. La solución está en extender el Timer0 con un registro (auxiliar) controlado por software. – Dicho registro (auxiliar) contará el número de interrupciones por desbordamiento que genera el Timer0, de forma de que éste pase por cero, cuando haya pasado el tiempo que estamos calculando. 22/05/13 11ING. Luis Pacheco Cribillero
  • 12. USO DE REGISTRO AUXILIAR Pasos: 1. Escoger un valor para el prescaler. Un posible criterio es calcular todas las frecuencias de prescaler que podemos obtener con cada divisor posible. Las frecuencias sin decimales son interesantes al poder encontrar múltiplos de ellas a la salida del TMR0 con mayor facilidad. En general, la elección del valor del prescaler es empírica: depende del problema, la experiencia y sobre todo de la práctica. 2. Determinar el valor del Registro Auxiliar, a partir del valor dado por el TMR0. Normalmente viene dado por un múltiplo de la frecuencia, asociada al tiempo calculado. Con un ejemplo entenderemos mejor lo que se desea plantear: Ejemplo: Determine los valores del TMR0 y del Registro Auxiliar para conseguir una temporización de 1 segundo. Utilice un oscilador XT. Solución: XT= Frecuencia = 4 MHz ; Tosc= 250 ns • Paso 1. Como no se nos ha impuesto que prescaler utilizar ni que temporización, podemos aleatoria mente escogerlas, como en el ejemplo 6. Evaluando cualquiera, cuya temporización del TMR0 se basó en 5 ms, escojamos el prescaler 128 y sustituyamos los valores en la ecuación principal: – Temporización= 4*250 ns*(256 - 217)*128 = 4.992 ms 22/05/13 12ING. Luis Pacheco Cribillero
  • 13. CONTINUACIÓN DEL EJEMPLO ANTERIOR • Paso 2. ¿Qué valor debe de tener el registro auxiliar? a) Al tiempo de 4.992 ms, se asocia una frecuencia del TMR0 de = = 200.3 Hz, redondeando, tomamos este múltiplo: 200, Así, tendremos entonces que si multiplicamos 200*4.992 ms = 0.998 s, que es un valor bastante cercano a 1 segundo. b) La misma operación pero interpretada de una forma más sencilla es determinar cuantas veces necesitamos al tiempo calculado para lograr un segundo: La que usted entienda mejor es válida. Nuestro registro auxiliar debe ser de 200!!! Recuerde de que éste registro auxiliar no debe superar 255. Si supera este valor, se debe adicionar un nuevo registro auxiliar ms992.4 1 32.200 992.4 1 = ms segundo 22/05/13 13ING. Luis Pacheco Cribillero
  • 14. DE LOS CÁLCULOS A LA PROGRAMACIÓN • Realicemos un ejercicio completo: Realice un programa que permita encender y apagar un led cada 15 ms, mediante el timer0. Utilice un oscilador XT. 22/05/13 14ING. Luis Pacheco Cribillero
  • 15. DE LOS CÁLCULOS A LADE LOS CÁLCULOS A LA PROGRAMACIÓNPROGRAMACIÓN Paso 2. Debemos de estructurar el programa para que vigile e informe cuando el TMR0 se ha desbordado, y el bit que nos da esta información es el TOIF, del Registro INTCON. Adicional a esto debemos configurar el registro OPTION para que este trabaje con el prescaler que hemos seleccionado para nuestros cálculos, así como de asignarlo al TMR0. Así como la rutinaria configuración de los puertos. 22/05/13 15ING. Luis Pacheco Cribillero
  • 16. LIST P=16F84A INCLUDE P16F84A.INC ORG 00H GOTO INICIO INICIO BSF STATUS,5 CLRF TRISA MOVLW B’11010110’ MOVWF OPTION_REG BCF STATUS,5 CLRF INTCON LEDON BSF PORTA,0 CALL RETARDO LEDOFF BCF PORTA,0 CALL RETARDO GOTO LEDON ;***RUTINA DE RETARDO*** RETARDO MOVLW D’139’ MOVWF TMR0 ESPERA BTFSS INTCON,TOIF GOTO ESPERA BCF INTCON,TOIF RETURN END Paso 3. Programa 22/05/13 16ING. Luis Pacheco Cribillero
  • 17. Ejercicio. Realice un programa que permita encender y apagar un led cada un segundo. Mediante Timer0 y con un oscilador XT. Programa Principal Subru 22/05/13 17ING. Luis Pacheco Cribillero
  • 18. 22/05/13 18ING. Luis Pacheco Cribillero
  • 19. ¿OTRA FORMA DE HACER LOS CÁLCULOS? • Pero si aún le enredan todas estas fórmulas, para calcular temporizaciones, probemos con estas tres: Pruebe ahora realizar los mismos cálculos siguiendo el 1, 2, 3… 22/05/13 19ING. Luis Pacheco Cribillero ¡ GRACIAS !!!...¡ GRACIAS !!!...