Hallo,
ich habe am Port J eines ATXmega128A1U zwei Interrupts aktiviert.
Beide Interrupts sind mit mittlerer Priorität wie folgt gesetzt:
1 | PORTJ.INTCTRL |= PORT_INT0LVL_MED_gc
|
2 | PORTJ.INTCTRL |= PORT_INT1LVL_MED_gc;
|
Die Interrupts selbst funktionieren wie erwartet und das
INTCTRL-Register ist auch richtig gesetzt. Ich kann aber (innerhalb der
ISR) nicht einen Interrupt allein deaktivieren, ohne dass der zwei
dadurch auch deaktiviert wird.
In der ISR(PORTJ_INT0_vect) habe ich mehrere Dinge versucht, um nur
der 0er Interrupt zu deaktivieren, aber jedes Mal wird der 1er mit
deaktiviert:
1 | PORTJ.INTCTRL = (PORTJ.INTCTRL & ~PORT_INT0LVL_gm);
|
1 | PORTJ.INTCTRL = (PORTJ.INTCTRL & ~PORT_INT0LVL_gm) | PORT_INT1LVL_MED_gc;
|
1 | PORTJ.INTCTRL = (PORTJ.INTCTRL & ~PORT_INT0LVL_gm);
|
2 | PORTJ.INTCTRL |= PORT_INT1LVL_MED_gc;
|
Erst in der Main-While-Schleife kann ich PORT_INT1LVL_MED_gc wieder
erfolgreich "zuschalten".
Kann mir jemand dieses Verhalten erklären?
Danke