Forum: Mikrocontroller und Digitale Elektronik AT91SAM7S64: FIQ als externer Interrupt


von Johannes (Gast)


Lesenswert?

Hallo,

ich möchte einen Interrupt bekommen, wenn ein USB-Kabel eingesteckt 
wird. Dazu habe ich einen Spannungsteiler: Ganz oben die 5V von USB, 
Mittenabgriff geht an PA19 (FIQ). Wenn kein USB angeschlossen ist, ist 
PA19 LOW, wenn 5V vom USB anliegen, dann ist PA19 HIGH. Und dies möchte 
ich mit dem FIQ mitgeteilt bekommen.

Mein bisheriger Code ist:
1
AT91C_BASE_PIOA->PIO_PPUDR = USB_SELECT; // intern Pullup disable
2
3
AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_FIQ, FIQ_INTERRUPT_LEVEL, AT91C_AIC_SRCTYPE_POSITIVE_EDGE, FIQ_handler_usb_conn);
4
5
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_FIQ);

So, und wie man sich bestimmt denken kann, funktioniert es nicht (sonst 
hätte ich das Ganze ja nicht in das Forum geschrieben). Wenn ich ein 
USB-Kabel anschließe bekomme ich den Interrupt nicht, obwohl eindeutig 
HIGH am Kontroller anliegt.

Irgendwelche Tipps?

Schönen Gruß,
Johannes

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

FIQ auf Core-Level freigegeben (FIQ-Bit im CPSR des verwendeten 
Ausführungsmodus nicht gesetzt)? Wenn richtig erinnert, ist das in den 
Beispielen von Atmel gesetzt und damit FIQ deaktiviert. FIQ-Handler 
implementieren falls nicht vorhanden, evtl. über Assembler-Wrapper.

von Johannes (Gast)


Lesenswert?

Respekt!
Mit der Ferndiagnose genau ins Schwarze getroffen.

Vielen Dank,
Johannes

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
Noch kein Account? Hier anmelden.