www.mikrocontroller.net

Forum: Compiler & IDEs Statemachines


Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab jetzt mal nen komplexen Interrupthandler gebastelt.

Dabei habe ich 3 Sachen festgestellt:

1.
"default:" muß garnicht am Ende stehen

2.
Cases können auch innerhalb von if-Zweigen stehen, d.h. der Zweig wird
von einem Case nur unter einer Bedingung, vom anderen aber unbedingt
ausgeführt.

3.
Wenn man die Cases hübsch nacheinander plaziert, versucht der Compiler
das mit ner Sprungtabelle zu machen, muß dann aber auch noch die
Pointerregister pushen und poppen.

Wenn man aber Lücken läßt, merkt er, daß die Sprungtabelle zu groß wird
und machts mit Compare, was in meinem Fall kürzeren und weniger Code
erzeugte.


Auf die Idee zu 1. und 2. bin ich gekommen, weil ich mir vorher auf
Papier einen Plan gemacht hatte und dabei in andere States reinspringen
mußte.

Ich wollte aber kein goto verwenden und den Code auch nicht doppelt
schreiben (solchen Code vergißt man ja regelmäßig bei Änderungen).


Es ergibt sich quasi eine States-Schleife, die irgendwo in der Mitte
endet und dort steht dann auch der default-Fall.


Peter

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

Bewertung
0 lesenswert
nicht lesenswert
Ja, klar.  Im Prinzip alles bekannt. ;-)

Gugele mal nach "Duff's device" und staune. :-)

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.