Forum: Mikrocontroller und Digitale Elektronik AT91SAM9260 - ISR, aber wann?


von claus (Gast)


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.

von Tom (Gast)


Lesenswert?

Hallo Claus,

wieso fragst du eigentlich nicht die Segger Leute selber? Und falls du 
nicht im Support bist bzw. gar keine Lizens hast kannst du zumindest in 
derem Forum fragen.

--Tom

von claus (Gast)


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.

von Tom (Gast)


Lesenswert?

Ja, das mit dem IAR Powerpac Support ist ne bekannte Sache aber dafür 
sind die Leute von Segger umso besser. Wie gesagt, schreib den Jungs 
einfach mal ne Email oder schreib in deren Forum.

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.