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.