Usar interrupciones con Arduino.

Publicado el marzo 15th, 2011 en General.

Me he enterado de que en Arduino habían incluido el uso de interrupciones de una forma bastante sencilla.

Arduino, tiene dos fuentes de interrupciones externas, los pines 2 y 3. Eso quiere decir que al producirse un evento(configurable) en alguno de estos pines, se interrumpirá al Atmega y se ejecutará el código asociado a esa interrupción.

Para declarar una interrupción lo haremos en el cuerpo del setup, de la siguiente forma:

/* attachInterrupt(A, B, C)
* A   can be either 0 or 1 for interrupts on pin 2 or 3.
*
* B   Name of a function you want to execute while
* in interrupt A.
*
* C   Trigger mode of the interrupt pin. can be:
*             LOW        a low level trigger
*             CHANGE     a change in level trigger
*             RISING     a rising edge of a level trigger
*             FALLING    a falling edge of a level trigger
*
* In all but the IDLE sleep modes only LOW can be used.
*/

Por ejemplo,

attachInterrupt(0, ArCanInterrupt, FALLING);

El primer parámetro define el uso de la interrupción 0, la que está en el Pin 2. Cuando en el Pin 2 se detecta un flanco de bajada(3º parámetro), es decir, pasa de 1 a 0, entonces ejecutará el código que definamos en ArCanInterrupt().

Por ejemplo,

void ArCanInterrupt()
{
//Almacenamos el mensaje en el buffer_rx
ArCan.get_message_rx_buffer()
}

En las próxima versión de la librería estará incluido el uso de interrupciones.

Consejo: El código que se ejecuta en una interrupción debe ser lo más rápido posible.



No comentado »

Ningún comentario

RSS feed for comments on this post. TrackBack URL

Dejar un comentario

Disculpa, debes iniciar sesión para escribir un comentario.