viernes, 8 de julio de 2016

Información general del Timer 0

El timer 0 es un registro de carácter especial ubicado en la posición 1 de la memoria RAM.

 
Fig. 1 – Diagrama del funcionamiento del Timer 0

El Timer 0 puede incrementarse automáticamente por medio de los ciclos internos del reloj o por los pulsos externos que entran en un pin del microcontrolador. Cuando este temporizador comienza su operación se incrementa con cada ciclo de máquina o por una fuente que entra en el pin TOCKI.

Un registro a tomar en cuenta para la configuración del timer 0 es el registro OPCIÓN. Este registro va a establecer las condiciones iniciales con las que trabajará el programa. Posee varios bits que configuran los circuitos de los temporizadores, las interrupciones y las resistencias pull-up.

El timer 0, puede configurarse en modo contador y temporizador. El modo de temporizador se selecciona por el bit TOSC del registro OPCIÓN (TOSC: “0” temporizador, “1” contador).

Los bits se almacenan en el registro OPCIÓN. Descripción de cada uno de los bits de este registro:

Tabla N°1 – Registro OPTION_REG PIC 16F887.


· RBPU (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 ­ (Selector de flanco de la interrupción INT)
0­ Interrupción por flanco ascendente en el pin INT.
1 Interrupción por flanco descendente en el pin INT.

· RTS (Fuente de señal TMR0)
0 ­ Ciclo de instrucción interno, como temporizador.
1 ­ Transición en el pin RA4/TOCK, como contador.

· RTE ­ (Flanco de la señal del TMR0)
0 ­Incrementa en flanco descendente en el pin TMR0.
1 Incrementa en flanco ascendente en el pin TMR0.

· PSA ­ (Bit de asignación del pre­escalador)  
0 ­ TMR0, Contador/Temporizador
1 ­ Circuito de vigilancia WDT

Cuando se asigna el preescalador al temporizador/contador se debe poner a cero el bit PSA del registro. La configuración del pre-escalador es:

· PS2, PS1, PS0 (Bit selector del valor del divisor de frecuencias) El valor del divisor de frecuencias se ajusta al combinar estos bits. Como se muestra en la Tabla N° 1, la misma combinación de bits proporciona los diferentes valores del divisor de frecuencias para el temporizador/contador y el temporizador perro guardián, respectivamente.

Tabla N°2 – Combinación de bits para divisor de frecuencias

Notas de interés:

El timer 0 configurado en contador solo funciona con flancos y no con niveles, una configuración para esto sería modificar el Bit 4 de OPCIÓN y al colocarse este en 0, todos los flancos de subida se contarán y poniéndose en 1, pues todo lo contrario al cero.

La fuente de la señal TMR0 puede ser sometida a un proceso de división de frecuencia, que no es más que la división de una frecuencia utilizada por diversos rangos para poder conseguir temporizaciones más largas, además, se transmite en forma simultánea por un solo medio de transmisión.

Ya sabiendo que es una división de frecuencia, esto puede ocurrir en los módulos preescaladores y solo se deberá configurar el bit 3 en 1 del registro OPCIÓN. La única forma de no preescalar el temporizador es asignarle el perro guardian.

Pasos para configurar el timer 0: 1. Asignar el prescalador
2. Configurar el temporizador colocando los bits adecuados en el registro OPCIÓN
3. Para inicializar el temporizador, simplemente se debe escribir un número en el registro TIMER0 o borrarlo. Cuando se ha cargado con un número el temporizador, hará la cuenta desde ese número.
4. El temporizador debe ser argado después de cada sobreflujo para repetidos intervalos de tiempo, si no se hace FF, resultará en cada ocasión.

Usos del Timer “0”:

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 T0IF del registro INTCON se pone a uno automáticamente siempre que ocurre el desbordamiento del registro TMR0. En donde se pasa de estar los bits en B’11111111’ a B’00000000’. Esta configuración vendrá dada por un “0” que aún no se ha desbordado y en “1” cuando ocurra todo lo contrario.

Tabla N°3 – Bits del registro INTCON

Para contar pulsos:
La polaridad de pulsos a contar en el pin RA4 se selecciona por el bit RTE del registro OPCIÓN (RTE: “0” Pulsos positivos, “1” Pulsos negativos). Varios pulsos se pueden leer del registro TMR0. El preescalador y la interrupción se utilizan de la misma forma que en el modo de temporizador.

Programas


Referencias bibliográficas:
Ángel A. J. J. (2008). Microcontroladores. Editorial CEKIT S.A. Tomo I, Teoría.
Microchip. (2007). Datasheet PIC16F882/883/884/886/887. U.S.A.

miércoles, 6 de julio de 2016

Introducción a Timers

El presente blog tiene como destino proporcionar la mayor información posible, sobre los temporizadores que posee el PIC16F887, características, función, notas de interés, programas, videos, quizes, operación de trabajo en algunas aplicaciones, etc. Pero para poder hablar sobre estos temporizadores, tenemos que saber bien, qué son los temporizadores, y es que estos desempeñan un papel en el PIC, de circuitos sincrónicos, que ayudarán a llevar el conteo de los pulsos que llegan a su poder para conseguir la entrada de reloj. El PIC16F887, posee tres temporizadores, que se distinguen por su cantidad de registros y funciones.

Es común leer que el Timer 1 es el más versátil de los tres temporizadores, ya que puede usarse para monitorear el tiempo entre las transiciones de una señal ocurridas en un pin de entrada o para controlar de manera precisa el tiempo de transición en un pin de salida. Mientras tanto, el Timer 0, se utiliza para contar eventos externos o generar "interrupciones" que no son más que pequeñas paradas que realiza el PIC durante el desarrollo de un programa.


Y por último, el Timer 2, que no es menos importante, tiene mucha más libertad en su funcionamiento y además de temporizador puede usarse como un controlador de período de una señal de salida en formato de modulación por PWM (Ancho de Pulso), en este caso la salida permanecerá en estado lógico alto durante un porcentaje determinado de cada periodo. Este porcentaje se controla escribiendo en el registro CCP (Capture(Compare/PWM), y el periodo lo maneja el Timer 2.