Você está na página 1de 6

INTERRUPCIONES

Galileo es una tarjeta electrnica, basada en un microcontrolador Intel Quark SoC X1000
que bien podra considerarse un sistema Pentium de 32 bits, compactado todo en un chip.
Lo mejor es que la arquitectura de este chip es compatible con los shields para Arduino
(versin Uno R3), a nivel pin a pin.
Qu es una interrupcin?
Una interrupcin es un mecanismo que permite ejecutar un bloque de instrucciones
interrumpiendo la ejecucin de un programa, y luego restablecer la ejecucin del mismo
sin afectarlo directamente. De este modo un programa puede ser interrumpido
temporalmente para atender alguna necesidad urgente del computador y luego continuar
su ejecucin como si nada hubiera pasado.
Ya que un procesador no puede procesar simultneamente varios trozos de informacin
(procesa un trozo de informacin por vez), un programa que est siendo ejecutado puede,
gracias al pedido de interrupcin, ser momentneamente suspendido mientras se produce
una interrupcin. El programa interrumpido puede continuar ejecutndose luego. Existen
256 direcciones de interrupcin diferentes.
Una interrupcin se convierte en una interrupcin de hardware cuando es solicitada por
uno de los componentes de hardware del equipo. En efecto, existen varios perifricos en
un equipo. Estos perifricos necesitan generalmente utilizar los recursos del sistema
aunque slo sea para comunicarse con el sistema mismo.
Tipos de interrupciones

Interrupcin interna de hardware

Son generadas por ciertos eventos que surgen durante la ejecucin de un programa.
Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible
modificarlas.
Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj
interno de la computadora, el hardware hace el llamado a esta interrupcin varias veces
durante un segundo para mantener la hora actualizada.

Interrupcin externa de hardware

Las interrupciones externas las generan los dispositivos perifricos, como pueden ser:
teclado, impresoras, tarjetas de comunicaciones, etc. Tambin son generadas por los
coprocesadores.
No es posible desactivar a las interrupciones externas.
Estas interrupciones no son enviadas directamente a la UCP, sino que se mandan a un
circuito integrado cuya funcin es exclusivamente manejar este tipo de interrupciones.

Interrupciones de software

Pueden ser activadas directamente por el ensamblador invocando al nmero de


interrupcin deseada con la instruccin INT.
El uso de las interrupciones nos ayuda en la creacin de programas, utilizndolas
nuestros programas son ms cortos, es ms fcil entenderlos y usualmente tienen un
mejor desempeo debido en gran parte a su menor tamao.
Este tipo de interrupciones podemos separarlas en dos categoras: las interrupciones del
sistema operativo DOS y las interrupciones del BIOS.
Para Qu Sirven Las Interrupciones?
Para detectar cambios como un pulsador que ha sido presionado.
Para determinar cundo se ha terminado de gestionar la memoria EEPROM o Flash.
A modo de despertador del controlador. Esta es una interesantsima funcionalidad de tu
placa que te permite mantener el consumo al mnimo dejando en standby hasta que
suceda algn evento. Con ello podrs hacer que tus bateras duren mucho ms.
Como el complemento ideal a los mdulos digitales de sonido, temperatura que
disponen de un potencimetro que regula cundo se activa la salida digital. As puedes,
por ejemplo, realizar un montaje simple en el que ocurra alguna accin cuando se supere
un cierto umbral de sonido o una cierta distancia.
Ventajas
Utilizando las interrupciones puedes tener tu cdigo ejecutando las instrucciones que
sean y, slo cuando esa interrupcin se active, tu programa se va al cdigo que has
asociado a esa interrupcin, lo ejecuta y luego vuelve a donde estaba (a la parte del
cdigo que estaba ejecutando cuando se activ la interrupcin).
Seales de interrupcin
Las seales de interrupcin son las siguientes:

cli (): desactiva las interrupciones globales

sei(): activa las interrupciones

Esto afectar al temporizador y a la comunicacin serial. La funcin


delayMicroseconds() desactiva las interrupciones cuando se ejecuta.
Las interrupciones son acontecimientos que provocan la desviacin del flujo de control de
la CPU, que abandona el programa principal y pasa a ejecutar una rutina que atiende la
causa que la ha originado.
Para manejar las interrupciones los dsPIC30F disponen de una tabla de vectores de
interrupcin llamada IVT. La tabla IVT tiene 62 entradas distintas, es decir, 62 vectores
para atender cada una de las interrupciones. La IVT reside en la memoria del programa
comenzando en la direccin 00000004 H. los 8 primeros vectores (0-7) de la IVT estn
reservados para interrupciones no mascarables, los 54 restantes (8-62) para
interrupciones mascarables.

El tratamiento de las interrupciones lo lleva una rutina de servicio de interrupcin, ISR que
se pone en marcha cuando la CPU atiende una interrupcin
Las interrupciones admiten 16 niveles de prioridad, del nivel 0 al 15. Para poder inicializar
el proceso la causa o fuente que llama a la CPU debe tener un nivel de prioridad mayor
que el de la CPU. Inicialmente el nivel de la CPU ser el ms bajo de todos, el nivel 0.
Los 16 niveles se dividen en dos grupos:
Del 0 al 7: interrupciones externas (perifricos). La CPU tiene uno de estos niveles.
Del 8 al nivel 15: excepciones internas, no mascarables, que se tienen que atender en el
momento que se producen.
Todas las interrupciones se pueden deshabilitar poniendo los bits de IPL=111, con lo se
deshabilitaran las interrupciones externas. El bit IPL3 nos indica si son mascarables o no.
Cada interrupcin externa es asignada a uno de los 7 niveles de prioridad por el usuario
estas prioridades empiezan en el nivel 1(nivel ms bajo) y acaban en el 7 (nivel ms alto).
El motivo de haber dos formas de asignar niveles de prioridad se debe a que el usuario
puede asignar a distintas fuentes de interrupciones niveles de prioridad iguales; cuando
estas interrupciones se produzcan, en el mismo instante, la CPU no sabr a cual atender,
y entonces estn en juego las prioridades naturales; en este caso se atender la que
mayor prioridad natural posee. La prioridad natural viene dada por el orden de colocacin
dentro de la tabla de vectores de interrupciones, cuando menor sea el nmero de vector
mayor prioridad tendr.
Interrupciones (Triggers)
mraa_gpio_edge_t
Tipo de dato para definir si la interrupcin se activa con el flanco de subida, baja o con
ambos
mraa_gpio_isr (mraa_gpio_context, mraa_gpio_edge_t, void(*fptr)(void *), void *args)
Asigna al puerto digital una rutina para ejecutarla cuando se active la interrupcin
mraa_result_t mraa_gpio_isr_exit (mraa_gpio_context)
Elimina la rutina asignada al puerto, para que no quede la funcionalidad asignada
Interrupciones (Triggers) (ejemplo de aplicacin)

Uso de interrupciones con galileo

Ejemplo Integrador