Forum: Mikrocontroller und Digitale Elektronik Crossworks - IRQ


von mathias giacomuzzi (Gast)


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

von mgiaco (Gast)


Lesenswert?

Keiner der mir helfen kann?

von Stefan (Gast)


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?

von mgiaco (Gast)


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

von mthomas (Gast)


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

von mgiaco (Gast)


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

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.