Nun, ich nehme an, der verwendete Mikrocontroller hat zwei serielle
Ports, also zwei UARTs, einen für den RS232-Anschluß und einen für
RS485.
Wenn ich mal, ohne den Anspruch auf wissenschaftliche Korrektheit zu
erheben, ein paar Faustregeln und Erkenntnisse aus der Praxis beisteuern
dürfte:
RS485 arbeitet immer halbduplex, d.h. es kann nicht gleichzeitig
gesendet und empfangen werden - sollte man dies versuchen, liest man nur
die gerade gesendeten Daten zurück, was aber bei anspruchsvolleren
Anwendungen zur Kollisionserkennung sinnvoll sein kann.
RS485 benutzt im Gegensatz zu RS232 nur 2 Datenleitungen. Die
Pegeldifferenz zwischen beiden, bzw. ob diese positiv oder negativ ist,
wird vom Empfänger ausgewertet. Der Wechsel von 0 auf 1 oder umgekehrt
entsteht also durch Polaritätsumkehr. Zur Abschirmung wird hin und
wieder Masse mitgeführt. Kann hilfreich sein, muß nicht.
RS485 ist als Bus verwendbar. Oftmals ist dabei ein Gerät Master, und
die anderen Slaves. Slave-Geräte senden nicht von sich aus, sondern
antworten nur auf Anfragen des Masters. Zur Unterscheidung der Geräte
wird oft eine Adressierung verwendet. In "reinen" RS485-Systemen, wo
eine direkte Anbindung von PCs micht erforderlich ist, wird oft ein
UART-Modus mit 9 Datenbits verwendet. Das neunte Bit wird zur
Unterscheidung benutzt, ob die restlichen acht ein Datenbyte oder eine
Adresse darstellen. Diese Betriebsart ist aber nicht verpflichtend. Man
kann die Schnittstelle auch wie RS232 im mit 8 Detenbits verwenden.
RS485 wird üblicherweise über verdrillte, unabgeschirmte Kabel verlegt.
Auf kurze Distanz tut es jede Art von Litze oder Klingeldraht, verdrillt
oder nicht. Entscheidend ist aber der Abschluß mit etwa 100 Ohm
(Terminierung), die an einem Ende, oder verteilt auf beide Enden des
Kabelstranges als 2x 200 Ohm ausgeführt sein können. Diese stellen eine
Last für die Bustreiber dar, denn RS485 ist eine Stromschnittstelle: Die
Sender, auch Treiber genannt, sorgen dafür, daß ein bestimmter,
definierter Strom fließt. Dabei stellt sich i.A. eine Spannung von etwa
+/-3 Volt ein. Der Wert des Abschlußwiderstandes ist nicht kritisch, 120
Ohm funktionieren genauso wie 56, letzteres erhöht natürlich den
Stromverbrauch.
Der Max481-Baustein, genauso wie seine etwas primitiveren Verwandten vom
Typ SN75176, hat zwei Eingänge, die wahrscheinlich mit Portleitungen des
Mikrocontrollers verbunden sind. Diese werden üblicherweise als "DE"
(Driver Enable) und "RE" (Receiver Enable) bezeichnet. da eine dieser
Leitungen invertiert, also Low-aktiv ist, kann man auch beide verbinden
und über eine einzige Portleitung steuern. In diesem Fall ist der
Empfänger immer aus, wenn der Treiber an ist, man liest also die
gesendeten Daten nicht mit. Will man das, kann RE auch dauernd aktiviert
bleiben und DE bei Bedarf zugeschaltet.
Die RS485-Treiberbausteine erlauben, falls man das so will, hohe
Bitraten, teilweise bis in den Megabit-Bereich, falls der UART das
hergibt. (In der Praxis wohl eher nicht). 115k sollten aber möglich
sein, obwohl ich selber so etwas nur bis 9600 Baud betrieben habe -
daran waren aber die langsamen Optokoppler schuld, weil meine
Applikation galvanische Trennung benötigte. bei direktem Anschluß sollte
viel mehr gehen.
Ach ja, die ganze Sache ist trotz allem polaritätsabhängig. Die "A" und
"B" Signalleitungen sollten nicht vertauscht werden (d.h. an allen
Geräten gleich angeschlossen).
Also, kurz zusammengefaßt, RS485 kann ähnlich wie RS232 benutzt werden,
man muß aber zum Senden die Datenrichtung über den entsprechenden Pin
umschalten. Es gibt Möglichkeiten, RS485 auf RS232 zu wandeln, falls man
einen PC über Terminalprogramm anschließen will. Der PC versteht
allerdings keinen 9-Bit-Modus. Soweit ich das verstehe, definiert RS485
mehr oder weniger die Hardwareseite der Schnittstelle, impliziert aber
kein bestimmtes Protokoll. Wenn man darüber kein fertiges Gerät, sondern
beispielsweise ein weiteres selbst programmiertes Mikrocontrollerboard
anspricht, ist eigentlich jedes gewünschte serielle Datenformat und
Protokoll möglich.