mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wieso wurde SIGNAL(siglabel) durch ISR(verctorname) abgelöst?


Autor: Jürgen Hems (misteret)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :-)

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: roboter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
....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

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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__av...

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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.