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);
No hay comentarios:
Publicar un comentario