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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren