Hallo, ich habe eine Frage zu einem Diagramm für eine state machine. Eine ISR wird alle 30ms ausgelöst und ein Taster wird abgefragt. Bei einem langen Tastendruck soll LED1 toggeln Bei einem kurzen Tastendruck soll LED2 toggeln Ist das Diagramm so wie ich es gezeichnet habe korrekt?
Gast
#3097846
Was du da gezeichnet hast ist ein Flußdiagram und keine Statemachine.
Das ist kein statemachine Diagramm sondern ein Flußdiagramm, das ist was anderes. Die erste Frage müsste eher lauten "Wurde ein Taster losgelassen?".
Gast
#3097850
Ich finde - nein. FlagLang FlagKurz muessen irgendwo wieder zurückgesetzt werden. Sonst flackern die LED's nur so vor sich hin. Und den Rest hat MAC und Falk schon geschrieben. z.B. -> Wo geht Dein Automati z.B. nach "Flag kurz setzen" oder "Led 1 On" als nächstes hin ?
Gast
#3097853
Hinter "Start ISR alle 32ms" darf es nicht heißen "Wurde eine Taste gedrückt?". Wenn die Taste inzwischen wieder losgelassen wurde, läßt sich das nämlich gar nicht feststellen. Sonst müßte der Tastendruck einen Interrupt auslösen. An der Stelle läßt sich also nur die Frage "Ist eine Taste gedrückt?" beantworten.
Ist es eigentlich so schwer seinem Thread eine sinnvolle, auf das eigentliche Thema weisende Überschrift zu geben? Offensichtlich schon Angenervt Udo
Gast
#3097861
Eine state machine besteht aus Zuständen, die man z.B. durch Kreise symbolisiert, in die man diese dann hineinschreibt. Der Übergang zwischen Zuständen, die transitions, werden durch Pfeile symbolisiert, die Bedingung für den Zustandswechsel ordnet man dann dem jeweiligen Pfeil zu. Was du gezeichnet hast, ist tatsächlich eher ein Flussdiagramm, dass in dieser Form auch nicht besonders leicht lesbar ist. Such hier in der Artikelübersicht mal nach State Machines oder Zustandsautomaten, da wird das schön anhang einer Ampelsteuerung erklärt. Es gibt eine etwas andere Notation, wenn man nach UML arbeitet, wird gerne bei komplexeren meist objektorientierten Ansätzen genommen. Ist für deinen Fall aber sicher nicht nötig, also, hier suchen und neu anfangen.
Thomas schrieb: > Hinter "Start ISR alle 32ms" darf es nicht heißen "Wurde eine Taste > gedrückt?". Wenn die Taste inzwischen wieder losgelassen wurde, läßt > sich das nämlich gar nicht feststellen. Sonst müßte der Tastendruck > einen Interrupt auslösen. An der Stelle läßt sich also nur die Frage > "Ist eine Taste gedrückt?" beantworten. Langsam. Wenn das zb auf den Tastenroutinen vom PeDa beruht, dann geht das durchaus. Ansonsten ist natürlich der ganze Kreis "war es ein langer Tastendruck" recht sinnfrei. Denn genau da besteht ja die Problemtik am ganzen. Die PeDa Routinen erledigen das. Allerdings hat er nicht gesagt ob er da was benutzt, oder ob er selber die Tasten auswertet.
Also der Code dazu sieht so aus:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
