www.mikrocontroller.net

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


Autor: Led Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Steffen H. (avrsteffen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist denn ein RS-485 Protokoll?

Autor: m. keller (Gast)
Datum:

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

Autor: Led Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Steffen H. (avrsteffen)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: zocc (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Led Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: zocc (Gast)
Datum:

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

Autor: H.Joachim Seifert (crazyhorse)
Datum:

Bewertung
1 lesenswert
nicht 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 :-)

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.