Hallo,
dieser Beitrag ist zwar schon etwas älter, aber vielleicht kann er mit
mittlerweile erlangten Erkenntnissen aufgefrischt werden.
Ich arbeite mich gerade erst ein und hoffe auf hilfreiche Erfahrung. Ich
möchte über einen Pin(EXTINT0) einen Interrupt auslösen.
Mein derzeitiger code führt jedenfalls leider noch nicht zum Erfolg:
1 | __attribute__((__interrupt__)) void INT0_int_handler(void)
|
2 | {
|
3 | AVR32_PIOA.codr = LED; /*LED an*/
|
4 | }
|
5 |
|
6 | int main (void)
|
7 | {
|
8 | AVR32_PIOB.per = 0x02000000; //PIO Enable Register B25 (EXTINT0)
|
9 | AVR32_PIOB.ier = 0x02000000; //Interrupt Enable Register B25(EXTINT0)
|
10 |
|
11 | AVR32_PIOA.sodr = LED; /*LED aus*/
|
12 |
|
13 | //Pointer für EIC erzeugen und darüber Register beschreiben
|
14 | volatile avr32_eic_t *pExtInt = &AVR32_EIC;
|
15 | pExtInt->ier = 1; //Enable IR INT0
|
16 | pExtInt->mode = 0; //Edge triggered INT0
|
17 | pExtInt->edge = 0; //falling Edge INT0
|
18 |
|
19 | Disable_global_interrupt(); // Disable all interrupts.
|
20 | INTC_init_interrupts(); // Initialize interrupt vectors.
|
21 | INTC_register_interrupt(&INT0_int_handler, AVR32_EIC_IRQ_0, AVR32_INTC_INT0);
|
22 | Enable_global_interrupt();
|
23 |
|
24 | return 0;
|
25 | }
|
Enable_global_interrupt führt sogar dazu, dass der µC gar nichts mehr
tut. Was mache ich falsch? Wer hat inzwischen Erfahrung?
Gruß,
Hex