Sei sulla pagina 1di 11

DISPOSITIVOS AUTOMATIZADOS EL TMR0 (TIMER 0) COMO CONTADOR O TEMPORIZADOR

El PIC16F84 dispone de un timer principal denominado Timer 0 o TMR0 que es un contador ascendente de 8 bits(los pics de gaMA media cuentan con 3 temporizadores). El TMR0 se inicializa con un valor, que se incrementa con cada impulso de entrada hasta su valor mximo b' 11111111 '; con el siguiente impulso de entrada el contador se desborda pasando a valer b'00000000', esto se advierte mediante la activacin del flag de fin de cuenta TOIF localizado en el registro INTCON. Un timer se implementa por medio de un contador que determina un tiempo preciso entre el momento en que el valor es cargado y el instante en el que se produce su desbordamiento. Un timer tpico consiste en un contador ascendente (tambin podra ser descendente) que, una vez inicializado con un valor, su contenido se incrementa con cada impulso de entrada hasta llegar a su valor mximo , desbordando y volviendo a comenzar desde cero.

Los impulsos aplicados al TMR0, pueden provenir de los pulsos aplicados al pin TOCKI o de la seal de reloj interna (Fosc/4), lo que le permite actuar de dos formas :

Como CONTADOR(interrupcin externa) de los impulsos que le llegan por el pin RA4/TOCKI. Como TEMPORIZADOR de tiempos El actuar de una u otra forma depende del bit TOCS del registro OPTION: A)Si TOCS = 1, el TMRO acta como contador.

B)Si TOCS = 0, el TMRO acta como temporizador

TMRO COMO CONTADOR (INTERRUPCION EXTERNA) Cuando el TMRO trabaja como contador se le introducen los impulsos desde el exterior por el pin RA4/TOCKI (TMRO External Clock Input). Su misin es "contar" el nmero de acontecimientos externos representados por los impulsos que se aplican al pin TOCKI. El tipo de flanco activo se elige mediante el bit INTEDG (BIT 6)del registro OPTION: A)Si INTEDG = 1, el flanco activo es descendente. B)Si INTEDG = 0, el flanco activo es ascendente Registro OPTION Algunos microcontroladores PIC tienen una instruccin denominada tambin option, por ello, el fabricante Microchip recomienda darle otro nombre a este registro. Asi en el archivo de definicin de etiquetas PI6F84A.INC se le nombra como OPTION_REG

PS2,PS1,PSO. (Prescaler Rate Select bits). Bits para seleccionar los valores del Prescaler o rango con el que acta el divisor de frecuencia, segn la tabla siguiente. PSA (Prescaler Assignment bit). Asignacin del divisor de frecuencia. PSA = 0. El divisor de frecuencia se asigna al TMR0. PSA = 1. El divisor de frecuencia se asigna al Watchdog. Los bits utilizados por los timers son :

TOSE (TMRO Source Edge Select bit). Selecciona flanco de la seal de entrada del TMR0 TOSE = o. TMRO se incrementa en cada flanco ascendente de la seal aplicada al pin RA4/TOCKI. TOSE = 1. TMRO se incrementa en cada flanco descendente de la seal aplicada al pin RA4/TOCKI.

TOCS (TMRO Clock Source Select bit). Selecciona la fuente de seal del TMRO. TOCS = o. Pulsos de reloj interno Fosc/4 (TMRO como temporizador). TOCS = l. Pulsos introducidos a travs del pin RA4/TOCKI (TMRO como contador).

El registro INTCON es un registro localizado en la direccin OBh del Banco 0 y duplicado en la 8Bh del Banco 1. Contiene los 8 bits que se muestran , de los cuales se utilizar por ahora nicamente el T0IF

TOIF (TMRO Overjlow Interrupt Flag bit). Flag de interrupcin del TMR0 Indica que se ha producido un desbordamiento del Timer 0, que ha pasado d= b' 11111111' a b'00000000'. TOIF = 0. El TMR0 no se ha desbordado. TOIF = 1. El tmr0 se ha desbordado ,borrarse por software INTE, Habilitacion de la interrupcion externaT01, flag que autoriza la interrupcin por desbordamiento del tmr0. INTE=0 INTERRUPCION DESHABILITADA INTE=1 INTERRUPCION HABILITADA REGISTRO GIE, FLAG DE HABILITACION GLOBAL DEL PERMISO DE INTERRUPCION Al retornar de la interrupcin con una instruccin RETFIE, el bit GIE se vuelve a activar ponindose a 1 ACTIVIDAD. SE TIENE UN DISPOSITIVO QUE PERMANECE EN ESTADO DE REPOSO HASTA QUE UN USUARIO LO DESPIERTA CON LA PULSACION DE RB0/INT, AL DESPERTAR, SEGN EL VALOR DE RB1, SE COLOCA EL PUERTOA , A CEROS O A UNOS. SE MUESTRA EL DIAGRAMA DE FLUJO

El uso de interrupciones evita tener que preguntar continuamente si se ha producido algn suceso determinado, el uC puede estar en estado de reposo y despertarse cunado se requiera, se utiliza la entrada externa RB0/INT, todo parte de la interrupcin y despus de comprobar el valor d un bit RB1 se realiza una operacin o la otra, el diagrama de flujo solo muestra la RUTINA DE SERVICIO DE INTRRUPCIN, las configuraciones se realizan por separado. En el registro INTCON se habilitan las distintas interrupciones, y solo se usa RB0/INT , prohibiendo las dems. Colocar a 1 el bit 4, y el bit 7 a 1 para habilitar en general las interrupciones, despusde producirse la interrupcin se activara un sealizador para la RB0/INT , el bit 1 de este mismo registro Para el regitro OPTION el bit 6 se coloca a 1para indicar si es flanco ascendente o descendente 1)Primero realizar la RUTINA DE INTERRUPCION (RSI) 2)Despus realizar las configuraciones de puertos. 3)Enseguida las configuraciones de registros COLOQUE LOS COMENTARIOS PARA TENER UN PROGRAMA COMPLETO Y ENTENDIBLE

APLICACIN. Se tiene una cinta transportadora por la cual van pasando piezas que se quieren contar. Para contabilizar el nmero de piezas se coloca un pulsador que se activar con cada pieza que pase, con cada grupo de 10 piezas se activara un led como aviso de que las piezas pueden empaquetarse. El pulsador que activa las piezas se conecta al pin RA4, el cual se configura para introducir pulsos al TMR0, cada vez que llegue un flanco ascendente o descendente el TMR0 se auto incrementara sin que el usuario tenga que poner ninguna instruccin, y adems de configurar el TMR0 para cunado termine de contar las 10 piezas, comprobando el valor del flag TOIF, que s e pondr a uno cuando concluya y habr que poner a cero para una nueva cuenta. Configurar OPTION, no se necesita divisor de frecuencia , pero dando el valor 000 , el divisor del TMR0 seria 1:2, por lo que hay que combinar este dato con el bit 3 con valor 1, haciendo que el divisor se asigne al perrro guardian en el modo 1:1, los bits 5 y 4 hacen referencia al incremento del TMR0 mediante impulsos externos y alos flancos descendentes. COLOQUE LOS COMENTARIOS PARA TENER EL PROGRAMA COMPLETO

TMRO COMO TEMPORIZADOR Cuando el TMRO trabaja como temporizador cuenta los impulsos de Fosc/4. Se usa para determinar intervalos de tiempo concretos. Estos impulsos tienen una duracin conocida de un ciclo mquina que es cuatro veces el periodo de la seal de reloj. Para una frecuencia de reloj igual a 4 MHz el TMR0 se incrementa cada 1 s, tal como se calcul anteriormente. Como se trata de un contador ascendente el TMR0 debe ser cargado con el valor de los impulsos que se desean contar restados de 256 que es el valor de desbordamiento. Por ejemplo, para contar cuatro impulsos, se carga al TMRO con 256-4 = 252: Nmero de pulsos a contar: 410 = b'00000100'. Nmero a cargar: 25610- 410= 25210 = b'11111100'. Incremento a cada ciclo de instruccin: b' 111111 00', b' 111111 O 1', b' 11111110', b' 11111111 " aqu se desborda pasando a b' 0000000' y activando el flag T0IF. De esta manera, con la llegada de cuatro impulsos, el timer se ha desbordado llegando al valor b'00000000' que determina el tiempo de temporizacin, en este caso 4 s si los impulsos se hubieran aplicado cada microsegundo

TMRO ES UN REGISTRO DEL SFR y es un registro de propsito


especial ubicado en la posicin 1 del rea SFR de la RAM de datos . Puede ser ledo y escrito al estar conectado directamente AL BUS DE DATOS

PRESCALER ,DIVISOR DE FRECUENCIA


A veces es necesario controlar tiempos largos y aumentar la duracin de los impulsos que incrementan el TMR0. Para cubrir esta necesidad se dispone de un circuito programable llamado. Divisor de Frecuencia o Prescaler que divide la frecuencia utilizada por diversos rangos para poder conseguir temporizaciones ms largas .

el PIC16F84 dispone de dos temporizadores: a) El TMRO, que acta como temporizador principal. b) El Watchdog (perro guardin), que vigila que el programa no se "cuelgue". Para ello, cada cierto tiempo comprueba que el programa est ejecutndose normalmente y, si no es as, reinicializa todo el sistema. El Prescaler puede aplicarse a uno de los dos temporizadores, al TMR0 o al watchdog. Cuando se asigna al TMR0 los impulsos pasan primero por el divisor de frecuencia y una vez aumentada su duracin se aplican a TMR0.

BITS DE CONFIGURACiN DEL TMRO


Para controlar el comportamiento del TMR0 se utilizan algunos bits de los registros OPTION e INTCON. El registro INTCON es un registro localizado en la direccin OBh del Banco 0 y duplicado en la 8Bh del Banco 1. Contiene los 8 bits que se muestran , de los cuales se utilizar por ahora nicamente el T0IF

TOIF (TMRO Overjlow Interrupt Flag bit). Flag de interrupcin del TMR0 Indica que se ha producido un desbordamiento del Timer 0, que ha pasado d= b' 11111111' a b'00000000'. TOIF = 0. El TMR0 no se ha desbordado. TOIF = 1. El TMR0 se ha desbordado. (Debe borrarse por software). registro OPTION La misin principal del registro OPTION es gobernar el comportamiento del TMR0. Algunos microcontroladores PIC tienen una instruccin denominada tambiL option, por ello, el fabricante Microchip recomienda darle otro nombre a este registro. Asi en el archivo de definicin de etiquetas PI6F84A.INC se le nombra como OPTION_REG

PS2:PSO. (Prescaler Rate Select bits). Bits para seleccionar los valores del Prescaler o rango con el que acta el divisor de frecuencia, segn la tabla siguiente. PSA (Prescaler Assignment bit). Asignacin del divisor de frecuencia. PSA = 0. El divisor de rrecuencia se asigna al TMR0.

PSA = 1. El divisor de frecuencia se asigna al Watchdog. Los bits utilizados por los timers son :

TOSE (TMRO Source Edge Select bit). Selecciona flanco de la seal de entrada del TMR0 TOSE = o. TMRO se incrementa en cada flanco ascendente de la seal aplicada al pin RA4/TOCKI. TOSE = 1. TMRO se incrementa en cada flanco descendente de la seal aplicada al pin RA4/TOCKI. TOCS (TMRO Clock Source Select bit). Selecciona la fuente de seal del TMRO. TOCS = o. Pulsos de reloj interno Fosc/4 (TMRO como temporizador). TOCS = l. Pulsos introducidos a travs del pin RA4/TOCKI (TMRO como contador).

TMRO COMO TEMPORIZADOR


.Se puede utilizar la siguiente frmula para calcular el temporizado Temporizacin = TCM x Presca/er (256-Carga TMR0)

temporizacin, es el tiempo deseado. Tcm es e1 perodo de un ciclo mquina e igual a TCM = 4 Tosc. Para 4 MHz ya se ado en anteriores ocasiones T CM = 4 l/f = 1microseg Prescaler es el rango de divisor de frecuencia elegido. (256-CARGA TMR0), es el nmero total de impulsos a contar por el TMR0 antes de desbordarse en la cuenta ascendente. "Carga TMRO" es el valor cargado inicialmente en el TMR0 tal como se ha explicado anteriormente.

EJEMPLO Qu valor hay que cargar en el TMR0 para lograr un tiempo de 500 Prescaler de 2? Sustituyendo en la ecuacin anterior queda: Temporizacin = Tcm Presca/e' (256 - Carga TMRO) 500 = 1 x 2 (256 - Carga TMRO) luego el valor a cargar tiene que ser: seg si se tiliza un

Carga TMRO = 6

El valor de carga se podra poner en el programa

TMR0_CARGA500 S O bien:

EQU d5 ; numero a cargar apara contar 250 pulsos antes de desbordarse

TMR0_CARGA500 S

EQU d256-d250

QUIZ 7
1 REALIZAR UN PROGRAMA QUE REALICE LO SIGUIENTE(SE ENTREGA YA DEPURADO EN MPLAB):SE LEEN LAS 3 LINEAS MAS BAJaS DEL PUERTO A, QUE DAN EL NUMERO DE LEDS QUE SE ILUMINARAN POR EL PUERTOB, EJEMPLO, SI SE LEE 00011(TRES) SE ILUMINAN 3 LEDS, UTILICE LA INSTRUCCIN retlw.

Bibliografa -Microcontroladores PIC , DISEO PRACTICO DE APLICACIONES. JOSE MA ANGULO USATEGUI. MC GRAW HILL

Potrebbero piacerti anche