Forum: Compiler & IDEs Schreibweise von ISR oder SIGNAL


von Besucher (Gast)


Lesenswert?

Hi,
ich versuche mich gerade in GCC und verstehe nicht genau den Unterschied 
zwischen der Schreibweise ISR (TIMER0_OVF_vect) und INTERRUPT oder 
SIGNAL (SIG_OVERFLOW0). Beide Ausdrücke zeigen doch auf _VECTOR(9) und 
sollten somit identisch sein?

von Uwe .. (uwegw)


Lesenswert?

SIGNAL(SIG_xxx) ist veraltet und wird nur noch aus 
Kompatibilitätsgründen angeboten. Die aktuelle Version ist 
ISR(xxx_vect).

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

INNTERRUPT und SIGNAL sind veraltet (aber ich nutze sie auch noch ;-))

SIGNAL ist eine ununterbrechbare ISR, während bei INTERRUPT zu Anfang 
der ISR vom Compiler ein SEI ausgegeben wird um IRQs kaskadieren zu 
können.

Dieses SEI steht früher im Code als bei
1
SIGNAL (...)
2
{
3
    sei();
4
}

weil es vor dem ISR-Prolog ausgegeben wird und nicht danach .

Ein abschliessendes CLI ist nicht notwendig, weil das I-Flag durch RETI 
wieder aktiviert wird. Ausser natürlich die ISR ist NAKED.

von Besucher (Gast)


Lesenswert?

Hallo,
ich werde mich wohl aktualisieren müssen. Ich arbeite noch mit der 
ersten Ausgabe von Prof. Günter Schmitt!
Schönen Dank für die Hinweise!

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.