UART zu RS485 mit automat. Treiber-Umschaltung? (RTS / DE)

Gast #2703699
Lesenswert?

Hallo Leute!

ich tüftel gerade an einer RS485-Schnittstelle.

Besonderheit: aus meinem UART bekomm ich nur Rx/Tx, da die übrigens 
Handshake-Signale des uCs nicht aus meinem Gerät rausgeführt werden.

Nun die Frage:
Kann man sich das DE-Signal irgendwie durch einen kleinen 
konfigurierbaren IC selbst herstellen? Dieser IC müsste dann selbst 
erkennen, wann der Tx-Frame startet / endet.
Kennt Ihr da was - eventuell mit Baudrate / Timeouts einstellbar?

Vielen Dank im Vorraus!
Angehängte Dateien:
Gast #2703721
Lesenswert?

@Ralf G.:
Ist schon richtig, in meinem Bild hab ich ein paar Stecker weggelassen:

[uC]------Stecker-A--------[?]--[RS485-Driver]-----Stecker-B

Ich will nun eine Huckepack-Platine bauen, die zwischen Stecker-A und B 
sitzt. Aus Stecker A kommen leider nur Rx/Tx raus.


@Dietmar:
Ich muss die Platine selbst bauen, da ich damit in eine vorgegebene 
Mechanik passen muss. Sonst wäre Dein Vorschlag sicher eine gute 
Alternative.
Gast #2703728
Lesenswert?

RS485-Tüftler schrieb:
> Kann man sich das DE-Signal irgendwie durch einen kleinen
> konfigurierbaren IC selbst herstellen?

Hallo,

im Prinzip einfach, du musst halt DE sofort einschalten wenn Tx aktiv 
ist, und ausschalten, wenn Tx mehr als eine Zeichenlänge nicht mehr 
aktiv ist. Da liegt der kritische Punkt, wenn die Antwortzeiten der 
anderen Geräte kurz sind. Am besten geeignet ist ein Primitivprozessor 
etwa im 8poligen Gehäuse, der kann auch die Tx-Zeichen mitdekodieren. 
Die Verzögerungszeit sollte manipulierbar sein. Ein Monoflop ginge zwar 
auch, aber ich sehe nicht was dabei der Vorteil sein soll.

Gruss Reinhard
Gast #2703745
Lesenswert?

@Reinhard:

daran hab ich auch schon gedacht, aber FW schreiben versuche ich zu 
vermeiden. Bei der Monoflop-Variante käme es - wie Du sagst - auf die 
Protokoll-Timings an. Darum hab ich ja gehofft, es gibt schon was 
fertiges, dass sich der Baudrate automatisch anpasst (eventuell noch 
Timeout über Widerstand einstellbar).

@Ralf:
nein - ich möchte eine kleine Adapterplatine bauen, die von außen an das 
Gerät angesteckt wird, ohne das Gehäuse für eine Leitung öffnen zu 
müssen.

@Thomas:
Der RS485-Treiber muss umschaltbar sein, damit meine Gegenstelle auch 
die Möglichkeit hat, mir zu antworten.
Gast #2703750
Lesenswert?

Habe für Sowas immer ein retriggerbares Monoflop (4538) genutzt, welches 
auf reichlich 10 Bitzeiten eingestellt ist, Baudrate sollte also 
feststehen. Nachteil: Umschaltung auf Senden erfolgt erst im ersten 
Startbit und Rückschaltung u.U. erst einige Bitzeiten später.
mfG ingo
Gast #2703774
Lesenswert?

@ingo & Reinhard:

Wenn das bei Euch geklappt hat, probier ich das auch einfach mal ...
Muss ich mit meiner Gegenstelle austesten, ob die das erste (verkürzte) 
Bit so akzeptiert und ob sie lange genug mit der Antwort wartet.

Vielen Dank erstmal!
Gast #2703787
Lesenswert?

Wenn der Bus Failsafe geschaltet ist (mit Abschlusswiderständen und 
leicht vorgespannt ist, das im offenen Zustand sicher 1 erkannt wird), 
sehe ich mit dem Startbit eigentlich kein Problem. Allerdings sollte ein 
anderer Busteilnehmer nicht unmittelbar nach dem letzten Zeichen 
antworten, weil das FF, wie gesagt, noch fast ein Zeichen "nachhängt" 
und der Sender noch aktiv ist. Das kann man aber im Protokoll 
berücksichtigen, da man ohnehin eine gewisse Zeit auf freies Medium 
horchen sollte.
mfG ingo
Gast #2703811
Lesenswert?

Die zeitgesteuerte Umschaltung ist Schrott, denn sie geht davon aus, 
dass der Controller nie eine Verzoegerung hat. Das mag am anfang ja auch 
stimmen, aber mit zunehmendem Projekt kommt noch dies und das, dann eine 
laengere Rechnung und die Verzoegerung beim Senden ist mehr als ein 
Byte. Das wird schwierig zu debuggen...

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