Das eBook Angewandte Mikroelektronik wurde von Hans Lohninger zur Unterstützung verschiedener Lehrveranstaltungen geschrieben. Weitere Informationen finden sie hier.


Experiment: Protokoll einer seriellen Schnittstelle

Im folgenden Experiment soll das Protokoll eines seriellen Datenstromes geändert werden. Es werden beide Schnittstellen der Platine SERPAR verwendet und es darf sowohl der ankommende Datenstrom als auch der abgesendete Datenstrom ein beliebiges, über DIP-Switches einstellbares Protokoll aufweisen. Um das entsprechende Programm aber nicht zu kompliziert werden zu lassen, wird der Datenstrom nur in eine Richtung übertragen (von DART-B auf DART-A).

Das Protokoll der beiden Schnittstellen wird mit dem auf der Platine uP1 enthaltenen DIP-Switch eingestellt. Schalter eins wird zur Auswahl der einzustellenden Schnittstelle verwendet: OFF = DART-A, ON = DART-B. Der Datenstrom kann außerdem durch einen LOW-Pegel an Bit 0 vom Eingang PIN angehalten werden.

Bei diesem Experiment tritt ein kleines Problem auf, wenn die Baudrate des Senders größer als die Baudrate des Empfängers ist. In diesem Fall werden vom Mikrocomputer uP1 mehr Zeichen empfangen als abgesendet werden können, und der interne Empfangspuffer wird immer voller und droht überzulaufen. Um dem abzuhelfen, ist es unbedingt notwendig, dass die Handshake-Leitungen (zumindest von DART-B) korrekt verdrahtet sind.

Empfang von Zeichen auf der seriellen Schnittstelle

Die Abbildung zeigt die Versuchsanordnung bei Verwendung eines Personalcomputers als Datensender und eines Terminals als Datenempfänger. Der Leser kann z.B. das Terminal (DART-A) auf 1200 Baud einstellen und den Personalcomputer auf 9600 Baud. Wenn alles richtig verdrahtet ist, wird der Datenstrom des Personalcomputers periodisch angehalten. Wichtig ist, dass am Personalcomputer zum Senden der Daten ein Programm verwendet wird, dass die Handshake-Leitungen auch benutzt, sonst wird es immer zu einem Überlauf des Puffers und damit zu Übertragungsfehlern kommen.

Das im IBM-PC-Bereich oft verwendete Kommunikationsprogramm KERMIT ist für dieses Experiment nicht geeignet, da es Hardware-Handshaking nicht unterstützt. Falls die Versuchsanordnung entsprechend Abbildung verwendet wird, sendet man am besten ein langes Textfile mit folgenden Kommandos an den Protokoll-Umsetzer:

L 10,R 79
MODE COM1:9600,N,8,1,-
MODE LPT1:=COM1:
^P
TYPE filename.ext

Durch diese Befehle wird die Schnittstelle auf 9600 Baud eingestellt, der Druckerkanal auf die Schnittstelle gelegt und dann mit ^P alle Zeichen, die auf den Bildschirm ausgegeben werden, auch auf den Druckerkanal (COM1) gesendet. Mit 'TYPE filename.ext' wird eine Datei nun sowohl am Bildschirm als auch am Druckerkanal gesendet.

;===================================================
;---- Experiment: Protokoll-Umsetzung --------------
;===================================================
;
            .GLOBAL PROTOC
PROTOC:     IN      A,(DIPSW)   ;DIP-switch geändert ?
            LD      HL,DSWIMG
            CP      (HL)
            JR      Z,$1
            LD      (HL),A
            BIT     0,A         ;DART-A oder DART-B
            CALL    NZ,SETPDB
            CALL    Z,SETPDA
$1:         IN      A,(PIN)     ;Datenfluss stoppen ?
            BIT     0,A
            JR      Z,PROTOC    ;ja
            CALL    RDV24B      ;Zeichen von DART-B
            JR      C,PROTOC    ;kein Zeichen
$2:         CALL    WRV24A      ;Zeichen senden (DART-A)
            JR      C,$2        ;warten, wenn Puffer
            JR      PROTOC      ;  voll, nächste Runde
;
            .DATA
DSWIMG:     DEFB    0           ;DIP-Switch Stellung
            .CODE

Das Programm dieses Protokoll-Umsetzers ist sehr einfach. Zuerst wird der DIP-Switch der Platine uP1 gelesen und wenn sich die Schalterstellung geändert hat das Protokoll der ausgewählten Schnittstelle geändert. Im nächsten Schritt wird abgefragt, ob der Datenfluss gestoppt ist (Bit 0 von PIN). Falls der Datenfluss nicht gestoppt ist, wird versucht ein Zeichen von DART-B zu lesen und - falls ein Zeichen vorhanden ist - dieses auf DART-A zu senden. Der Handshake-Vorgang wird durch die Treiber der Schnittstellen vorgenommen, der Anwender braucht daran keine Zeit zu verschwenden.


Last Update: 2008-05-31