www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Crossworks - IRQ


Autor: mathias giacomuzzi (Gast)
Datum:

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

Autor: mgiaco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keiner der mir helfen kann?

Autor: Stefan (Gast)
Datum:

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

Autor: mgiaco (Gast)
Datum:

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

Autor: mthomas (Gast)
Datum:

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

Autor: mgiaco (Gast)
Datum:

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

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.