AVR32 AP7000 Interrupt an Pin

Gast #1191853
Hallo,

Ich habe hier einen Ap7000 auf dem NGW100 Board. Ich möchte das ganze 
ohne Linux betreiben.
Um Interrupts zu testen habe nun folgende Anwendung geschrieben.
Wenn an PortE.03 ein interrupt auftritt (Port bekommt von außen high 
Signal) soll PortA.19 auf low gesetzt werden.(Led Leuchtet)

Hier der code:
1
__attribute__((__interrupt__))
2

3
static void do_it_now(void)
4
{
5
  AVR32_PIOA.codr =0x00080000; /* set PA19 to low*/
6
}
7

8
int main(void)
9
{
10

11
  AVR32_PM.PLL0.pllmul = 7; //define pll0 multi.
12
  AVR32_PM.PLL0.pllen = 1; // Enable pll0
13
  AVR32_PM.MCCTRL.pllsel = 1; // define pll0 as main clock
14

15
  AVR32_PIOA.per = 1; /* Set pio enable for PA19  */
16
  AVR32_PIOA.oer = 0x00080000; /* Make them output port */
17
  AVR32_PIOA.pudr =0x00080000; /* disable pull-ups */
18
  AVR32_PIOA.sodr =0x00080000; /* set PA19 to high */
19

20
  AVR32_PIOE.per = 0x00000008; /* Set pio enable for PE03 of PORTE */
21
  AVR32_PIOE.pudr =0x00000008; /* disable pull-ups */
22
  AVR32_PIOE.odr = 0x00000008; // Output disable
23
  AVR32_PIOE.ier = 0x00000008;  // Enable PIOE Interrupt
24

25
  // Disable all interrupts.
26
  Disable_global_interrupt();
27

28
  // Initialize interrupt vectors.
29
  INTC_init_interrupts();
30

31
  INTC_register_interrupt(&do_it_now, AVR32_PIOE_IRQ, AVR32_INTC_INT0);//Register interrupts
32

33

34
  // Enable all interrupts.
35
  Enable_global_interrupt();
36

37
  while (1);
38
  return 0;
39
}

Das Programm wird von Compiler ohne Probleme umgesetzt nur funktioniert
es einfach nicht.(Interrupt wird nicht ausgeführt).

Wer kann helfen?
Wo könnte der Fehler liegen?

Gruß
Pascal
Gast
Hallo,

Hab ich etwas falsch gemacht weil hier keiner antwortet oder hat einfach 
noch niemand einen externen interrupt an einem AVR32 AP7000 
programmiert?

Es gibt zwar ein App Note von Atmel zu dem Thema das ist aber für die 
Tonne, weil das Stand 2006 ist und die GCC AVR32 librarys inzwischen so 
stark verändert wurden das der Code aus dem Beispiel garnicht mehr 
funktioniert.

Naja vieleicht antwortet ja noch jemand oder hat nen Beispielcode in dem 
er externe Interrupts einsetzt.

Gruß
Pascal
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.