Daten und Kommandos werden über die serielle Schnittstelle ausgetauscht. Die Baudrate ist mit einem Jumper JP1 auf 2400 oder 9600 einstellbar.

Bevorzugt wird 2400 Baud

Jedes Modul hat eine Adresse. Diese ist über DIP-Switches konfigurierbar. Die Adressen sollten im Bereich der lesbaren ASCII-Zeichen gewählt werden, die auch mit einer Tastatur in einem Terminalprogramm eingegeben werden können. Dies erleichtert das Debuggen.

Alle Kommandos bestehen aus 3 Bytes:

1. Byte 2. Byte 3. Byte
Synchronisierbyte
"!" = 33 = 0x21
Adresse Kommando:
  • "i" = sende Modulinfo
  • "s" = sende Daten
  • "r" = Reset des Moduls

Beispiel: Modul 0, sende Daten
"!0s" = 0x21 0x30 0x73 (hex) = 33 48 115

Die Daten werden normalerweise nur auf Kommando geschickt. Für Debuggingzwecke kann aber ein Jumper JP2 gesetzt werden, so dass das Modul seine Daten dauernd (jede Sekunde einmal) überträgt, auch wenn es nicht angefragt wird. JP2 gesetzt: kontinuierlich senden JP2 offen: auf Kommando senden

Die Daten werden in Textform gesendet, durch Tabulatorzeichen (0x09)) getrennt. Am Ende wird "EOD" (= End of Data) und ein Zeilenvorschub gesendet (0x0D 0x0A). Zu Beginn (nach dem Booten des Moduls) wird zusätzlich eine Information über die Daten im Klartext gesendet, sie ist durch Vorsetzen eines "#" als Kommentar gekennzeichnet.

Beispiel:
# Ticks p/hPa Temp/°C
5638 1035 11.2 EOD
5648 1034 11.15 EOD
...

Alle Module haben einen Alive-Ticker, der jede Sekunde inkrementiert wird. So kann man sehen ob ein Modul aktiv ist oder abgestürzt ist.

Die Aktivität wird von einem Watchdog überwacht.

Zur Kontrolle der Übertragung hat jedes Modul einen Steuerausgang WR\ (Write / Receive), den es auf H setzt solange es Daten sendet.

Genauer: Warten 10ms (damit Senden vom Master und Senden vom Messmodul sich nicht überschneiden Treiber auf Senden schalten: Write / Receive = H Daten senden (mit „EOD = End of data” abschliessen) Warten 20ms (bis alles aus dem Sendepuffer rausgeschickt ist) Treiber wieder auf Empfang schalten: Write / Receive = L

Wichtige ASCII-Zeichen:
Dec Hex
'TAB': (ht) 9 0x09
'LF': (nl) 10 0x0a
'CR': (cr) 13 0x0d

Zurück