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