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
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?
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
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
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.