Pic 16F84
La figura que sigue se muestra el temporizador (TMR0) y el temporizador perro guardi�n (WDT) en diagrama de bloques. Al pi� de la figura (en amarillo) los bits relacionados, de cada registro que afecta el ajuste de los temporizadores.
El Preescaler que, est� en el centro de la figura, puede ser usado por el TMR0 o por el WDT. La figura anterior muestrael preescaler conectado a TMR0. El bit PSA (bit 3) del OPTION_REGdetermina a cual de los dos es conectado el preescaler. El preescaler es un contador programable cuyo rango es determinado por los bits PS0, PS1, PS2 (bits 0, 1 y 2) de OPTION_REG. TMR0es un contador binario de 8 bit que puede contar hasta 256. Cuando el contador rebasa la cuenta de 255 (FFh) a 0 (00h) ocurre una interrupci�n pordesbordamiento y el bit T0IF (bit 2) del registroINTCON es puesto a 1. El hardware est� dise�ado tal que cuando ambos el GIE (bit 7) y TOIE (bit 5) del registro INTCON son H ("1") la interrupci�n ocurre y el PC (program counter) va la direcci�n 004h, para comenzar la operaci�n de programa.
Una cuenta 256 de TMR0, a veces es corta. Por ejemplo, cuando el reloj interno es 20MHz, la frecuencia deentrada del contador es 5MHz. (Fosc/4). El per�odo de este pulso de reloj es de 200ns (1 / 5Mhz = 0.2 �s.). Para desbordar el TMR0 se necesitan 0.2 �s. x 256 (51.2 �s.). Entonces para ampliar este per�odo se usa el preescaler.
El preescaler se puede usar para dividir la entrada por 2, 4, 8, 16, 32, 64, 128, o 256. Por ejemplo, cuando el preescaler es puesto para dividir por 2, hay 1 pulso de salidapor cada 2 pulsos de entrada al preescaler. Si ponemos a 256, habr� 1 pulso de salida por cada 256 pulsos entrada. As� que, el tiempo de desbordamiento de TMR0 se puede hacer m�s largo modificando el valor del preescaler. En el ejemplo anterior cuando el preescaler fue puesto a 256, el tiempo de desbordamiento se hizo 51.2 �s. x 256 = 13,107.2 �s. (aproximadamente 13 milisegundos).
La entrada altemporizador (TMR0) puede ser un reloj externo o el reloj interno. Para usar el reloj externo, el bit T0CS (bit 6) del registro OPTION_REG y bit 4 del registro TRISA debe ser puesto a "1". Esto pondr� el pin RA4/T0CKI en el modo entrada de reloj (TMR0 CLOCK IN). El borde de las transiciones de subida o de ca�da del pulso de reloj, tambi�n, se pueden seleccionar por el bit T0SE (bit 5) delregistro OPTION_REG. As�, "0" para el borde creciente y "1" para el borde de ca�da.
En la entrada al temporizador (TMR0) hay un circuito de sincronizaci�n de reloj. Usando un reloj externo, el conteo del borde de subida y ca�da de reloj no se sincronizar� con el reloj interno, esto afectar�a la sincronizaci�n de la interrupci�n. Dicho circuito sincroniza la entrada de escritura de TMR0 con el relojinterno. La sincronizaci�n se alcanza en un m�ximo de 2 ciclos.
El oscilador del Temporizador Perro Guardi�n (WDT) es independiente del reloj de la CPU. La interrupci�n WDT se produce aproximadamente cada 18 ms.
Generalmente, para prevenir un tiempo mayor de la condici�n del WDT debe ser reiniciado de vez en cuando v�a software, usando la instrucci�n CLRWDT. Ver imagen de la derecha. Si elTemporizador no es reiniciado antes de la interrupci�n, la CPU forzar� un reinicio a la posici�n de direcci�n inmediatamente despu�s del encendido (Power up).
El preescaler puede ser usado para ampliar el per�odo de interrupci�n. En este caso, los valores de contador son diferentes del TMR0. El preescaler puede ser puesto a uno de los ocho valores 1, 2, 4, 8, 16, 32, 64 o 128. Cuando se pone a 128, lainterrupci�n es aproximadamente 2 segundos (18msec x 128 = 2,304msec).
La funci�n del temporizador perro guardi�n (WDT) debe prevenir una operaci�n incorrecta del software. (Ej.: Ejecutar instrucciones que no son parte del programa. Lazo: Ejecutar la misma parte repetidamente). La funci�n WDT no es siempre necesaria. Si hay un error en el programa, por lo general, puede reconocerse que hay un mal...
Regístrate para leer el documento completo.