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
hat sich erledigt, hab den fehler in der interrupt1-routine gefunden. danke trotzdem, falls sich jemand trotzdem die mühe gemacht hat :)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.