FSST - Hardwarenahe Programmierung

Ereignisse

Inhalt

Es werden grundsätzlich 4 Typen von Ereignissen unterschieden:

  • CallEvent: Hier wird von der Klasse eine Operation aufgerufen
  • SignalEvent: zeigt den Empfang eines Signals an, z.B. eine Taste wurde gedrückt.
  • ChangeEvent: überprüft immer ob eine spezifizierte Bedingung eintritt (CheckFlag()) und wenn dies der Fall ist, dann wird ein Zustandsübergang ausgelöst bzw. das Event feuert.
  • TimeEvent: Hier können Zeiten angegeben werden. D.h. nach einer gewissen Zeit (after(ms)) oder zu einem gewissen Zeitpunkt (when(zeitpunkt)) wird ein Zustandsübergang ausgelöst, bzw. das Event feuert.


In der folgenden Abbildung löst das Drücken (besser loslassen - fall) der Taste sw1 am M0-Board einen Interrupt aus und verzweigt in die ISR fall() wo die Variable pressed auf true gesetzt wird. Wird die Funktion CheckFlag() aus der State-Funktion aufgerufen, so gibt diese true zurück wenn die Taste gedrückt wurde und false, wenn nicht. CheckFlag() muss also in der State-Funktion ständig in der Endlosschleife (while(true)) abgefragt werden (siehe Zustandsübergänge):

/media/uploads/fpucher/stm_event.jpg

Zustandsdiagramm


All wikipages