Forum: Mikrocontroller und Digitale Elektronik AVR und die RS485 oder doch Uart?!


von Led Bastler (Gast)


Lesenswert?

Guten Tag,
Ich bin verzweifelt am Suchen nach der richtigen Lösung für mein 
Projekt.

Es soll folgende Aufgabe erfüllt werden:
Ein AVR liest einen Taster ein. Wenn Taster gedrückt soll ein weiterer 
AVR eine LED leuchten lassen. Und das ganze anders herum: Der zweite Avr 
liest einen Taster aus und soll am 1 AVR eine LED leuchten lassen.

Die Entfernung beträgt ca. 20 Meter. Deswegen fällt TWI flach.

Als Prozessor habe ich den Atmega8 ausgewählt.

Ich würde jetzt gerne das RS-485 Protokoll verwenden. Doch leider 
kapiere ich überhaupt nicht, was ich machen muss damit die beiden 
kommunizieren.

Die TWI Schnittstelle habe ich erfolgreich im Master Slave Betrieb zum 
laufen gebracht. Nur jetzt klappt es nicht.

Meine Überlegung:
Ich mache auf beiden AVR eine UART, die das regelt. Das ist dann aber 
noch kein richtiges RS-485.
Wenn ich jetzt an jeden AVR einen SN75176 hänge wird es dann zu einer 
RS-485 Verbindung?

Wie kann man das geschickt programmieren?

Mfg, der Led Bastler

von Steffen H. (avrsteffen)


Lesenswert?

Was ist denn ein RS-485 Protokoll?

von m. keller (Gast)


Lesenswert?

google bitte mal na RS485 --> http://de.wikipedia.org/wiki/EIA-485

von Led Bastler (Gast)


Lesenswert?

m. keller schrieb:
> google bitte mal na RS485 --> http://de.wikipedia.org/wiki/EIA-485

Das habe ich ja schon gemacht, hat mich aber auch nicht weiter gebracht.

Da steht, das man die RS485 wie die UART anspricht bzw. die UART dafür 
benutzt.

von Steffen H. (avrsteffen)


Lesenswert?

Ja, du kannst den/die UART dafür nehmen. Der SN75176 kümmert sich doch 
nur um deine RS485 Pegel und sorgt für die differenzielle Übertragung. 
Den Enable Anschluss an dem SN75176 kann man für einen Multimaster Bus 
verwenden. Ich glaub sogar der SN75176 hat da einen Sender und Empfänger 
drin, oder?

von zocc (Gast)


Lesenswert?

Ja. Das UART bringt die Daten in serieller form. Der RS486 Treiber, zB 
ein 75176 macht daraus eine Differentielle Uebertragung. Die beiden 
75176 muessen mit mind. 3 Leitern verbunden werden, das waeren dann 
+Data, -Data und GND.
Die 75176 habe je einen Richtungspin, den muss man passend ansteuern. 
Einer der Beiden sendet, der andere empfaengt. Einer ist der Master, der 
bestimmt wann gesendet wird. Die controller wissen vom Protokol her wann 
umzuschalten ist. Falls das nicht so klar oder zu kompliziert ist, 
sollte man RS422 verwenden. RS422 is im Wesentlichen dasselbe, ausser, 
dass je ein Leiterpaar pro Richtung existiert. Man benoetigt also 5 
Leiter ( +rx, -Rx, +Tx, -Tx und GND) Dabei duerfen beide Teilnehmer 
immer senden.
Die 75176 sind uebrigens veraltet, ziehen viel zuviel Strom (40mA). 
Modernere Teile ziehen weniger als ein Hundertstel (350uA)

von Led Bastler (Gast)


Lesenswert?

Danke zocc und Steffen für die ausführliche Antwort.

Eine Frage habe ich noch, braucht nur der Master einen Quarz oder auch 
alle Slaves?

von zocc (Gast)


Lesenswert?

Die UARTs arbeiten Asynchron. Die Baudrate muss auf besser als 2% 
passen, also braucht jeder Teilnehmer einen quarz

von H.Joachim S. (crazyhorse)


Lesenswert?

Oder du verzichtest auf die asynchrone Übertragung und benutzt z.B. den 
Manchester-Code.
Noch ne Überlegung: vielleicht ne 4-Draht-Leitung? Wenn die Leitung noch 
nicht liegt, ist das i.a. kein Problem. Dir bleibt die 
Richtungsumschaltung und die Kollisionserkennung/Vermeidung erspart. 
Treiber wäre dann SN75179 o.ä.
Noch ne Idee: benutz CAN-Treiber. Die brauchen auch keine 
Richtungsumschaltung, und wenn du dein eigenes gesendetes Telegramm 
fehlerfrei empfängst, kannst du davon ausgehen, dass auch der andere das 
korrekt empfangen hat (ja, ich weiss, ne Garantie ist das nicht, aber 
die Wahrscheinlichkeit ist sehr hoch). Mit CAN-Treibern (CAN-Controller 
brauchst du nicht dafür!) kommst du auch mit ner Zweidrahtleitung aus. 
Bei deinem Datenvolumen sogar mit einem :-)

von Jörg S. (joerg-s)


Lesenswert?

Led Bastler schrieb:
> Die Entfernung beträgt ca. 20 Meter. Deswegen fällt TWI flach.
Nicht zwangsweise. Schau dir mal diesen Artikel an:
http://www.mikrocontroller.net/articles/I2C_als_Hausbus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.