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!
RS485-Tüftler schrieb: > Kann man sich das DE-Signal irgendwie durch einen kleinen > konfigurierbaren IC selbst herstellen? Warum lässt du das nicht den µC mit erledigen? Der weiß doch als Erster, wann gesendet wird.
Du kannst die beiden rechten Teile deiner Skizze durch einen ADAM4520 ersetzen. http://www.advantech.com/products/ADAM-4520/mod_8DCEE4B7-FBDE-4C5D-9752-ED2F2FBD00BF.aspx
Hi Kannst du auch CAN-Treiber (nicht Controller) nehmen? Die haben die Umschaltung schon drin. MfG Spess
@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.
@spess53: Mein Gerät "will" mit einer Gegenstelle kommunizieren, die eine RS485-Physik (halfduplex) hat.
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
RS485-Tüftler schrieb: > Ich will nun eine Huckepack-Platine bauen, die zwischen Stecker-A und B > sitzt. Aus Stecker A kommen leider nur Rx/Tx raus. Du hast also keine Möglichkeit, aus dem µC noch 'ein Kabel rauszuziehen'?
@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.
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
@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!
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
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...
>Meine Lösung
Schuss in den Fuss, aber gut fuer eine Abschlusspruefung. Wie sende ich
ein Null-Bit?
Hätte vielleicht erwähnen sollen, dass es zwar n bisschen ein Hack ist, aber es funktioniert !
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.