Gast
#2475687
Hallo
Ich möchte mit einer Taste die an PA1 angeschlossen ist bei
Zustandsänderung ein Interrupt auslösen. In der Interrupt Routine wird
der PA2 getoggelt. Kann mir jemand sagen woran es liegt dass es gar
nicht in die Interrupt Routine rein springt. Ich hab natürlich bereits
bei Google und im Forum nach Beispielen gesucht aber mir Fällt da nichts
auf was ich da fasch mache.
#include <avr32/io.h>
#include "compiler.h"
#include "intc.h"
__attribute__((_interrupt_)) static void GPIO_int_handler(void)
{
AVR32_GPIO.port[0].ovrt |= 0x00000004;
}
int main (void){
int clock = 66;
int clockh = (clock/6) - 1;
AVR32_PM.oscctrl0 = (AVR32_PM.oscctrl0 | 0x00000407);
AVR32_PM.mcctrl = AVR32_PM_OSC0EN_MASK;
while((AVR32_PM.poscsr & AVR32_PM_POSCSR_OSC0RDY_MASK)== 0);
AVR32_PM.pll[0] = 0 << AVR32_PM_PLLOSC_OFFSET |
1 << AVR32_PM_PLLDIV_OFFSET |
clockh << AVR32_PM_PLLMUL_OFFSET |
5 << AVR32_PM_PLLOPT_OFFSET;
AVR32_PM.cksel = 0x00000000;
AVR32_PM.pll[0] |= AVR32_PM_PLLEN_MASK;
while(!(AVR32_PM.poscsr & AVR32_PM_POSCSR_LOCK0_MASK));
AVR32_FLASHC.fcr |= 1 << AVR32_FLASHC_FWS_OFFSET;
AVR32_PM.mcctrl |= 2 << AVR32_PM_MCSEL_OFFSET;
AVR32_GPIO.port[0].oders |= 0x00000004; // PA02 als Ausgang
Definieren
AVR32_GPIO.port[0].iers |= 0x00000002; // Interrupt für PA1
Aktivieren
Disable_global_interrupt();
INTC_init_interrupts();
INTC_register_interrupt(&GPIO_int_handler, AVR32_GPIO_IRQ_0 + 1/8,
AVR32_INTC_INT1;
Enable_global_interrupt();
while(1){}
}