0% encontró este documento útil (0 votos)
9 vistas19 páginas

Interrupciones Arduino Uno Programacion

El documento describe el funcionamiento de las interrupciones en microcontroladores, específicamente en el Arduino Uno, destacando su capacidad para interrumpir la ejecución del programa principal para ejecutar una rutina de servicio. Se explican los tipos de interrupciones, tanto externas como internas, y cómo configurarlas en el entorno de programación de Arduino. Además, se incluye un ejemplo práctico de implementación de interrupciones en un programa y su simulación en Proteus.

Cargado por

jrvizcaya
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
9 vistas19 páginas

Interrupciones Arduino Uno Programacion

El documento describe el funcionamiento de las interrupciones en microcontroladores, específicamente en el Arduino Uno, destacando su capacidad para interrumpir la ejecución del programa principal para ejecutar una rutina de servicio. Se explican los tipos de interrupciones, tanto externas como internas, y cómo configurarlas en el entorno de programación de Arduino. Además, se incluye un ejemplo práctico de implementación de interrupciones en un programa y su simulación en Proteus.

Cargado por

jrvizcaya
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Microcontroladores

Interrupciones
ArduinoUno
Juan R Vizcaya R
Agosto de 2022
Las Interrupciones
● Una interrupción es un evento que ocurre en cualquier momento
(asincróno), y hace que el microcontrolador interrumpa la
ejecución del programa en curso y salta a una direccion
preestablecida, en la tabla de vectores de Interrupción, alojada el
la memoria de programa FLASH y ejecuta una subrutina
denominada, Rutina de servicio a la Interrupción(R.S.I).
● Una vez finalizada la R.S.I, el microntrolador continua con el
programa principal.
● Las Interrupciones pueden ser externas o internas. Las externas
son estimulos provenientes del mundo real y captadas por el
microcontrolador a través de sus perifericos. Las internas
provienen del CPU, la memoria y de los recursos hardware tales
como: contadores, temporizadores, convertidores A/D, el puerto
serial entre otros.
Esquema de una interrupción
Mapa de Memoria
Memoria de Programa
● Espacio continuo de memoria
Flash de 16 bits , de 32Kb( 16K
x16) en el Atmega328P de
0x0000 a 0x3FFF.
● La memoria Flash soporta
10.000,00 ciclos de lectura y
escritura.
● La memoria se puede
particionar para disponer de un
sector de arranque para auto-
programación.(BootLoader)
Vectores de Interrupción Atmega328P

El Atmega328P tiene
26 fuentes de
interrupción externas e
internas, tal como se
muestra en la tabla

La maxima prioridad la
tiene el RESET, Vector
No. 1 luego el Vector
No. 2 y asi
sucesivamente.

Cuando ocurren dos
interrupciones
simultaneamente se
ejecuta la de mayor
prioridad.
Interrupciones Externas
● En la figura, se muestran las caracteristicas de la señal externa, que
generan las interrupciónes.

Flanco de subida Flanco de bajada


Interrupciones Externas
Las interrupciones externas. se configuran para que respondan a uno
de los siguientes eventos:
● LOW, la interrupción externa se dispara por la detección de un nivel de
voltaje bajo, LOW (0V), en el pin asignado a dicha interrupción.
● HIGH, la interrupción externa se dispara por la detección de un nivel
de voltaje bajo, HIGH (5V), en el pin asignado a dicha interrupción.
Solo para Arduino Due, Zero y MKR1000.
● CHANGE, la interrupción externa se dispara por la detección de un
cambio en el nivel de voltaje, de LOW(0V) a HIGH(5V) o de HIGH(5V)
a LOW(0V).
● RISING, la interrupción externa se dispara por la detección de un
flanco de subida.
● FALLING, la interrupción externa se dispara por la detección de un
flanco de bajada.
Tipos de Interrupciones Externas
● Interrupciones externas del Tipo INT, asignadas a un pin especifico del
microcontrolador. Tal como se muestra en la figura:
Tipos de Interrupciones Externas
● Interrupciones externas del Tipo INT, en el Arduino UNO, se muestra
en la figura:
Tipos de Interrupciones Externas
● Interrupciones externas del Tipo PCINT, Pin Change Interrupt,
asignadas a un grupo de pines o un puerto del microcontrolador.
● CHANGE, la interrupción externa PCINTse dispara por la detección de
un cambio en el nivel de voltaje, de LOW(0V) a HIGH(5V) o de
HIGH(5V) a LOW(0V), de cualquier pin del grupo o puerto. Todos los
pines que pertenecen a un puerto, comparten una unica Rutina de
Servicion a la Interrupción.
Tipos de Interrupciones Externas
● Interrupciones externas del Tipo PCINT, en el ARDUINO UNO se
muestra en la figura
Procedimiento general para configurar
Interrupciones
● Se desabilitan las interrupciones globales.
● Se configuran los atributos de la interrupcion externa particular, o se
configura el periferico interno para que genere una interrupción.
● Se habilita la interrupcion individual.
● Se habilitan las interrupciones globales.
Interrupciones
en Arduino
● El lenguaje de programacion Arduino, solo tiene implementadas la
interrupciones externas tipo INT.
● Las interrupciones externas tipo PCINT, no son implentadas por el
lenguaje de programacion Arduino. La comunidad de usuarios a traves
de librerias hacen posible su utilización.
● Las interrupciones internas, generadas por los perifericos internos, no
son implentadas por el lenguaje de programacion Arduino. La
comunidad de usuarios a traves de librerias, hacen posible su
utilización.
Interrupciones Externas
en Arduino
● noInterrupts (), deshabilita las interrupciones globales.
● interrupts (), habilita las interrupciones globales.
● attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)
– digitalPinToInterrupt(pin), regresa el numero de interrupcion,
asociada a un pin del microcontrolador.
– ISR, rutina de servicio a la interrupción, se ejecuta cuando ocurre la
interrupción. Para intercambiar datos entre la ISR y el programa
principal, se hace a traves de una variable declarada volatile.
– mode, se selecciona el atributo de la señal externa que va a
generar la interrupción: LOW, CHANGE, RISING, FALLING.
HIGH en Arduino Due, Zero y MKR1000.
● detachInterrupt(digitalPinToInterrupt(pin)), deshabilita la interrupción,
asignada al pin.
EJEMPLO
● El programa que se muestra en la figura, desarrollado con el IDE de
Arduino, realiza las siguientes acciones:
● Habilita la detección de Interrupciones por flanco de bajada, en los
pines 2 y 3 de Arduino Uno.
● Al presionar el pulsador Interrupción 0, se dispara la interrupción 0 y
muestra en el Virtual Terminal de Proteus el mensaje INT0.
● Al presionar el pulsador Interrupción 1, muestra en el Virtual
Terminal de Proteus el mensaje INT1.
● Realice la Simulación en Proteus usando el circuito de la figura.
Programa ejemplo
Circuito en Proteus
ACTIVIDAD
● Modificar el programa anterior, desarrollado con el IDE de Arduino,
para agregar las siguientes acciones:
● Al presionar el pulsador Interrupción 0 y el pulsador interrupción 1 por
10 veces o mas, se muestre en el Virtual Terminal de Proteus el
mensaje ” Fin de las interrupciones Externas ”.
● Deshabilitar las Interrupciones globales.
● Eliminar la asignacion de la interrupción externa a los pines 2 y 3 con
el comando detachInterrupt(digitalPinToInterrupt(pin)).
● Leer la entrada 2 y mostrar en el Virtual Terminal de Proteus el
mensaje ” Entrada pin 2”.
● Leer la entradas 3 y mostrar en el Virtual Terminal de Proteus el
mensaje ” Entrada pin 3”.
● Realice la Simulación en Proteus usando el circuito de la figura
anterior.
Decanato de Extension

Simulación en Proteus

Gracias

También podría gustarte