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
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.
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?
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)
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?
Die UARTs arbeiten Asynchron. Die Baudrate muss auf besser als 2% passen, also braucht jeder Teilnehmer einen quarz
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 :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.