Uso de interrupciones en el LPC21xx

Cómo configurar las interrupciones en el LPC

1.Establecer las isr para irq y fiq
CW: void irq_handler(void) __attribute__ ((interrupt(“irq”)));
WA: void __attribute__ ((interrupt(“irq”))) irq_handler(void);
Para las fiq solamente cambiar “irq” por “fiq”
Esos nombres son obligatorios

2.Escribir el código de la rutina de la interrupción irq o fiq
void irq_handler(void){ ... }
void fiq_handler(void){ ... }

3.Seleccionar la función alterna al pin con PINSELx

4.Seleccionar si va a ser fiq o irq con VICIntSelect (0: irq, 1: fiq)

5.Habilitar la interrupción con VICIntEnable

6.Escoger la prioridad con VICVectCntlx (x: 0-15, 0 tiene la mayor prioridad)
Para las fiq se recomienda tener sólo una

7.Establecer la dirección de la callback con VICVectAddrx (x:0-15)

8.Escribir el código de la rutina que manejará la interrupción del periférico
void eint0(void){...}
El nombre de esta función es el mismo que se usa en el punto 5

9.Habilitar las interrupciones
CW: __armlib_enableirq();
WA:

10.Repetir del punto 3 al 8 para cada periférico

Comentarios

Entradas populares de este blog

Las rutinas de retardo se escriben en ensamblador

Programación en C para sistemas embebidos