mikrocontroller.net

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


Autor: Olibats (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dominic R. (dominic)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Olibats (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dominic R. (dominic)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Olibats (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.