Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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.
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
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)
Ejemplo Integrador