Вы находитесь на странице: 1из 5

Microcontroladores ATMEL AVR Docente: Ing.

Roger Guachalla Narváez


xoroger@yahoo.es

PRACTICA 02: Interrupción por Rebalse del Timer/Counter0


1. Descripción:
 Comprobar el funcionamiento del Temporizador/Contador 0 del ATMEGA8L funcionando en modo
Temporizador.
 El programa de ejemplo invierte los leds conectados al puerto B después de 5 rebalses consecutivos
del Timer/Counter0.
2. Diagrama Esquemático
Componentes Proteus:

3. Código Fuente MikroBasicPro for AVR:


4. Interrupciones en el ATMEGA8

Cuando ocurre un requerimiento de interrupción y la interrupción ha sido habilitada, entonces el


procesador detiene el programa principal, atiende a la rutina de servicio de interrupción y, una vez
concluida esta, el procesador retorna al programa principal.

Al ocurrir la interrupción, el registro Contador de Programa (PC) se almacena en la Pila (Stack).


Posteriormente el PC se carga con la dirección del Vector de Interrupción. Una vez terminada la rutina
de interrupción (el procesador halla la instrucción RETI), el procesador recupera la dirección de retorno
al programa principal extrayéndola de la Pila.

Todas las interrupciones tienen un Vector de Interrupción separado en la Tabla de Vectores de


Interrupción. Las interrupciones tienen prioridades de acuerdo con su posición del Vector de
Interrupción. Cuanto menor sea la dirección, mayor será su prioridad.

Tabla de Vectores de Interrupción


5. Operación del Timer/Counter0 (Temporizador/Contador 0)

Dónde:
TCNTn: Regisro de 8-bit Temporizador/Contador (Timer/Counter) (TCNT0 para el timer 0)

Tn: Entrada de reloj externa (T0 para el timer 0, pin PD.4 en el ATMEGA8)

TOVn: Bandera de rebalse del timer 0 (Timer/Counter Overflow flag)

Clock Select: Selección de fuente de reloj

Descripción de señales internas:

count: Incrementa el registro TCNT0 en 1

clkTn: Reloj del Temporizador/Contador (clkT0)

max: Señalizador que TCNT0 ha alcanzado su valor máximo

 El contador se incrementa después de cada señal de reloj del clkT0. Esta señal puede ser generada de una
fuente interna o externa de reloj, seleccionada por los bits de selección de reloj (CS02:0). Cuando no se
selecciona fuente de reloj (CS02:0=0) el timer está detenido. Sin embargo, el valor de TCNT0 puede ser
leído por el CPU, sin importar que haya o no la señal de clkT0.

 La dirección de conteo es siempre UP (ascendente). El contador rebalsa cuando pasa el valor máximo de 8-
bit (MAX=255) y luego inicia otra vez en 0. Cuando ocurre el rebalse la bandera TOV0 se pondrá en 1
generando un requerimiento de interrupción que será atendido siempre y cuando la interrupción esté
habilitada.

6. Descripción de Registros:
Registro de Estado (Status Register) SREG

 Bit 7 – I: Global Interrupt Enable (Habilitación Global de Interrupciones)


Este bit debe estar en 1 para habilitar las interrupciones. Luego se debe habilitar las interrupciones
individuales en los registros de control separados. Si este bit esta en 0, ninguna de las otras
interrupciones estará habilitada independientemente de su configuración individual.
Registro de Máscaras de Interrupción del Temporizador/Contador (Timer/Counter Interrupt
Mask Register) TIMSK

 Bit 0 – TOIE0: Timer/Counter0 Overflow Interrupt Enable (Habilitación de Interrupción por Rebalse
del Temporizador/Contador 0)
Cuando este bit está en 1, y el bit I del Registro de Estado está también en 1, entonces se habilita la
interrupción por rebalse el Timer/Counter0.

Registro de Banderas de Interrupción del Temporizador/Contador (Timer/Counter Interrupt Flag


Register) TIFR

 Bit 0 – TOV0: Timer/Counter0 Overflow Flag (Bandera de Rebalse del Temporizador/Contador 0


Este bit se pone en 1 cuando ocurre un rebalse en el Timer/Counter0. TOV0 es puesto a 0 por hardware
cuando se ejecuta la rutina de servicio de interrupción. Cuando el SREG I-bit, TOIE0 y el TOV0 están en
1, se ejecuta la interrupción del Timer/Counter0

Registro de Control del Timer/Counter (Timer/Counter Control Register) TCCR0


 Bits 2:0 – Clock Select (Selección de Reloj)


Estos 3 bits seleccionan la fuente de reloj a ser usada por el Timer/Counter

CS02 CS01 CS00 Descripción


0 0 0 Sin fuente de reloj (Timer/Counter detenido)
0 0 1 clkI/O/(Sin pre-escalador)

0 1 0 clkI/O/8 (Desde el pre-escalador)

0 1 1 clkI/O/64 (Desde el pre-escalador)

1 0 0 clkI/O/256 (Desde el pre-escalador)

1 0 1 clkI/O/1024 (Desde el pre-escalador)

1 1 0 Fuente de reloj externa en el pin T0. Conteo por flanco descendente

1 1 1 Fuente de reloj externa en el pin T0. Conteo por flanco ascendente


7. Informe de Práctica:

I. TRABAJO EN LABORATORIO

a) Con el circuito de ejemplo del Interrupción por Rebalse del Timer/Counter0, realizar:
 Proyecto MikroBasic, Código Fuente (Impreso)
 Simulación en ISIS-Proteus
 Grabado del microcontrolador usando el AVR-8051 Prog ISP
 Armado y funcionamiento en PROTOBOARD (Confirmación con Firma)

b) Modificar el Hardware del circuito añadiendo un pulsador (button) al pin T0 (PD4) y cambiar el
software para usar el Timer/Counter0 en modo Contador de manera tal que el estado de los leds
del puerto B conmute por cada 3 pulsos de entrada.

II. TRABAJO DE INVESTIGACION (Información WEB impresa, Resumen escrito A MANO)

 Investigar la operación y los diagramas en bloques del Timer/Counter1 y del Timer/Counter2

III. CONCLUSIONES

Вам также может понравиться