Click here to load reader
Upload
jonathan-ruiz-de-garibay
View
134
Download
0
Embed Size (px)
Citation preview
Sistemas Electrónicos Programables Facultad de Ingeniería, Universidad de Deusto
Práctica 05: Interrupciones en Arduino
Sistemas Electrónicos Programables
Interrupciones
Los microcontroladores pueden tener multitud de
causas de interrupción:
Interrupciones externas
Temporizadores
Recepción Serie
…
Una Interrupción es un código que se ejecuta
fuera del proceso principal de un programa; y
que se lanza automática ante un evento dentro
del microcontrolador.
Sistemas Electrónicos Programables
Interrupciones (continuación…)
Cuando se produce un interrupción, ésta
‘interrumpe’ la ejecución del programa principal;
deja en pausa el programa principal y
ejecuta una función específica para cada interrupción.
Cuando la función de interrupción ha terminado;
Re-arranca el programa principal desde el mismo punto
donde se había detenido.
Programa Principal
Se produce la
interrupción
Rutina de interrupción
Sistemas Electrónicos Programables
Interrupciones en Arduino
Arduino soporta, de forma directa, únicamente
interrupciones externas:
En el Arduino Uno, hay 2 interrupciones externas:
Interrupción 0 pin 2
Interrupción 1 pin 3
que en el Arduino Mega, hay 6 interrupciones externas:
Interrupción 0 pin 2
Interrupción 1 pin 3
Interrupción 2 pin 21
Interrupción 3 pin 20
Interrupción 4 pin 19
Interrupción 5 pin 18
Sistemas Electrónicos Programables
Interrupciones en Arduino (continuación…)
Para habilitar un interrupción, se utiliza la función:
Para deshabilitar una interrupción, se utiliza la función:
void attachInterrupt(interrupción, función, modo)
Donde:
interrupción número de interrupción (0, 1, 2 … n)
función función a ejecutar cuando se produce la interrupción
modo tipo de evento que genera la interrupción
LOW: el pin está en valor bajo
CHANGE: el pin ha cambiado de valor
RISING: el pin pasa de valor bajo a valor alto
FALLING: el pin pasa de valor alto a valor bajo
void detachInterrupt(interrupción)
Donde:
interrupción número de interrupción (0, 1, 2 … n)
Sistemas Electrónicos Programables
Interrupciones en Arduino (continuación…)
Ejercicio 1:
Enviar un ‘1’ por el puerto serie cuando se active el pulsador
conectado en el pin 2 [implementar dos versiones: sin usar
interrupciones y usando interrupciones].
#define BUTTON 2
void setup() {
pinMode(BUTTON, INPUT);
Serial.begin(9600);
attachInterrupt(0, buttonInt, RISING);
}
void loop() {
}
void buttonInt() {
Serial.print("1");
}
Con interrupciones
#define BUTTON 2
void setup() {
pinMode(BUTTON, INPUT);
Serial.begin(9600);
}
void loop(){
if (digitalRead(BUTTON)){
Serial.print("1");
}
}
Sin interrupciones
Esta presentación está sujeta a la licencia de Reconocimiento
de Creative Commons mediante la cual se permite la copia, la
distribución, la comunicación pública y la generación de obras
derivadas sin ninguna limitación siempre que se cite al autor y
se mantenga el aviso de la licencia.
© 2014, Jonathan Ruiz de Garibay
Algunos derechos reservados