Crossworks - IRQ

Gast #324574
Lesenswert?
• ▲
▼
Hallo in dem Beispiel Code von WinARM wird in der UART lib folgendes
verwendet:

cpsr = disableIRQ();                  // disable global interrupts
U0IER &= ~UIER_ETBEI;                 // disable TX interrupts
restoreIRQ(cpsr);                     // restore global interrupts

Ich verwende Crossworks-ARM aus diversen Gründen. Wie kann ich das mit
Crossworks lösen?

Das Problem ist wenn ich die Funktionen für disableIRQ() etc. von den
Beispielen mit Crossworks verwende funktioniert es nicht.

mfg mathias
Gast #324576
Lesenswert?
• ▲
▼
Was funktioniert denn in welchem Beispiel nicht? Geht das Übersetzen
schon schief oder scheitert das Programm beim Ablaufen lassen? Ist es
nur diese eine Stelle oder lauern im restlichen Code noch unentdeckte
Fallen? Auf welchem ARM-Prozessor probierst du das aus?
Gast #324577
Lesenswert?
• ▲
▼
Hallo auf dem LPC2138 zur Zeit habe mir aber noch eine LPC2148 bestellt.
Weil der angeblich weniger Bugs hat.

Das Problem ist das ich bei Crossworks gar keine solche Funktionen
habe.

Nein das Übersetzten funktioniert aber dann bleib das Programm beim
beim Interrupt irgendwie irgendwo hängen, kann auch noch nicht genau
sagen wiso, aber anscheinend muss man bei Crossworks noch die
Interrupts aktivieren. Komisch ist aber das beim Timer IRQ Beispiel die
ISR funktioniert.

Das mit den Interrupts ist schon sehr komisch bei den ARM´s

mfg mathias
Gast #324578
Lesenswert?
• ▲
▼
Crossworks nutzt den gnu-Compiler, somit sollten die Funktionen zum
setzen und loeschen des IRQ-Bits im CPSR aus den WinARM-Beispielen auch
damit funktionieren (mittels Inline-Assembler implementiert). Rowley hat
aber dafuer auch eigene Funktionen: vgl. Dokumentation zu __armlib.h.
Habe selbst die Rowley IDE nicht, aber die Dokumenation ist auf den
Rowley-Seiten alles andere als versteckt. Das "angeblich weniger
Bugs" kann man prima selbst anhand der Erratas von den Philips-Seiten
nachvollziehen. Bis auf die spurious-interrupt-Geschichte sind
ARM-Interrupts und VIC nicht "komisch" - halt nur nicht ganz so
simpel wie bei z.B. AVR.

Martin Thomas
Gast #324579
Lesenswert?
• ▲
▼
@ mthomas Danke ja so habe ichs auch gemeint. -:) AVR´s sind wirklich
einfacher.

Das mit den Funktionen stimmt nicht ganz weil eine disableIRQ die was
zurück gibt gibts nicht zumindesten habe ich nichts gefunden.
cpsr = disableIRQ();                  // disable global interrupts

Und auch keine Restore der man was übergeben kann.
restoreIRQ(cpsr);                     // restore global interrupts

Oder habe ich da was übersehen?

mathias

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.