INTERRUPCIÓN POR DESBORDAMIENTO DEL TMR0, TMR1, TMR2

Los temporizadores en el microcontrolador son contadores, que van contando a medida que se va ejecutando el programa de forma paralela, y cuando este termina su conteo, ósea cumple con su capacidad máxima, este genera una interrupción, el tiempo de que demora en generar el desbordamiento, viene dado por varios factores como la preescala, pos-escala, inicialización, velocidad del cristal etc. 

  
INTERRUPCIÓN POR DESBORDAMIENTO DEL TMR0


El TMR0 es el primero de los temporizadores  y tiene las siguientes características:

ü  Puede configurarse como un contador de de 8 o 16 bits
ü  Puede contar una señal de reloj interna (Ciclos de Maquina) o una señal de reloj externa (Transiciones en el pin RA4)
ü  Se le puede asignar una preescala para garantizar un tiempo más extenso, las posibles preescalas son:

1:2
1:4
1:8
1:16
1:32
1:64
1:128
1:256


Para configurar el tiempo deseado del TMR0 se debe tener en cuenta la siguiente formula:

Tbase = ((fin de conteo) – (inicio de conteo)) * (Preescala) * (Ciclo de maquina)

Por ejemplo para un conteo total del TMR0 configurado a 8 bits, con una preescala de 1:256  y un cristal de 4Mhz   seria:

Tbase = ((256) – (0)) * (256) * (1us)= 65536 us

Cambiando la configuración a 16 bits y manteniendo los demás parámetros:

Tbase = ((65536) – (0)) * (256) * (1us)= 16777216 us = 16.777216 s


FUNCIONES UTILIZADAS PARA CONFIGURAR LA INTERRUPCIÓN TMR0

·         SETUP_TIMER_0(TIPO DE RELOJ | PREESCALA | # DE BITS);
Con esta función se configura el tipo de reloj, la preescala y la opción a 8 o 16 bits del TMR0.

TIPO DE RELOJ

RTCC_INTERNAL: Configura un reloj interno, el TMR0 se incrementa con ciclos de maquina

RTCC_EXT_H_TO_L: Configura un reloj externo, el TMR0 se incrementa con las transiciones de alto a bajo del pin RA4.

RTCC_EXT_L_TO_H: Configura un reloj externo, el TMR0 se incrementa con las transiciones de bajo a alto del pin RA4.

PREESCALA

RTCC_DIV_1, RTCC_DIV_2, RTCC_DIV_4, RTCC_DIV_8, RTCC_DIV_16, RTCC_DIV_32, RTCC_DIV_64, RTCC_DIV_128, RTCC_DIV_256

# DE BITS

RTCC_8_BIT: Configura el TMR0 a 8 bits para configurarlo a 16 bits se deja el espacio en blanco

  
·         ENABLE_INTERRUPTS(INT_TIMER0);
Con esta función se habilita la interrupción por TMR0



No hay comentarios:

Publicar un comentario