AT91SAM7 interrupt wird nicht ausgeloest, warum?

Gast #337440
Lesenswert?

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.
Gast #337443
Lesenswert?

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?).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren