Tema 5




MODULO TIMER 0

El módulo Titner0 es temporizador/contador con las siguientes características:
El temporizador/contador dispone de 8 bits, puede escribirse y leerse Preescaler programable por Software de 8 bits.
Puede trabajar con el reloj interno o con una señal de reloj externa. Dispone de una interrupción por desbordamiento al pasar de FFh a 00h.
Selección de flanco ascendente o descendente para el flaco del reloj externo.
En la Figura siguiente se muestra un diagrama de bloques del Timer0 y el preescaler que comparte con el WDT. Puede encontrarse información adicional sobre el módulo Timer0 en el manual de referencia de los microcontroladores de la escala media (DS33023).

TOCS, TOSE, PSA, PS2:PS0 (OPTION_REG<5:0>)
El modo temporizador se selecciona poniendo a cero el bit T0CS ( registro OPTION_REG <5>).
En el modo temporizador, el módulo Timer0 se incremento en cada cielo de instrucción (sin el preescaler). Si el registro TMR0 se escribe, el incremento se inhibe durante los siguientes dos ciclos de instrucción. EL usuario puede trabajar teniendo en cuenta esto y ajustando el valor a cargar en el TMR0.
El modo contador se selecciona poniendo a uno el bit T0CS (registro OPTION_REG <5>). El modo contador, Timer0 se incremento en cada flaco de subida o de bajada de la señal que le llega por RA4/TOCK1. El flanco de incremento se determina por el bit T0SE (registro OPTION_REG <4>).
Poniéndose a cero T0SE se selecciona el flanco ascendente. El preescaler se comparte exclusivamente entre el Timer0 y el WDT. El preescaler no es de lectura/escritura.
Interrupción del Timer0.
La interrupción de TMR0 se produce cuando el registro TMR0 se desborda al
pasar de FFh a 00h. Este desbordamiento pone a uno el bit T0IF (INTCON<2>). La ininterrupción puede enmascararse poniendo a cero el bit T0IE (INTCON <5>). 
EL bit T0IF debe ponerse a cero por software al finalizar la rutina de atención a la interrupción del desbordamiento de TMRO. La ininterrupción de TMRO no saca al microcontrolador del estado de SLEEP, debido a que el temporizador está desactivado durante el modo SLEEP.
Utilización del Timer0 con un Reloj Externo
Cuando no se utiliza el preescaler, la entrada de reloj externa es igual a la salida del preescaler. Las sincronización de TOCKI con los relojes de fase interior se acopla, a la salida del preescaler en los ciclos Q2 y Q4 de los relojes de fase internos. Por consiguiente, es necesario que TOCKI está a nivel alto por al menos durante 2Tosc (y un pequeño retardo de 20ns) y a nivel bajo por lo menos 2Tosc (y un retardo RC de 20ns).Ver las características eléctricas del dispositivo deseado.
Preescaler
Hay sólo un preescaler disponible que es está compartido y puede asignarse indistintamente al moduló de Timer0 y el al WDT. La asignación del preescaleral Timer0  hace que no haya ningún preescaler para el WDT, y viceversa. Este preescaler no se puede leer ni escribir.
El bit PSA y PS2:PS0 (OPTION_REG <3:0>) determinan la asignación del preescaler y el rango del preescaler. Cuando se le asigna al módulo del Tirner0, todas las instrucciones, que escriben en el registro TMR0 (por ejemplo CLRF, TMR0, MOVWF TMR0, BSF TMR0,x... etc.) ponen a cero el preescaler.
Cuando se le asigna al WDT, una instrucción CLRWDT limpia el preescaler junto con el temporizador del WDT. EL preescaler no se puede leer ni escribir.

EPS2 PS1 PS0 
Divisor(timer 0)
Divisor(Watchdog)
0 0 0
1/2
1/1
0 0 1
1/4
1/2

1/8
1/4

1/16
1/8

1/32
1/16

1/64
1/32

1/128
1/64

1/256
1/128
 


Vídeo : TIMER0
Oscilador, cuyo  retardo es  generado por el timer0, se usa pre escalador
Programa 1




Vídeo: TIMER0 CONTADOR

 Programa 2
Este código muestra un contador de eventos externos. La cuenta se incrementa con los pulsos que entran al TIMER0, por PA4.




1 comentario:

  1. Disculpe profesor, no se visualiza el diagrama de bloque del Timer 0

    ResponderEliminar