Forum: Mikrocontroller und Digitale Elektronik AT91 SAM9 - Global Interrupt Enable?


von Olibats (Gast)


Lesenswert?

Hey,

Sagt mal, ich hab hier einen Sam9, der keine Interrupts aufruft.
Ich habe schon ein Beispiel von Atmel runtergeladen aber das versagt 
auch. Die Interrupt Service Routinen werden einfach nicht angesprungen.
Die einzelnen Interrupts (AIC, Timer,...) wurden initialisiert. Gibt es 
nicht sowas wie einen Globalen Interrupt An/Aus?
Beim AtMegaX ist das ja immer cli() und sei().

Danke!
Olibats

von Dominic R. (dominic)


Lesenswert?

Der ARM Core selbst hat im CPSR zwei Bits, um IRQ und FIQ zu disablen. 
Diese Bits sind nach einem Reset gesetzt - wenn du sie nicht löschst, 
bleiben Interrupts also disabled.
Im Atmel Beispiel sollte das allerdings korrekt sein.

Gruss,

Dominic

von Olibats (Gast)


Lesenswert?

Hm, dieses Register kommt nirgends im Source vor. Und ich finde auch nix 
in der Doku darüber.

O.o Kann das am Board liegen?
Ich verwende das AT91SAM9263-EK Evaluation Board und versuche heute 
schon den ganzen Tag das "Getting Started" Beispiel gestartet zu getten 
;)

Oder vielleicht kann es daran liegen, dass dieser PIO auf B statt auf A 
steht? Wenn ich die LEDs direkt anspreche kann ich Licht machen, also 
eher nicht?

ratlos
Olibats

von Dominic R. (dominic)


Lesenswert?

Das ist kein "Register" im Sinn von Peripheral Register, sondern ein 
Core-Register, genauso wie r0-r15. CPSR steht für current program status 
register (es gibt auch SPSR, saved program status register), und wird 
via MRS/MSR angesprochen. Näheres dazu findest du im ARM ARM (DDI0100E, 
u.a. auf arm.com zu finden).

Gruß,

Dominic

von Olibats (Gast)


Lesenswert?

Oke, ich habs nun hinbekommen. Danke, waren die entscheidenden hinweise.

ich hab einfach das hier eingefügt und es ging:

  mrs  r0, cpsr
  and  r0, r0, #~0x00000080
  msr  cpsr, r0

löscht das I-bit und aktiviert damit IRQs.
Der FIQ liegt bei 0x00000040 (glaub ich)

Nochmal danke
Olibats

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.