|
In fast allen Datenworten befindet sich eine Prüfsumme. Dies sind die Bits 8 bis 11 im semantische Datenwort also die Bits 4 bis 7 im Datenstrom. Im Nachfolgenden werde ich mich ausschließlich auf das semantische Datenwort beziehen.
Das semantische Datenwort wird in 4 Nibble unterteilt. Nibble 0 enthält die Bits 0..3.
Nibble 2 (Bits 8..11) enthält die Prüfsumme. Die Prüfsumme berechnet sich aus $F - Nibble 0 - Nibble 1 - Nibble 3, oder anders ausgedrückt die Summe aller Nibble ergibt 15. Bei den mathematischen Operationen werden die Bits oberhalb des vierten Bits ignoriert.
Die Daten werden zyklisch wiederholt. Ein Zyklus besteht aus drei Datenpaketen.
Ein Datenpaket besteht aus sovielen Datenworten wie Regler angeschlossen sind plus 2. In jedem Datenpaket werden die Informationen für jedes Auto einmal gesendet. Die Autos bzw. Regler werden von 1 an gezählt.
Bei nur einem angeschlossenen Regler beginnt also alle 15 ms ein neues Datenpaket. Das entspricht einer Frequenz von 66,6 Hz. Bei 8 Reglern benötigt ein Datenpaket 50 ms was noch 20 Hz entspricht.
Jedes Datenpaket startet mit dem Datenwort $FFF1 oder $FFD1, danach folgen die Datenworte für die Regler und dann ein Infowort.
Es gibt drei verschiedene Infoworte. In den drei aufeinanderfolgenden Datenpaketen eines Zyklus' wird jede Infowortart einmal gesendet.
Zwei der Infoworte kombiniert ergeben die im Turm anzuzeigende Rundenzahl.
Das dritte Infowort gibt für ein Fahrzeug dessen Position im Feld an. Da dieses Infowort nur in jedem dritten Datenpaket geschickt wird und in jedem dieser Datenpakete die Position eines anderen Fahrzeuges übertragen wird, dauert es 24 Datenpakete, bist die Position eines Fahrzeugs erneut übertragen wird. Bei vier angeschlossenen Reglern wären das 24 * 6 Datenworte. Also alle 0,72 Sekunden.
Startwort: 1 1 1 1 1 1 1 1 1 1 L 1 0 0 0 1
Leitet jedes Datenpaket ein.
| 1 1 1 1 |
Einsen |
| 1 1 1 1 |
Einsen |
| 1 1 |
Einsen |
| L |
Enthält eine 1, wenn das Licht eingeschaltet werden soll, sonst eine 0. |
| 1 |
Eins |
| 0 0 0 1 |
Dezimalwert 1 |
Programmierwort: 0 0 0 0 R3 R2 R1 R0 P3 P2 P1 P0 0 0 0 0
Mit diesem Datenwort werden alle Fahrzeuge auf der Bahn dem angegebenen Regler zugewiesen.
| 0 0 0 0 |
Nullen |
| R3 R2 R1 R0 |
Reglernummer, MSB (1-8) |
| P3 P2 P1 P0 |
Prüfsumme, MSB |
| 0 0 0 0 |
Kennung für das Programmierwort |
Reglerwort: 0 0 L T G3 G2 G1 G0 P3 P2 P1 P0 R3 R2 R1 R0
Das Datenpaket teilt den Autos mit mit welcher Geschwindigkeit sie fahren sollen, ob die Spurwechseltaste am Regler gedrückt sind. Es werden nur die Datenworte für Regler gesendet, die wirklich angeschlossen sind.
| 0 0 |
Nullen |
| L |
Enthält eine 1, wenn das Licht eingeschaltet werden soll, sonst eine 0. |
| T |
Enthält eine 1, wenn die Weichentaste am Regler gedrückt ist, sonst eine 0. |
| G3 G2 G1 G0 |
Geschwindigkeit, MSB (0-15) Bei den Reglern, die ich habe, ist der maximal übertragene Wert allerdings 14. |
| P3 P2 P1 P0 |
Prüfsumme, MSB |
| R3 R2 R1 R0 |
Reglernummer, MSB (1-8) |
Rundenwort1: E3 E2 E1 E0 Z3 Z2 Z1 Z0 P3 P2 P1 P0 1 0 1 0
Im Turm anzuzeigende Runden niedriges Byte.
| E3 E2 E1 E0 |
Anzuzeigende Einerstelle MSB der Wert ist dezimal, reicht also nur von 0 - 9. |
| Z3 Z2 Z1 Z0 |
Anzuzeigende Zehnerstelle MSB der Wert ist dezimal, reicht also nur von 0 - 9. |
| P3 P2 P1 P0 |
Prüfsumme, MSB |
| 1 0 1 0 |
Kennung für dieses Infowort |
Rundenwort2: H3 H2 H1 H0 T3 T2 T1 T0 P3 P2 P1 P0 1 0 1 1
Im Turm anzuzeigende Runden oberes Byte.
| H3 H2 H1 H0 |
Anzuzeigende Hunderterstelle MSB der Wert ist dezimal, reicht also nur von 0 - 9. |
| T3 T2 T1 T0 |
Anzuzeigende Tausenderstelle MSB der Wert ist dezimal, reicht also nur von 0 - 9. |
| P3 P2 P1 P0 |
Prüfsumme, MSB |
| 1 0 1 1 |
Kennung für dieses Infowort |
Positionswort: P3 P2 P1 P0 R3 R2 R1 R0 P3 P2 P1 P0 1 1 0 0
Was auch immer vielleicht rennende Testen.
| P3 P2 P1 P0 |
Position des Fahrzeugs im Rennen. MSB. 1 bedeutet Fahrzeug führt. 2 Fahrzeug ist Zweiter usw. 0 bedeutet Fahrzeug nicht im Rennen. |
| R3 R2 R1 R0 |
Reglernummer, MSB (1-8), für dessen Fahrzeug die Position gilt. |
| P3 P2 P1 P0 |
Prüfsumme, MSB |
| 1 1 0 0 |
Kennung für dieses Infowort |
|