Logo Studenta

Microcontrolador AtpMega328p - Interrupciones

¡Este material tiene más páginas!

Vista previa del material en texto

MICROCONTROLADOR
ATMega328P
Interrupciones
ATMega328P – Interrupciones
➢ Permiten al programa responder a eventos cuando ellos
ocurren
➢ Permiten al programa ignorar eventos hasta que ellos ocurran
➢ Ejemplos eventos externos:
▪ UART lista con/para próximo carácter
▪ Cambio de la señal en el pin
✓ La acción depende del contexto
▪ Número de flancos que llegan al pin
➢ Ejemplos eventos internos:
▪ Falla de potencia
▪ Excepción aritmética
▪ Evento del Temporizador
ATMega328P – Reset y Vectores de Interrupción
ATMega328P – Reset y Vectores de Interrupción
ATMega328P – Modelo de interrupción
➢ Cuando un evento de interrupción ocurre:
▪ El procesador hace un llamado (CALL) automático a
procedimiento
▪ CALL automáticamente ejecuta las acciones necesarias
para cargar el registro PC con la dirección donde está el
procedimiento de interrupción:
✓ Guarda el registro PC en la pila (Push), y salta a la
dirección de interrupción (PC = dirección de rutina de
interrupción)
➢ Cada evento tiene su propia dirección de interrupción
➢ El bit de habilitación de interrupción global (I en SREG) es
puesto en ‘0’ automáticamente.
▪ i.e. interrupciones anidadas son deshabilitadas
▪ El bit I en SREG puede ser puesto en uno para habilitar
interrupciones anidadas
ATMega328P – Modelo de interrupción
➢ Procedimiento de interrupción “interrupt handler”
▪ Lleva a cabo las instrucciones de la interrupción, y retorna
al programa con la instrucción RETI
▪ El bit de interrupción global es automáticamente puesto en
uno con RETI
▪ Una instrucción del programa es siempre ejecutada después
de RETI
ATMega328P – Modelo de interrupción
Un aspecto importante es que los eventos pueden ocurrir en
cualquier momento, es decir, en forma asíncrona.
ISR: Interrupt Service Routine
ATMega328P – Manejo de Interrupciones
ATMega328P – Interrupciones Externas
➢ Las interrupciones externas sirven para detectar un estado
lógico o un cambio de estado en alguna de las terminales de
entrada de un microcontrolador.
➢ Evitan el sondeo continuo en la terminal de interés.
➢ Útiles para monitorear interruptores, botones o sensores con
salida a relevador.
Interrupciones externas ATmega328P
ATMega328P – Interrupciones Externas
➢ Las interrupciones externas pueden configurarse para detectar
un nivel bajo de voltaje o una transición (flanco de subida o de
bajada).
➢ Las interrupciones pueden generarse aun cuando sus
respectivas terminales sean configuradas como salidas.
➢ Las transiciones requieren de la señal de reloj de los módulos
de los recursos (clkI/O) para producir una interrupción.
➢ Un nivel bajo en INT0/INT1 no requieren de señal de reloj
para generar una interrupción.
ATMega328P – Interrupciones Externas
Configuración de las interrupciones externas
External Interrupt Control Register A – EICRA
Registro de I/O extendido. No puede ser leído y escrito con
instrucciones IN y OUT. Es leído y escrito con instrucciones LD y
ST.
ATMega328P – Interrupciones Externas
Habilitación y estado de interrupciones externas
EIMSK – External Interrupt Mask Register
Interrupción externa 0 es habilitada: 
INT0 (EIMSK) = ‘1’ y I (SREG) =‘1’
Interrupción externa 1 es habilitada: 
INT1 (EIMSK) = ‘1’ y I (SREG) =‘1’
ATMega328P – Interrupciones Externas
Ejemplo
Realice un programa que conmute la salida menos significativa
del puerto B (PB0) de un ATmega328P cada vez que es
presionado un botón conectado en INT0, como se muestra en la
figura.
ATMega328P – Interrupciones Externas
Ejemplo
En el puerto D se habilita al resistor Pull-Up para contar con ‘1’
mientras no se presione el botón. El otro extremo del botón se
conecta a tierra para insertar un ‘0’ al presionarlo. La interrupción
se configura por flanco de bajada.
La conmutación de la salida se realiza en la rutina de interrupción.
ATMega328P – Interrupciones Externas
Ejemplo
Programa en ensamblador
.include <m328pdef.inc> ; Biblioteca con definiciones
.ORG 0x000 ; Vector de reset
JMP Inicio
.ORG 0x002 ; Interrupción externa 0
SBI PINB, 0 ; Conmuta PB0 sin modificar otros bits
RETI
ATMega328P – Interrupciones Externas
Inicio: ; Inicializaciones
LDI R16, 0x00
OUT DDRD, R16 ; Puerto D como entrada
LDI R16, 0xFF
OUT PORTD, R16 ; Resistores de pull-up en el Puerto D
OUT DDRB, R16 ; Puerto B como salida
LDI R16 , 0x02 ; INT0 por flanco de bajada
STS EICRA, R16
LDI R16 , 0x01 ; Habilita la INT0
OUT EIMSK, R16
ATMega328P – Interrupciones Externas
CLR R16 ; Estado inicial de la salida
OUT PORTB, R16
SEI ; Habilitador global de interrupciones
Lazo : NOP
RJMP Lazo ; Lazo infinito, permanece ocioso
ATMega328P – Interrupciones Externas
Ejemplo
Realice un contador de eventos ascendente/descendente con salida
en binario. Considere las terminales INT0 e INT1 para el ingreso
de eventos y muestre la salida en el puerto B, el hardware
sugerido se muestra en la figura.
ATmega328P – Interrupciones Externas
ATmega328P
ATmega328P – Interrupciones Externas
Ejemplo
Programa en ensamblador
.ORG 0x0000 ; Vector de reset
RJMP Inicio
; Vectores de interrupciones
.ORG 0x0002 ; Vector de la interrupción externa 0
RJMP ISR_INT0
.ORG 0x0004 ; Vector de la interrupción externa 1
RJMP ISR_INT1
Inicio: ; Inicializaciones
LDI R16, 0x00
OUT DDRD, R16 ; Puerto D como entrada
LDI R16, 0xFF
OUT PORTD, R16 ; Resistor de Pull-Up en el puerto D
ATmega328P – Interrupciones Externas
Ejemplo
Programa en ensamblador
OUT DDRB, R16 ; Puerto B como salida
LDI R16, 0x08 ; Inicializa al apuntador de pila
OUT SPH, R16
LDI R16, 0xFF
OUT SPL, R16
LDI R16, 0B00001010 ; INT1/INT0 flanco de bajada
;OUT EICRA, R16
LDI XH, 0X00
LDI XL, 0X69
ST X, R16 ; Carga en registro EICRA Conf. INT1/INT0 
LDI R16, 0B00000011 ; Habilita INT1/INT0
OUT EIMSK, R16
ATmega328P – Interrupciones Externas
Ejemplo
Programa en ensamblador
CLR R17 ; El contador inicia en 0
OUT PORTB, R17 ; Valor inicial de la salida
SEI ; Habilitador global de interrupciones
Lazo: RJMP Lazo ; Lazo infinito, permanece ocioso
ATmega328P – Interrupciones Externas
Ejemplo
Programa en ensamblador
ISR_INT0: ; Rutina de atención a la INT0
INC R17 ; Incrementa al contador
OUT PORTB, R17 ; Actualiza la salida
RETI
ISR_INT1: ; Rutina de atención a la INT1
DEC R17 ; Reduce al contador
OUT PORTB, R17 ; Actualiza la salida
RETI
BIBLIOGRAFÍA
ATmega328P 8-bit AVR Microcontroller with 32K Bytes In-
System Programmable Flash, DATASHEET.
Lecture 6 – ATmega328 Timers and Interrupts
https://courses.cs.washington.edu/courses/csep567/10wi/lectures/
Lecture7.pdf
4. Interrupciones Externas, Temporizadores y PWM
https://www.controlesdigitales.com/Libro_Felipe_Santiago/04_C
ap_4_5_6_7.pdf
Capítulo 2 (sección 2.6) y Capítulo 4. El microcontrolador
ATMega328P. Felipe Santiago Espinosa.
	Diapositiva 1
	Diapositiva 2: ATMega328P – Interrupciones 
	Diapositiva 3: ATMega328P – Reset y Vectores de Interrupción 
	Diapositiva 4: ATMega328P – Reset y Vectores de Interrupción 
	Diapositiva 5: ATMega328P – Modelo de interrupción 
	Diapositiva 6: ATMega328P – Modelo de interrupción 
	Diapositiva 7: ATMega328P – Modelo de interrupción 
	Diapositiva 8: ATMega328P – Manejo de Interrupciones 
	Diapositiva 9: ATMega328P – Interrupciones Externas 
	Diapositiva 10: ATMega328P – Interrupciones Externas 
	Diapositiva 11: ATMega328P – Interrupciones Externas 
	Diapositiva 12: ATMega328P – Interrupciones Externas 
	Diapositiva 13: ATMega328P – Interrupciones Externas 
	Diapositiva 14: ATMega328P – Interrupciones Externas 
	Diapositiva 15: ATMega328P – Interrupciones Externas 
	Diapositiva 16: ATMega328P – Interrupciones Externas 
	Diapositiva 17: ATMega328P – Interrupciones Externas 
	Diapositiva 18: ATMega328P – Interrupciones Externas 
	Diapositiva 19: ATmega328P – Interrupciones Externas 
	Diapositiva 20: ATmega328P – Interrupciones Externas 
	Diapositiva 21: ATmega328P – Interrupciones Externas 
	Diapositiva 22: ATmega328P – Interrupciones ExternasDiapositiva 23: ATmega328P – Interrupciones Externas 
	Diapositiva 24: BIBLIOGRAFÍA