brauche hilfe: 2 interrupts auf einem xmega

OP #2414733
Lesenswert?

hi,

ich möchte auf einem xmega-board zwei interrupt auf einem port auslösen.
ein rechtecksignal wird auf pin0 und pin1 angelegt.
bei einer HIGH-flanke soll interrupt0 ausgelöst werden und alle pins des 
port_c auf HIGH setzten. bei einer LOW-flanke soll interrupt1 ausgelöst 
werden und alle pins des port_c auf LOW setzen.

leider wird scheinbar nur ein interrupt ausgelöst, denn port_c bleibt 
durchgehend auf HIGH. Auf die fallende flanke am eingang wird scheinbar 
nicht reagiert.

hier die wichtigsten befehle aus meinem code:

//steigende Flanke
ISR(PORTF_INT0_vect)
{
  PORTC.OUTSET = 0xff;  //Alle Pin des PortC werden HIGH
}

//fallende Flanke
ISR(PORTF_INT1_vect)
{
  PORTC.OUTSET = 0x00;  //Alle Pin des PortC werden LOW
}

int main (void)
{
     PORTF.DIR = 0x00;  //PORTF Eingang
     PORTC.DIR = 0xFF;       //PORTC Ausgang

     sei();
     PMIC.CTRL = PMIC_MEDLVLEN_bm;

// Pullup einschalten | auf steigende Flanke reagieren
     PORTF.PIN0CTRL = PORT_OPC_PULLUP_gc | 1;
// Pullup einschalten | auf fallende Flanke reagieren
     PORTF.PIN1CTRL = PORT_OPC_PULLUP_gc | 2;
// PIN0 des PortF als Quelle für Interrupt0
     PORTF.INT0MASK = 0x01;
// PIN3 des PortF als Quelle für Interrupt1
     PORTF.INT1MASK = 0x02;
PORTF_INTCTRL  = PORT_INT0LVL_MED_gc | PORT_INT1LVL_MED_gc;


return 0;
}


ich sitz da schon ne ganze weile dran aber kann den fehler nicht 
beseitigen. wäre sehr nett, wenn da jemand einen blick drauf werfen 
könnte.

danke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren