7

Click here to load reader

Práctica05.Interrupciones en Arduino

Embed Size (px)

Citation preview

Page 1: Práctica05.Interrupciones en Arduino

Sistemas Electrónicos Programables Facultad de Ingeniería, Universidad de Deusto

Práctica 05: Interrupciones en Arduino

Page 2: Práctica05.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.

Page 3: Práctica05.Interrupciones en Arduino

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

Page 4: Práctica05.Interrupciones en Arduino

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

Page 5: Práctica05.Interrupciones en Arduino

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)

Page 6: Práctica05.Interrupciones en Arduino

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

Page 7: Práctica05.Interrupciones en Arduino

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