AT91SAM9260 - ISR, aber wann?

Gast #1702548
Lesenswert?
• ▲
▼
Guten Morgen Forum,

ich verwende das SEGGER embOS auf einem AT91SAM9260 (ARM9 von Atmel).
In der Applikation verwende ich ein ASSERT Makro welches mir u.a. eine 
Fehlermeldung auf die stdout schreibt (mit printf).

Nun habe ich das Problem dass innerhalb einer ISR kein printf möglich 
ist.
Schlägt nun eine Assertion zu, "raucht die Applikation ab" (bzw. landet 
im embOS Error Handler).

Das möchte ich verhindern indem ich ASSERT (den Teil mit der stdout) wie 
folgt implementiere:
1
if(!isInISR())
2
{
3
   printf("Assertion failed");
4
}

Nun zu meiner eigentlichen Frage:
Wie finde ich heraus ob ich mich gerade im Interruptkontext befinde? Wie 
implementiere ich isInIsr()?

Im Compilermanual habe ich dazu leider noch nichts gefunden. Ich 
verwende überigens die IAR Toolchain.

Ich freue mich auf eure Antworten.
Gast #1703409
Lesenswert?
• ▲
▼
Ja das ist ne gute Idee :-)

Allerdings hab ich ne PowerPac Lizenz von IAR, was nichts anderes ist 
als embOS.

Und der PowerPac Support von IAR ist mehr als dürftig... Drum hab ichs 
erstmal auf diese Weise probiert.

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.