Wieso wurde SIGNAL(siglabel) durch ISR(verctorname) abgelöst?

OP #1050029
Hallo,

ja die Frach hab ich ja schon in der Überschrift gestellt:

"Wieso wurde SIGNAL(siglabel) durch ISR(verctorname) abgelöst?"


Muss man diesen Trend denn mitmachen? Gibt es dafür überhaupt eine 
interessante Erklärung?

Habe schon gesucht, aber es steht überall nur, dass SIGNAL veraltet 
ist...wie zum Beispiel im Tutorial. Warum das Ganze Spektakel, steht 
nicht drin.

Weiß es jemand zufällig? Und sagt es mir?

Danke :-)
Gast
SIGNAL ist schlicht und einfach veraltet. Vielleicht hats dem 
Programmierer der Standardbibliothek nimmer gefallen oder er hat 
sonstwie nen Furz quersitzen.
Indem der Programmierer nun nen andren Namen benutzt, anstatt das 
Verhalten von SIGNAL einfach zu ändern, erlaubt er es, bestehenden Code, 
der noch SIGNAL benutzt, fehlerfrei zu übersetzen.

Was stört dich denn an der Änderung?
Und ja: Über kurz oder lang wirst du da nachziehen müssen. Also d.h., du 
musst das nicht, nur kanns nicht schaden, aufm aktuellen Stand zu 
sein... und so oft wird sich das nicht mehr ändern, falls das deine 
Bedenken sind.
Gast
....oder er hat
sonstwie nen Furz quersitzen....

Der ist bestimmt ein Querdenker, kurz vor dem Wahnsinn, also mehr als 
ein harmloser Furz , also Arzt aufsuchen !
Was das mit dem Aktuellen Stand zu tun hat...hmm...?

Aber es gab schon immer solche Neudenker in der EDV.

mfg
Persönliche Seite
Zitat:
Using the suffix _vect is intented to improve portability to other C 
compilers available for the AVR that use a similar naming convention.
/Zitat

Von: 
http://www.it.lth.se/digp/Avr-libc-1.4.3/group__avr__interrupts.html

Für mich sieht es so aus das andere AVR C Compiler ebenfalls mit ISR() 
und vect arbeiten, daher wurde das in avr-libc übernommen...

Und bei Signal steht dort:

Zitat:
This is the same as the ISR macro.

Note:
    Do not use anymore in new code, it will be deprecated in a future 
release.
/Zitat

Bei Makros erzeugen den gleichen Code! Aber irgendwann wird es Signal 
nicht mehr geben
Moderator Persönliche Seite
Der Terminus "signal" als Bezeichnung für einen Interrupt bzw.
Interrupthandler war von vornherein unglücklich, insbesondere da
der Makro INTERRUPT() sehr viele Nutzer dazu verleitet hat, diesen
zur Einleitung einer ISR zu benutzen, was tödlich ist, aber nur
bei ganz wenigen Interrupts so tödlich, dass man es sofort merkt.
Die potenzielle Erzeugung derart schwerwiegender Fehler in den
Applikationen durch eine Fehlbedienung war der wesentliche Grund,
der zu Handlungsbedarf geführt hatte.

Um die Konfusion zu beenden, haben wir daher sowohl SIGNAL als auch
INTERRUPT seinerzeit aus dem Verkehr gezogen und ISR stattdessen
favorisiert.  Damit kann jeder Programmierer sofort etwas anfangen,
da es eher der Terminologie entspricht, die man im embedded
programming gewohnt ist (und es eigentlich auch sehr exakt die
Funktion des folgenden Codeblocks beschreibt).

Die vormalige Funktion von INTERRUPT() ist jetzt eine optionale
Unterfunktion von ISR() geworden (ISR_NOBLOCK). Andere Optionen
("naked" ISRs, ISR aliases) wurden ebenfalls in den ISR-Makro
integriert.

Gleichzeitig damit haben wir die wahllos erfundenen SIG_xxx-Vektor-
namen abgelöst, deren Pflege für neue AVR-Modelle immer aufwändiger
wurde, und haben die Vektornamen stattdessen aus der Bezeichnung im
Datenblatt (genauer: in der XML-Datei) 1:1 abgeleitet, lediglich
unter Ersetzung nicht-C-fähiger Namensteile (wie Leerzeichen) durch
einen Unterstrich.  Angehängt wurde der Suffix _vect, da dieser
auch bei anderen Compilern für den AVR Verwendung findet.  Damit
sinkt der Portierungsaufwand zwischen verschiedenen AVR-Compilern,
wenngleich er nicht Null wird, da die Art und Weise, wie man eine
ISR dem Compiler bekannt macht, notgedrungen zwischen den Compilern
verschieden ist.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.