000
18.01.2014, 19:56 Uhr
Micha
|
Die serielle Schnittstelle - obwohl längst totgesagt - lebt im Hobbybereich und in der Industrie weiter. Im Web gibts jede Menge Informationen zu dem Thema. Trotzdem ist es oft ein Abenteuer, für eine konkrete Verbindung das passende serielle Kabel zu basteln. Früher hab ich manches Mal obskure Pläne für eine passende(?) Beschaltung irgendwo ausgegraben, zusammenbebastelt, ausprobiert. Ohne so recht zu verstehen wieso weshalb warum. Manchmal hat es dann auf Anhieb funktioniert und ich war glücklich. Und manchmal eben nicht. Früher (vor dem Internet) war das Nichtfunktionieren dann meistens das Aus. Wenn man das Prinzip nicht wirklich versteht und nicht die Kenntnisse und die Messtechnik hat um das Problem einzukreisen - dann wirds eben nix.
In neueren Zeiten - seit meinem Einstieg in die Welt der Mikrocontroller - hab ich RS232 zunächst sehr unkompliziert erlebt. Bei diesen Käfern besteht eine bidirektionale serielle Schnittstelle meist nur aus den minimal erforderlichen Leitungen
GND - Signalbezugsmasse TxD - Transmit Data, die Sendeleitung RxD - Receive Data, die Empfangsleitung
Ich glaub hier ist DER Anfängerfehler dass man vergisst, GND zwischen beiden Teilnehmern zu verbinden. Ansonsten müssen nur TxD und RxD zwischen beiden Teilnehmern überkreuzt verbunden werden - ist eigentlich offensichtlich und logisch? Ebenso ist es trivial dass beide Teilnehmer die gleichen Übertragungsparameter einstellen müssen, damit die Verbindung funktioniert. Mit Mikrocontrollersystemen und seriellen Leitungen hab ich praktisch nie Probleme erlebt. Die Systeme sind meistens so flott, dass Übertragungen selbst bis zu 115200 Baud stabil funktionieren ohne irgendwie rumzuzicken. Will man nur in einer Richtung Daten übertragen, braucht es entsprechend sogar nur zwei Drähte. Komischerweise funktionieren solche Verbindungen sogar manchmal (zumindest zeitweise) wenn man vergessen hat GND der beiden Teilnehmer zu verdrahten...
Ganz anders sieht es oft aus, wenn man alte Computer per serieller Leitung verbinden möchte. Diese System sind langsam, haben Besonderheiten in Form der verwendeten Peripheriebausteine, der Firmware, der konkreten Anwendersoftware. Die Pinbelegungen der verschiedenen Stecker findet man im Web, ebenso Signalbeschreibungen. Aber das Gesamtbild, wie ein Kabel für eine konkrete Anwendung beschaltet werden müsste, bleibt oft nebulös. Mir war die Problematik letztes Jahr zum ersten Mal mit einem Z80 System untergekommen. Minimale Dreileiterverbindung, wie ich sie von weiter oben kannte. Eigentlich alles fein und schick aber das Ergebnis: Nix! Nothing! Nitschewo! Bis ich mehr zufällig herausbekam dass die SIO des Z80 Systems nichts sendet, bevor deren /CTS Signaleingang nicht auf Masse gezogen wird. Also war an der Stelle Schluss mit der minimalen Beschaltung. Ist sicher auch eine Glaubensfrage, ob so ein Problem im "Hinterland" des Computers per Pull-Down Widerstand gelöst oder unbehandelt direkt zur seriellen Schnittstelle durchgereicht wird.
Die beiden Handshake-Leitungen, die für die laufende Übertragung von Daten zuständing sind:
RTS - Request to Send, Ausgang, signalisiert dem Partner "ich bin bereit zum Datenempfang" CTS - Clear to Send, Eingang, Signal dass der Partner bereit zum Empfang von Daten ist.
Entweder werden diese Signale über Kreuz verbunden um echte Signale zu übertragen, oder am jeweiligen Ende gebrückt, um passende Signale zu simulieren. Der zweite Fall ist eine Notlösung - wenn wie oben erwähnt z.B. die SIO ein entsprechend definiertes /CTS Signal benötigt, der Kommunikationspartner dieses aber nicht bereitstellt - oder wenn man ganz sicher ist das niemals keine Timing-Probleme nicht zu erwarten sind ;-)
Die restlichen drei hier zu besprechenden Signale: DSR, DTR, DCD stammen *eigentlich* aus der Welt der Computer-Modem Verbindung. Ursprünglich waren diese Signale so gedacht: Der Computer sendet das Signal DTR zum Modem um abzufragen, ob das Gerät bereit ist. Wenn vom Modem DSR zurückkommt (eigentlich nur das im Einschaltzustand durchgeschleifte DTR) ist das Modem bereit. Zusätzlich gibt es vom Modem noch das Signal DCD aka "Carrier Detect" zum Computer. Das sagt dem Computer, dass die Datenleitung vom Modem in die große weite Welt offen ist. Bei Computer-zu-Computer Verbindungen (Nullmodemkabel...) haben die Signale DSR, DTR, DCD nur noch bedingt einen Sinn. Die einfachste Lösung besteht darin, am jeweiligen Ende den Ausgang DTR mit den beiden Eingängen DSR und DCD zu brücken. Dann ist im Zweifelsfall immer alles fein und in Ordnung. Die etwas seriösere Lösung besteht darin, DTR und DSR der Partner über Kreuz zu verbinden und am jeweiligen Ende DTR mit DCD zu brücken.
Leider wird die hier mühsehlig aufgedröselte Logik komplett über den Haufen geworfen, wenn Hardwarehersteller wie Epson bei ihren seriellen Druckern die DSR/DTR Leitungen für das Ablaufprotokoll missbrauchen oder wenn ein Terminalprogramm für den PC1715 ähnliches tut. Die serielle Schnittstelle bleibt also im konkreten Fall ein Minenfeld. Ich hab heute mal angefangen einen schon ewig beabsichtigten Plan umzusetzen, nämlich ein Steckerbrett in eine voll beschaltete serielle Leitung zu setzten. Hat leider so wie auf dem Foto zu sehen den Nachteil dass die Steckkontakte nicht zug-entlastet sind. Vielleicht hat ja jemand hier schon mal was besseres erfunden?
|