miércoles, 20 de julio de 2016

Timer0 PIC16F887

Timer0

"Universidad Nacional Experimental Politécnica Antonio José De Sucre”.
UNEXPO — V.R. “Luis Caballero Mejías”.

CARACTERISTICAS


- Temporizador/contador de 8 bits.
- Pre-escalador de 8 bits (lo comparte con el temporizador perro guardián WDT).
- Fuente de reloj interna o externa programable.
- Generación de interrupción por desbordamiento.
- Selección del flanco de reloj externo programable.


REGISTRO0 DEL TIMER0(OPTION_REG)


RBPU - PORTB Pull-up enable bit (resistencia Pull Up del puerto PORTB)
0 - Resistencias pull-up del puerto PORTB están deshabilitadas.
1 - Pines del puerto PORTB pueden estar conectados a las resistencias pull-up.
INTEDG - Interrupt Edge Select bit (bit selector de flanco activo de la interrupción externa)
0 - Interrupción por flanco ascendente en el pin INT (0-1).
1 - Interrupción por flanco descendente en el pin INT (1-0).
T0CS - TMR0 Clock Select bit (bit selector de tipo de reloj para el Timer0)
0 - Los pulsos se llevan a la entrada del temporizador/contador Timer0 por el pin RA4.
1 - El temporizador utiliza los pulsos de reloj internos (Fosc/4).
T0SE - TMR0 Source Edge Select bit (bit selector de tipo de flanco)
0 - Incrementa en flanco descendente en el pin TMR0.
1 - Incrementa en flanco ascendente en el pin TMR0.
PSA - Prescaler Assignment bit (bit de asignación del pre-escalador)
0 - Pre-escalador se le asigna al WDT.
1 - Pre-escalador se le asigna al temporizador/contador Timer0.
PS2, PS1, PS0 - Prescaler Rate Select bit (bit selector del valor del divisor de frecuencias)



MODO CONTADOR


El modo contador en el timer 0 consiste en realizar un conteo automático; esto puede ser útil en muchas situaciones en las que se requiera realizar una acción especifica después de cierta cantidad de eventos externos. El contado automático se caracteriza porque suma al registro timer 0 de uno en uno de forma ascendente y hasta llegar a un valor máximo de 256. cabe destacar que el timer no posee la capacidad de contar de manera regresiva, y puede iniciar la cuenta desde cualquier valor menor a 255, siempre y cuando se halla configurado previamente, de lo contrario, siempre iniciara la cuenta desde 0. Luego de que el contador llega a 256 el registro se reinicia, volviendo a 0; en este proceso de reinicio se activa una bandera o bit que indica que el desborde o cuenta máxima ha sucedido, este bit llamado T0IF se encuentra en el registro INTCON de interrupciones el cual se encuentra en el banco 0 de la memoria del pic.



Para activar el modo contador de este timer se debe configurar el bit 5 del OPTION_REG llamado T0CS en 1 ya que establece el modo de operación del timer como contador. Para determinar cuando el contador aumentara la cuenta se debe hacer uso de la pata externa del pic RA4/T0CKI; configurando la misma como entrada mediante el registro TRISA, esto se debe a que mediante esta pata el pic detecta los cambios y por cada cambio que ocurra en ella aumentara a su vez el valor en el contador.
Cuando se habla de cambios, se refiere a la variación del voltaje que percibe la pata del pic (estados), cuando la pata se encuentra en alta (a este le llega 5v directamente), y cuando la pata se encuentra en baja (este tiene 0v conectado), estos son los 2 casos que se presentan como estados. Por lo tanto cuando se cambia de un estado bajo a uno alto el pic lo reconoce y le indica al contador aumentar su cuenta.
¿Pero que sucede si el pic le indica que aumente la cuenta cuando cambia de baja a alta y también cuando cambie de alta a baja? ¿Es posible?: no puesto que el contador simplemente no funcionaria, es por eso que se debe configurar el bit 4 llamado T0SE del registro OPTION-REG, el cual especifica si la cuenta es realizada en flanco de subida (0 lógico) o de bajada (1 lógico). Cuando hay un cambo de baja a alta se conoce como flanco de subida y cuando hay un cambo de alta a baja se conoce como flanco de bajada.


MODO TEMPORIZADOR



El modo temporizador consiste en tener un conteo automático, pero a diferencia del modo contador, el no depende de una frecuencia o evento externo, ya que este utiliza la frecuencia interna del pic. El conteo sucede de la misma manera que en el modo contador, este tampoco puede contar de manera regresiva, y puede iniciar la cuenta desde cualquier valor menor a 255, siempre y cuando se halla configurado previamente, de lo contrario, siempre iniciara la cuenta desde 0.
Luego de que la cuenta llega al máximo que es 256 el registro se reinicia, volviendo a 0, en este proceso de reinicio se activa una bandera o bit que nos indica que el desborde o cuenta máxima ha sucedido, este bit llamado T0IF se encuentra en el registro INTCON de interrupciones el cual se encuentra en el banco 0 de la memoria del pic como se mostró anteriormente.
Para configurar el timer0 en modo temporizador se deben manipular simplemente 4 bits del registro de configuración del timer. Estos son los bits 5, 2, 1 y 0 del registro OPTION-REG, ubicado en el banco 1 de la memoria del pic. Colocando T0CS en 0.


EN RESUMEN



Paso 1: Seleccionar el modo:
El modo de temporizador se selecciona por el bit TOSC del registro OPTION_REG (TOSC: 0=temporizador, 1=contador).
Cuando se asigna el pre-escalador al temporizador/contador se debe poner a cero el bit PSA del registro OPTION_ REG. El valor del divisor de frecuencias se configura al utilizar los bits PS2-PS0 del mismo registro.
Al utilizar una interrupción, los bits GIE y TMR0IE del registro INTCON deben estar a uno.

Paso 2: Medir y contar
Para medir tiempo:
Reiniciar el registro TMR0 o escribir un valor conocido en él.
El tiempo transcurrido(en microsegundos al utilizar el oscilador de 4MHz) se mide al leer el registro TMR0.
El bit de bandera TMR0IF del registro INTCON se pone a uno automáticamente siempre que ocurra el desbordamiento del registro TMR0. Si está habilitada, ocurre una interrupción.
Para contar pulsos:
La polaridad de pulsos a contar en el pin RA4 se selecciona porel bit TOSE del registro OPTION_REG (T0SE: 0=pulsos positivos, 1=pulsos negativos).
Varios pulsos se pueden leer del registro TMR0. El pre-escalador y la interrupción se utilizan de la misma forma que en el modo de temporizador.

EJEMPLOS PARA DESCARGAR:


ContadorExternoTimer0.hex
ContadorInternoTimer0.hex
TemporizadorTimer0.hex

TemporizadorTimer0.asm
ContadorInternoTimer0.asm
ContadorExternoTimer0.asm

ContadorExternoTimer0(proteus)
ContadorInternoTimer0(proteus)
TemporizadorTimer0(Proteus)
Realizado por:
Fedra Castillo exp: 2012103318
Luis Bello exp: 2012103081
Lismar Cardier exp: 2012103001
Contactanos: ana.20753@gmail.com

No hay comentarios:

Publicar un comentario