Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduccin
Los AVR tienen una gama amplia de recursos internos.
En este captulo revisaremos los temporizadores. y interrpciones
Una labor habitual de los controladores suele ser la determinacin de intervalos de
tiempo concretos.
Esto se hace a travs de un elemento denominado Temporizador (Timer).
Un temporizador bsicamente es un registro de n-bits que se incrementa de
manera automtica en cada ciclo de instruccin o cuando ocurre un evento
externo.
Si la fuente de temporizacin es externa, se le conoce como contador de eventos.
El registro puede ser pre-cargado para iniciar su conteo a partir de un valor
determinado.
Cuando ocurre un desbordamiento en el registro (una transicin de 1s a 0s) se
genera alguna sealizacin.
El ATMega8 y el ATMega16 tienen tres temporizadores y manejan tres tipos de
eventos. Los eventos quedan registrados en TIFR (Timer Interupt Flag Register).
TIMER 0.
FUNCIONAMIENTO GENERAL
Un temporizador (Timer) es un perifrico que se encarga generar un evento
(interrupcin) cada vez que ha pasado cierto intervalo de tiempo.
La interrupcin de un temporizador se genera cuando el circuito contador del mismo,
sufre un sobre flujo, es decir, cuando se desborda.
La velocidad a la que un temporizador genera interrupciones depende del origen de la
seal de reloj que alimente al mismo.
En la familia de microcontroladores AVR, dicha seal de reloj puede provenir del
exterior o ser generada internamente.
Cuando la seal es interna, la velocidad del temporizador depende de la frecuencia del
cristal colocado al microcontrolador.
Cuando es externa, depender de la velocidad de los pulsos que se introduzcan por
alguna terminal especfica del dispositivo.
Un temporizador cuya seal de reloj es externa, se dice que est configurado en modo
contador (Counter).
APLICACIONES
Medicin de intervalos de tiempo.
MSB
BIT
significado
FUNCIN
CS02 a CS00 Clock Select0 bits 2,1 y 0 Selecciona el origen y el pre escalamiento de la seal de
RELOJ para el Timer/Counter0. .
Bit ms significativo a bit menos significativo del
contador del Timer/Counter0.
MSB a LSB
TOIE0
TOV0
CS0
1
0
0
1
1
0
0
CS0
0
0
1
0
1
0
1
ORIGEN Y
PREESCALAMIENTO DE LA
SEAL DENO
RELOJ.
DETENID,
CUENTA.
1/fosc (ms rpido)
8/osc
64/osc
256/fosc
1024/fosc (ms lento)
Si
TCCR0 =0 hace que este perifrico se pare, es decir, TCNT0 no cuenta y por lo tanto el
TIMER/COUNTER0 no genera interrupciones.
TCCR0=1 hace que el TCNT0 se incremente con cada pulso de reloj, es la forma ms rpida
en la que este perifrico genera interrupciones.
TCCR0=5 hace que el TCNT0 se incremente cada 1024 pulsos de reloj, es la forma ms
lenta en la que este perifrico genera interrupciones (con RELOJ interno). TCCR0=6 hace que
el TCNT0 se incremente con cada flanco negativo (cuando la seal pasa de 1 a 0)
aplicado en la terminal T0 del microcontrolador.
I.S.R.
El CPU salta a la direccin vector de interrupcin de este perifrico cada vez que el registro
TCNT0 tiene el valor $FF (255 en decimal) e intenta incrementar su valor (se desborda).
Si programa en ensamblador, deber colocar una instruccin de salto (rjmp) en la direccin del
vector de interrupcin para re direccionar a la posicin de memoria donde se encuentra realmente
la ISR del TIMER/COUNTER0.
En la ISR puede (y quiz hasta deba) reiniciar el registro TCNT0 con un valor apropiado,
generalmente se pone en 0, aunque puede ser otro valor. Observe entre mayor sea el valor de
TCNT0 la interrupcin siguiente se producir en un tiempo menor. No es necesario que ponga el
bit 7 del archivo TIFR en 0 cada vez que se produzca una interrupcin, al atenderse la ISR el
hardware lo realiza.
IMPLANTACIN.
La secuencia de configuracin, de los registros especiales, se muestra programada
en lenguaje ensamblador. Si usted utiliza otro lenguaje de programacin, solo tome
los ejemplos de implantacin como referencia.
loop