jueves, 6 de febrero de 2014

Interrupciones en Arduino



La mayoría de las placas Arduino tienen dos interrupciones externas.
  • Interrupción externa 0: (Pin digital 2)
  • Interrupción externa 1: (Pin digital 3)

Para usar interrupciones tenemos la función:

void attachInterrupt(interrupción, función, modo)

Dicha función especifica qué función se invoca cuando se produce una interrupción externa, si ya existía una función adjuntada al pin se sustituye por la nueva.

Los parámetros de esta función son:
Interrupción: El número de la interrupción (Es un int y puede ser 0 o 1 esto para asignar el pin a usar).
Función: Es la función que se invocara cuando la interrupción suceda, esta función NO debe tener parámetro, tampoco devolver nada. Comúnmente se le conoce como rutina de interrupción de servicio.
Modo: Esto define el criterio de la interrupción es decir cuando se considerara como interrupción.

Existen 4 constantes predefinidas para poder usarlas como modos.

LOW. Se dispara la interrupción cuando el pin tenga un valor bajo (Cero lógico o LOW).
CHANGE. Se dispara la interrupción cuando el pin se tenga un valor alto (Uno lógico o HIGH).
RISING. Se dispara la interrupción cuando el pin pase de valor bajo a alto (LOW a HIGH | 0 a 1).
FALLING. Se dispara la interrupción cuando el pin pase de valor alto a bajo (HIGH a LOW | 1 a 0).


También se cuenta con funciones para activar o desactivar el uso de las interrupciones. Con tan solo usar la función noInterrupts() se asegura de que no se interrumpa la porción de código que le sigue a esta función, también está la función interrupts() que hace lo contrario, ya que permite las interrupciones. Esto puede ser útil dependiendo el caso y se maneja similar a los hilos y candados.

No hay comentarios:

Publicar un comentario