Slotbaer / Slotbaer Projekte (Digital) / ELWMSD / ELWMSD Events
 

Die nachfolgende Beschreibung wurde mit größter Sorgfalt erstellt. Trotzdem erfolgt der Nachbau auf eigene Gefahr und wir übernehmen weder Verantwortung noch Haftung für eventuell entstehende Schäden jedweder Art.

Worum geht's ?

Die Firmware der ELWMSD arbeitet mit einer Eventqueue. Alle Aufgaben, die nicht zeitkritisch sind, werden in eine Liste eingetragen, die dann Eintrag für Eintrag abgearbeitet wird. Die zeitkritischen Aufgaben, wie die das Passieren eines Sensors oder Daten auf der Bahn, lösen Interrupts aus, die so schnell wie möglich abgearbeitet werden und gegebenenfalls einen neuen Eintrag in der Eventqueue anlegen, damit die Daten später weiter verarbeitet werden können.

Die Einträge in der Eventqueue heißen nicht sonderlich überraschend Events.

Events

ELWMSD hat keinen Mangel an Events und alle lassen sich an den Rechner schicken. Welche Events tatsächlich an den Rechner geschickt werden hängt von der Eventmaske in der Konfiguration ab.

Die gesendeten Daten haben immer das gleiche Format. Ein Event wird als Zeile, bestehend aus drei mit Leerschritten getrennten Feldern, übertragen.

Das erste Feld besteht aus nur einem Buchstaben und gibt die Art des Events an.

Das zweite Feld enthält die Eventdaten in Hexadezimaldarstellung. Je zwei Zeichen bilden eine Hexadezimalzahl in MSB Darstellung.

Das dritte Feld ist der Zeitpunkt in ms zu dem der Event eintrat. Der Zeitpunkt wird ebenfalls in Hexadezimaldarstellung übertragen. Es handelt sich dabei um eine 32 Bit Binärzahl aus 8 Hex-Zeichen in MSB Darstellung.

 

H H 4242 00149B84 Heartbeat. Alle 128 ms wird dieser Event erzeugt. Er kann zu Synchronisation der Zeiten von Rechner und ELWMSD verwendet werden. Die Daten sind immer BB
K K 0008 00149150 Keys. Die Schalterstellung von S1 wurde verändert. Das niederwertige Datenbyte beinhaltet die neue Schalterstellung, das höherwertige die vorherige.
C C 0008 00149150 Configuration. Der Modus hat sich geändert. Das niederwertige Datenbyte beinhaltet den neuen Modus, das höherwertige den vorherigen.
M M 8000 00005381 Mode. Das Bahnprotokoll hat sich geändert. Das niederwertige Datenbyte beinhaltet das neue Bahnprotokoll, das höherwertige das vorherige. Ein Wert von 0 steht für Analogbetrieb, 1 für D1xx, 2 für Scalextric, 3 für Ninco, 4 für SCX und 5 für ProX und $80 für unbestimmt.
I I 0080 0007EC19 Input. Der Startampel Eingang hat sich geändert. Das niederwertige Datenbyte beinhaltet den neuen Wert, das höherwertige den vorherigen. Jedes Bit des Wertes steht für einen der Ausgänge. Bit 0 entspricht dem physikalischen Ausgang 0.
O O 04FF 0007ED37 Output. Die Ausgänge werden entsprechend dem Datenwort im niederwertigen Byte gesetzt. Allerdings werden nur die Bits berücksichtigt für die im höherwertigen Byte das Bit gesetzt ist. Jedes Bit der Werte steht für einen der Ausgänge. Bit 0 entspricht dem physikalischen Ausgang 0 usw.. In unserem Beispiel wird der Ausgang Nummer 2 eingeschaltet.
Output Events werden nur für Ausgaben erzeugt, die zeitverzögert erfolgen.
L L 0002 0007ED41 Lights. Die Startampel soll auf die Stufe wechseln, die im niederwertigen Byte angegeben ist. Der Wechsel erfolgt nur, falls die neue Stufe auf die aktuelle Stufe folgt.
S S 0100 0013793E Sensor. Eine Wagendurchfahrt wurde erkannt. Das niederwertige Byte gibt die Fahrzeugnummer an, das höherwetige die Spur. Im Analogmodus geben beide die Spur an.
s s 02808080800000FD 001536EB Scalextric Datenpaket. Das Datenpaket inkl. Prüfsumme, wie vom Bus gelesen.
x x 55FFAAAAF0AAAAAAEE 001536F0 SCX Datenpaket. Das Datenpaket inkl. Prüfsumme, wie vom Bus gelesen.
n n FFD1 0013854E Ninco Datenpaket. Das Datenpaket inkl. Prüfsumme, wie vom Bus gelesen.
d d 07C1 00138574 D1xx Datenpaket. Obwohl die Daten immer in zwei Byte verpackt sind unterscheidet sich die Datenlänge. Die Daten sind rechtsbündig. Das höchstwertigste 1 Bit, ist das Startbit.
p p 07C1 00138742 ProX Datenpaket. Obwohl die Daten immer in zwei Byte verpackt sind unterscheidet sich die Datenlänge. Die Daten sind rechtsbündig. Das höchstwertigste 1 Bit, ist das Startbit.