Forum: Mikrocontroller und Digitale Elektronik RS485 stimmt das so


von David (Gast)


Angehängte Dateien:

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.

von Olaf (Gast)


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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Und wie ist der RS485-Treiber an den FT232RL angeschlossen? Im 
Schaltplan taucht der FT232RL nicht auf.

von Thilo M. (Gast)


Lesenswert?

Olaf schrieb:
> 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.

Dafür wurde beim AVR der TX-Interrupt erfunden. ;-)

von frankn (Gast)


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

von Falk B. (falk)


Lesenswert?

@frankn (Gast)

>Der TX-Int feuert aber schon wenn der Puffer frei ist, die UART-Hardware
>sendet da noch (wahrscheinlich gerade das Startbit).

Nö. Das ist der UDRE-Interrupt. Gemeint ist der TXC (Transmit Complete)
Siehe Artikel Interrupt.

MFG
Falk

von Olaf (Gast)


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

von Thilo M. (Gast)


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.

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?


von David (Gast)


Angehängte Dateien:

Lesenswert?

Anbei die Schaltpläne für Master und Slave. Danke

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.