Prácticas con Microcontrolador


ir a contenido

El registro de opciones y el WDT

µControladores PIC > Arquitectura

La misión principal de este registro es gobernar el comportamiento del Temporizador principal. Su bit T0CS (Timer 0 External Clock Edge Select) elige en el multiplexor MPX1 la procedencia de los impulsos de reloj, que pueden ser los del oscilador .externo (Fosc/4) o los que se aplican desde el exterior por la pata T0CKI. El bit. T0SE (timer 0 Clock Source Select) selecciona el tipo de flanco que es activo para la frecuencia externa. Si TOSE = 1, el flanco activo es el descendente y si T0SE = 0, es el ascendente.

El bit PSA del Registro de opciones tiene la función de asignar el Divisor de frecuencia al TMR0 o al WDT. Si PSA = 0 la salida del visor se aplica al TMR0, pero si PSA = i el Divisor se destina al Perro guardián.

Finalmente, los 3 bits de menos peso del Registro de opciones (PSA2, PSA1 y A0) seleccionan el rango por el que el Divisor de frecuencia va a dividir los impulsos que se le apliquen. En el siguiente esquema se ofrece la distribución y asignación de los bits I Registro de opciones.


Distribución y asignación de los bits del Registro de opciones. Los 6 bits de menos peso solo se pueden escribir (w), no hallándose implementados los dos de más peso, que siempre se leen como 0.

—El registro WDT (El perro guardián):

También se trata de un contador de 8 bits que actúa como temporizador y tiene el objetivo de generar un reset a todo el sistema cuando se desborda su valor. Su control de tiempos es independiente del oscilador principal y se basa en una red RC.

La temporización nominal con la que se halla programado el Perro guardián es de 18 ms, pero puede aumentarse utilizando el Divisor de frecuencia, con el cual, trabajando en el rango mayor, puede alcanzar hasta 2,3 segundos.

Para evitar que se desborde el WDT y genere un reset, hay que recargar o refrescar su cuenta antes de que llegue el desbordamiento. Este refresco, que en realidad consiste en ponerle a 0 para iniciar la temporización, se consigue por software con las instrucciones CLRWDT y SLEEP. El diseñador debe analizar el programa de trabajo y situar alguna de estas dos instrucciones en sitios estratégicos por los que pasa el flujo de control antes que transcurra el tiempo que controla el Perro guardián. De esta manera, si el programa se "cuelga" (bucle infinito, espera de acontecimiento que no se produce, etc.), no se refresca a tiempo al Perro guardián y se produce una reinicialización.

La instrucción CLRWDT borra simplemente el valor de WDT, reiniciando la cuenta. Sin embargo, la instrucción SLEEP, además de borrar el WDT, detiene a todo el sistema entrando en un modo de trabajo en el que el consumo es mínimo (modo de Reposo o de bajo consumo). Si no se desactiva al Perro guardián cuando se entra en el modo de Reposo, al acabar su conteo provocará un reset y se saldrá de dicho modo. Otra forma de salir del modo de Reposo es activando la patita MCLR. Para desactivar al Perro guardián, hay que poner un 0 en el bit 2 (WDTE) de la Palabra de configuración ( Configuration Word).

Se refleja la posibilidad de que el Divisor de frecuencia opere con el TMR0 o con el WDT, según el valor que tenga el bit PSA. Los impulsos de conteo pasan por el Divisor antes de aplicarse al TMR0 (Predivisor). Por el contrario, los impulsos pasan primero por el WDT y luego por el Divisor (Post-divisor).



Prácticas con Microcontrolador PIC 16F84 | miguel.tecno@gmail.com

Regresar a contenido | Regresar al menu principal