RS485 stimmt das so

Gast #1834681
Lesenswert?

Hallo,
ich verwende als Master einen FT232RL mit MAX485, als Slaves verwende 
ich ATTINY2313 mit MAX485. Nun versuche ich schon verzweifelt das 
hinzukriegen aber das will irgendwie garnicht. 2-Draht A,B,GND 
verbunden. Ich habe mich auch totgegoglt, laut diesem Schaltplan sind 
die SLAVES DI<->TXD und RO<->RXD verbunden stimmt denn das so? Beim 
SLAVE ziehe ich DE und RE/ auf 5V wenn ich Daten schicken will, aber das 
Teil will nicht was mache ich falsch?

Danke schon mal.
Angehängte Dateien:
Gast #1834695
Lesenswert?

> Teil will nicht was mache ich falsch?

Ein gern gemachter Fehler besteht darin den Ausgangstreiber zu frueh 
abzuschalten. Du musst ja jedesmal nach dem senden eines Bytes die 
Treiber wieder in den Lesemodus schalten. Dazu musst du in deinem 
Controller ja irgendein Bit abfragen damit du weisst das dein Byte 
gesendet wurde.
Aber es muss eben auch wirklich ganz gesendet sein und es darf nicht so 
sein das lediglich der Buffer der Senderoutine frei ist, aber das Byte 
gerade rausgetaktet wird.


Olaf
Gast #1834803
Lesenswert?

Der TX-Int feuert aber schon wenn der Puffer frei ist, die UART-Hardware 
sendet da noch (wahrscheinlich gerade das Startbit).
Moeglichkeit 1: RC-Glied in den Steuerleitungen, Werte an die Baudrate 
angepasst,
Moeglichkeit 2: die Steuerleitung laenger Aktiv halten, mindestens so 
lange, wie das Zeichen gesendet wird:
Puffer frei (Flag oder Interrupt): Starte Timer
Timer deffinierten Wert erreicht: schalte Steuerleitungen,
Moeglichkeit3:
ein Zeichen mehr senden, dieses kommt aber eventuell beim Enpfaenger 
nicht richtig an, eventuelle Fehlerflags beim Empfaenger behandeln.

mfg Frank
Gast #1834815
Lesenswert?

R8C29 hat uebrigens wirklich ein Bit mit dem er sagen will das er mit 
dem Senden fertig ist. :-P


Ich musste aber auch feststellen das dies nicht 100% zuverlaessig ist. 
Genauer gesagt setzt er das nicht immer, aber manchmal schon wenn er das 
Stopbit ausgibt. Das fuehrt dann dazu das man den Treiber etwa beim 
halben Stopbit abschaltet wenn man nicht drauf achtet.

Olaf
Gast #1834855
Lesenswert?

Schalte bei Halbduplexbetrieb (wie RS485) grundsätzlich den jeweils 
inaktiven Interrupt aus und lösche vor der Aktivierung das 
Interruptflag, dann feuert nix mehr.

Also vor dem Senden RX-INT abschalten und TX-INT-FLAG löschen.
Beim Empfang umgekehrt.

Einfacher gesagt: immer nur das direkt vorher aktivieren (und das 
INT-Flag löschen), was gebraucht wird.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren