2. ¿Qué es una interrupción?
Una interrupción es una suspensión temporal de la ejecución de
un proceso, para pasar a ejecutar una subrutina de servicio de
interrupción, la cual, por lo general, no forma parte del programa,
sino que pertenece al sistema operativo.
La primera técnica que se empleó para esto fue el polling, que
consistía en que el propio procesador se encargara de sondear los
dispositivos periféricos cada cierto tiempo para averiguar si tenía
pendiente alguna comunicación para él.
3. Básicamente, una sola computadora puede realizar solo una instrucción
en un tiempo. Pero debido a que puede ser interrumpida, puede tomar
turnos entre los programas o instrucciones que realiza. Esto se conoce
como multitasking.
4. Tipos de interrupciones.
Existen dos diferentes tipos de interrupciones tanto como de hardware y
software :
interrupciones de hardware:
son aquellas interrupciones que se producen como resultado de, por lo
general, una operación de E/S. No son producidas por ninguna
instrucción de un programa sino por las señales que emiten los dispositivos
periféricos para indicarle al procesador que necesitan ser atendidos.
interrupción por software:
también denominadas llamadas al sistema, son aquellas generadas por
un programa mientras este está ejecutándose.
5. Interrupciones en arduino.
El procesador de cualquier Arduino tiene dos tipos de interrupciones,
externas(external) y de cambio de pines(pin change). El Arduino uno cuenta
con solo dos pins de interrupciones externas: INT0 e INT1, y estan asignadas a
los pines 2 y 3.
Estas interrupciones pueden ser puestas a activarse en subidas o bajadas de
señal, o en bajo nivel. Las activaciones son interpretadas por el hardware, y
las interrupciones son muy rápidas.
6. A grandes rasgos, una interrupción es una señal que interrumpe la del activi
dad del procesador. Existen dos formas de activarlas interrupciones:
• Evento interno -> Un cronómetro o señal software
• Evento externo -> Un cambio de estado en un pin
Las interrupciones de los chips AVR (los que usan nuestros arduinos) son “Asín
cronas”, la cual cosa significa que ocurre fuera del flujo normal del program
a, por lo que nos es muy útil a la hora de programar, ya que no tenemos qu
e estar pendiente de cómo estará el estado de dicho pin (si fuese externa)
o del tiempo que queda para que ocurra (si fuese interna), sino que es el la
que nos avisa de cuando ocurre el suceso.
8. En Arduino podemos asociar el código de las interrupciones a través de la
función attachInterrupt (). Las interrupciones o eventos que podemos
asociar a las líneas mediante esta función en el Arduino Mega son las
siguientes:
Parámetros.
Interrupción: el número de la interrupción (int).
Función: la función a la que invocar cuando la interrupción tiene lugar; esta
función no debe tener parámetros ni devolver nada. Esta función es a veces
referenciada como rutina de interrupción de servicio
MODO: define cuando la interrupción debe ser disparada. Hay cuatro
constantes predefinidas como valores válidos
9. LOW: Para disparar la interrupción en cualquier momento que el pin
se encuentre a valor bajo(LOW).
Cuando el nivel lógico de la línea es 0 (LOW)
CHANGE: Para disparar la interrupción en cualquier momento que el
pin cambie de valor.
Cuando el nivel lógico de la línea cambia independientemente de
su estado lógico (CHANGE)
RISING: Para disparar la interrupción cuando el pin pase de valor
bajo (LOW) a alto (HIGH).
Cuando el nivel lógico cambia de 0 a 1 (RISING)
FALLING: Para cuando el pin cambie de valor alto (HIGH) a bajo
(LOW).
Cuando el nivel lógico cambia de 1 a 0 (FALLING)
10. Utilidades de las interrupciones.
*Las interrupciones son útiles para hacer que las cosas sucedan
automáticamente en programas para micro controladores, y
puedan ayudar a resolver problemas de temporización.
*Permitir comunicación sin bloqueos con dispositivos periféricos.
Conmutar tareas diferentes tareas dentro de lo planificado.
Desventajas de las interrupciones.
*El problema de este método es que el código se vuelve
sumamente complejo cuando tenemos que monitorear
muchas cosas.
*Por defecto no hay ningún código asignado para manejar las
interrupciones.