Professional Documents
Culture Documents
ARDUINOS
Amancha Guangasi Sonia Elizabeth
seamancha@espe.edu.ec
Ramrez Chango Jssica Mireya
jmramirez6@espe.edu.ec
2. DESARROLLO
2.3 VECTOR DE INTERRUPCIONES
2.1 INTERRUPCIN
Tabla 1.Vectores de interrupciones
1Una interrupcin es aquella que se realiza al Fuente: (curso de microcontroladores, 2013)
proceso que se est realizando en ese momento en el
procesador de tal manera que el procesador debe dejar Interrupcion Direccion
la labor que estaba ejecutando para atender la
interrupcin solicitante, una vez atendida puede
retornar al proceso donde lo dejo. Reset 0000
Interrupcion Externa 0 0003
Puede ser llamado va una interrupcion por
hardware y detiene al programa principal en cualquier Timer 0 000B
ejecucin permitindole luego retornar a la labor que se Interrupcion Externa 1 0013
estaba ejecutando.
Timer 1 001B
Puerto Serial 0023
Tx y Rx
1 2
(curso de microcontroladores, 2013) (curso de microcontroladores, 2013)
1
Timer 2 002B retornar al programa que estaba corriendo antes de ser
(Solo At89c52 y activada y atendida la interrupcin, esta instruccin es
RETI RETorno de interrupcin.
superiores)
2.5 INTERRUPCIONES CON ARDUINO
2.4 ACTIVACION DE INTERRUPCIONES 5Lasinterrupciones con Arduino permiten
3Al energizar el microcontrolador las reaccionar a eventos externos a la placa de una forma
interrupciones estn desactivadas deben habilitarse rpida. Cuando se detecta una seal, una interrupcin,
manualmente va software, existe un registro global de interrumpe el proceso que se est ejecutando. Esto
interrupciones que habilita la funcin de interrupcin en permite dos cosas. Por un lado, ejecutar rpidamente
general. Este registro se denomina "IE" Interrup Enable. un trozo de cdigo, y por otro lado parar la ejecucin del
cdigo que se estaba ejecutando.
Micro, Leonardo 0, 1, 2, 3, 7
Ilustracin 1. Activacin de interruptores Funcin que permite definir o configurar uno de los
Fuente: (curso de microcontroladores, 2013) pines como un puerto de interrupcin. Los tres
parmetros que admite son:
pin: Indica que pin se va a utilizar como
interrupcin. No debemos pasar el nmero de
pin, debemos pasar el ordinal es decir, si
trabajamos con Arduino UNO tenemos dos
pines para interrupciones el 2 y el 3. Si
queremos utilizar el 2 debemos poner un 0 y si
queremos utilizar el 3 debemos poner un 1.
ISR: es una abreviatura de Interrupt Service
Routine y no es ms que la funcin o mtodo
que se llama cuando se produce la
Ilustracin 2.El registro "IE" Interrup Enable interrupcin. Es de un tipo particular ya que no
Fuente: (curso de microcontroladores, 2013) admite parmetros y tampoco devuelve
ningn valor.
modo: define cuando debe ser disparada la
interrupcin. Puede tomar cuatro valores
constantes dependiendo de lo que queramos
hacer:
- LOW: se lanzar la interrupcin cuando el pin
est en estado bajo.
- CHANGE: se lanzar la interrupcin cuando el
pin cambie de valor de alto a bajo, o de bajo a
Ilustracin 3.prioridades con el registro "IP" Interrup alto.
Priority - RISING: se lanzar la interrupcin cuando el
Fuente: (curso de microcontroladores, 2013) pin cambie de estado de bajo a alto.
- FALLING: se lanzar la interrupcin cuando el
Retorno de interrupcin RETI pin cambie de estado de alto a bajo.
- HIGH: se lanzar la interrupcin cuando el pin
4Como habamos mencionado la interrupcin est en estado alto.
viene a ser un subprograma que resuelve la solicitud de
la interrupcin y al ser un programa de subrutina debe
3 5
(curso de microcontroladores, 2013) (programacion facil, 2015)
4
(curso de microcontroladores, 2013)
2
2.7 detachInterrupt(pin) digitalWrite(ledPin, state);
}
El mtodo detachInterrupt() anula la configuracin
de un pin como interrupcin esa configuracin. Como void blink() {
parmetro le pasamos el pin y lo podemos hacer con la state = !state;
funcin digitalPinToInterrupt(nmero de pin) que nos }
devolver el ordinal del pin del que queremos anular la
configuracin.
2.9 APLICACIONES
EJEMPLO DE PROGRAMACIN,
APLICACIONES DE INTERRUPCIONES EN
ARDUINO
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin
), blink, CHANGE);
}
void loop() {
6 7
(prometec, 2016) (aprendiendo arduino, 2016)
3