Hallo, ich habe ein kleines Program auf AT91SAM7S64, in dem PIT und TC2 timers laufen. Bei PIT oder TC2 Compare Events soll je ein Interrupt ausloest werden. PIT (source 1)und TC2(source 14) werden als Interrupt Sources mit den gleichen Einstellungen eingeschaltet: High Level Sensitive, Priority =0. In den Interrupt Handlern werden Interrupts nicht re-aktiviert. Die Frequenzen, mit denen die beiden Interrupts ausgloest werden sollen, sind ungefaehr gleich. Wenn ich das Program laufen lasse, wird jeder Interrupt nur EINMAL ausgeloest und dann bleibt das Program in der "loop: b loop" Schleife. Wenn ich es unterbreche und AIC Register anschaue, sind die beiden Interrupt Sources pending (AIC_IPR1,14=1) und masked (AIC_IMR1,14=1), aber ausgeloest werden die nicht. Wenn ich aber die Frequenzen relativ einander verstelle, zb 2*F_PIT=F_TC2, laeuft alles OK. Woran kann es liegen? Gruss, R. P.S. Falls weitere Einzelheiten noetig sind, bitte sagt welche, ich werde die entsprechenden Program-Ausschnitte posten.
Schuss ins Blaue: Müssen Interrupts beim SAM7 Interrupt Controller acknowledged werden, wenn der Handler durch ist?
Yep, dachte ich doch, sie müssen. Vorher passiert auf gleicher oder niedrigerer Ebene nichts: "The write of AIC_EOICR is the exit point of the interrupt handling."
Hallo A.K, Danke fuer die Antwort, so endet jeder Interrupt Handler bei mir: @;EXIT------------------------------------------------------------------ -------- ldr r0,=AIC_EOICR str r0,[r0] ldmea sp!,{r0-r12,pc}^ @;---------------------------------------------------------------------- -------- Die Interrupts werden also wohl acknowledged (wie auf Deutsch in diesem Kontext?).
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.