Forum: Mikrocontroller und Digitale Elektronik QP state machine


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von M.J. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,
hat hier schon jemand mit QP gearbeitet?

Ich benutze es grade und ich brauche eine Funktion die angibt aus 
welcher der letzte State war(vor dem Aktuellen State).
Mit der Info will ich unter anderem entscheiden in welchen State ich 
springen muss.

Kennt jemand die entsprechende Funktion bzw. gibts es sowas QP?

Bsp.

Last_Steate = get_last_state();

if( Last_Steate == B){
wechsle zu state G
}
else{
wechsle zu state Z
}

von Bitflüsterer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Was bedeutet die Abkürzung "QP" hier?

Möglicherweise handelt es sich hier um ein spezielles Problem im 
Zusammenhang mit "QP", aber im allgemeinen, wird ist der Folgezustand 
einer Zustandsmaschine nur vom gegenwärtigen Zustand und den 
Eingangssignalen abhängig. Magst Du einmal erklären, warum Du annimmst, 
dass das in Deinem Fall nicht so sein sollte.?

von Bitflüsterer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Möglicherweise das hier?
http://www.state-machine.com/

von M.J. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das ist QP

http://www.state-machine.com/

Weils einem das Leben erleichtert und im meinem Fall Code Spart.

Bei mir unterscheiden sich check1 & check 2 nur in dem sinne dass sie in 
verschiedene Stati springen.
Wenn ich wüste aus welchen Status die state maschiene kommt bräuchte ich 
nur ein check mit einer if else Anweisung.

von Christopher (Gast)


Bewertung
0 lesenswert
nicht lesenswert
oder du lagerst den check in ein unterprogramm aus und rufst dieses von 
den beiden unterschiedlichen zuständen auf.

von Bitflüsterer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hm. Tja. Du könntest natürlich in Init und makeA eine Variable jeweils 
so setzen, das klar ist, welcher der beiden Zustände aktiv war. Die 
kannst Du dann mit einer Bedingung abfragen.


ABER: Das ist nicht fachgerecht! Ich rate Dir ernsthaft davon ab.

An sich gibt es in einer "fachgerechten" State-Machine auch keinen Grund 
den vorherigen Zustand zu speichern, so daß es sehr wahrscheinlich auch 
garkeine Funktion geben wird, um ihn festzustellen. (Das mag hier anders 
sein, die Funktion sollte dann aber in der Referenz zu QP irgendwie zu 
finden sein. Da kann ich leider keinen Rat geben. Tut mir leid).

Die Codegröße wird sich in beiden Fällen (dem fachgerechten und dem 
"Würgaround" :-) sehr wahrscheinlich nicht wesentlich unterscheiden.

Ein "Erleichterung" ist es meiner Ansicht nach in keinem Fall, weil es 
denn Code schwerer verstehen lässt zumal es von der formal korrekten 
Methode eine solche State-Machine zu implementieren abweicht.

Ist nur meine Meinung. Mache es wie Du denkst.

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.