miércoles, 12 de octubre de 2011

Ejemplo de Interrupciones



En el archivo que les vinculo abajo hay un provecto en Eclipse basado en el código de Matías Anún para usar interrupciones.
Ejemplo de Interrupciones
URL: https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B3-4Ewxut6n3NzRmZTZmNDEtYWJjMy00MzQzLTk3MzQtYjc4ZjYzNWViYjlk&hl=en_US


Hagan clic en "Más información »"!!!



El programa deben importarlo en Eclipse como "Existing Projetcs into Workspace"


Y luego tienen que poner "Select archive file":


Con eso habrán insertado el proyecto.


No tienen la estructura de carpetas como la que están acostumbrados a ver, pero ustedes concéntrense en el main.c y en como define las interrupciones.
Sobretodo fíjense como define la función de interrupción usando
__attribute__ ((interrupt("IRQ")));


También noten que lo único que hace es invertir la variable "flag" para que parpadee o no el led. La idea es que aprendan a como representar las funciones de interrupciones y cargar los vectores de servicio de interrupción en C.


La línea 
   VICVectAddr0=(unsigned) EINT0_interrupt;
Lo que hace es cargar en    VICVectAddr0 la posición de la función   EINT0_interrupt para que el programa salte a dicha posición cuando ese VIC Vector es apuntado.


En los archivos armVIC.c y armVIC.h están las funciones para habilitar y deshablitar las interrupciones (algunas de ellas están en assembler para poder camiar el registro cpsr).


Por supuesto, para entender que es todo ésto les recomiendo que lean el ebook en PDF "ARM7 Insider Guide" 
Sin haber leído la parte de interrupciones (sobretodo la que está explicada en GCC, al final del libro) no van a poder entender el ejemplo.

No hay comentarios:

Publicar un comentario