Kommunikation

Die Masterstation soll (in Zukunft) mit mehreren Mess-Stationen (Slaves) kommunizieren können.

Blockdiagramm

Die Verbindung geschieht über ein dreiadriges Kabel, sodass nur eine Ader für die Datenübertragung zur Verfügung steht (die anderen werden für Betriebsspannung und Masse gebraucht). Die Datenrichtung muss also umgeschaltet werden.

Im Projekt 2010/2011 wurde erst einmal eine Verbindung zwischen dem Master und einer Slave-Station realisiert:

Blockdiagramm

rot: Leitungstreiber

Prinzip: alle Stationen horchen auf ein Kommando.
Der Master addressiert einen Slave.
Nun schaltet der kurzzeitig auf Senden und überträgt seine Daten (beim Master muss natürlich während dieser Zeit auf Empfang geschaltet werden!)

Programm für den Slave:

Blockdiagramm
Blockdiagramm
Blockdiagramm

Wichtig: Hinter dem letzten PRINT muss noch ein wenig gewartet werden bis die Leitung auf Tristate geschaltet wird.
Der Grund ist wahrscheinlich, dass PRINT den Sendepuffer der Reihe nach füllt, aber nicht wartet bis das letzte Zeichen abgeschickt worden ist.
Hier wäre die elegante Lösung, auf das Leeren des Sendepuffers zu warten.

Software-Schnittstelle

Da der Mega16 im Master nur eine serielle Hardware-Schnittstelle zur Verfügung hat, mussten wir eine serielle Software-Schnittstelle programmieren. Dies geschieht mit folgenden zwei Zeilen:

Open "comd.4:9600,8,n,1" For Output As #1
Open "comd.3:9600,8,n,1" For Input As #2

Output ist für das Senden zuständig und Input für das Empfangen, d.h. Output ist gleichgestellt mit TX (Transceive) und Input mir RX (Receive).

Damit man nun auch Senden und Empfangen kann, dienen diese zwei Zeilen:

Print #1, ”*” Input #2, In(i)
Zurück