Hallöchen, ich habe den LTC485 jeweils einmal an Atmel Mega32 und Mega8 gehängt (beide TQFP) einfach RX und TX jeweils drauf und n zusätzlicher Pin für die Flusssteuerung. Soweit so prima, Die Daten laufen auch schön von A nach B und andersrum, nur wenn ich Daten von A nach B nach A senden will, also im Pingpong muß ich bei der umstellung der LTC von Lesen nach schreiben und zurück jeweils ein delay von mindestens 20 ms einbauen, da ohne die Pause die Daten verloren gehen ... irgendwo hängt der Bus da im Nirvana (ist nur 20cm Draht). Hat da schonmal jemand ähnliche Probleme gelöst und evtl. n Tip für mich? oder idealerweise evtl. n Schaltungsbeispiel über n laufenden LTC485?
Hi, Marko, ich bekenne hier eine Peinlichkeit, die zu ähnlichen Symptomen führte. Abhilfe: Die Senderoutine fragt nach Sendung das UCSRnA ab auf TXCn. Erst dann darf es den LTC485 wieder auf Empfang schalten. Ciao Wolfgang Horn
Wobei es bei mir erst funktionierte, also ich zu TXC noch ein Bit oder so drauflegte. Meine Vermutung ist, dass die AVRs TXC schon während des Stopbits anzeigen, was beim Empfänger zum framing error führt.
zum TXC noch n Bit zu? Sorry, aber das ist mir ziemlich hoch, was meinste damit? also wenn ichs richtig verstanden hab hol ich mir das UCSRB und kontrolliere das 7te Bit auf ja nein für den TXC, richtig? halt, nee, UCSRA Bit 6, stimmts?
Auf TXC warten, und den Transmitter erst 1-2 Bitzeiten später abschalten. Ebenso sollte der angesprochene Slave noch etwas mehr Bitzeiten abwarten, bevor er nach empfangender Botschaft selber seinen Transmitter einschaltet. Bei UARTs gibt es prinzipbedingt ein Risiko, dass der Receiver bereits während des einlaufenden Stopbits das empfangende Byte anzeigt. Wenn ein Slave dann sofort mit der Übertragung loslegt, hat er exzellente Chancen, gegen den Rest vom Stopbit des Masters zu kämpfen, also Transmitter gegen Transmitter zu schalten.
Nehmt den 82C250, der ist zwar ursprünglich für CAN, kann aber auch für RS-485 eingesetzt werden. Umschalten nicht notwendig, man bekommt eben immer ein Echo seiner Daten und das wiederum kann zum Detektieren von Kollisionen genutzt werden. Der 82C250 ist übrigens auch "Kollisionsfest", da sich 0-Pegel durchsetzt - bei den üblichen RS-485 Bausteinen gibts in diesem Fall einen Crash. Gruß Thomas
das mit dem 82C250 ist n prima Tip, Super! Werd ich im nächsten Layout beherzigen. Im Übrigen ist wer der Suche benutzen kann klar im Vorteil ich Depp!! Hab n Codescchnipsel für meine verwendete Hochsprache gebuunden, das vom kompilieren her läuft. Für alle die mal ähnliche Probleme schieben und die Suche verwenden hier mal: $regfile = "m8def.dat" $crystal = 1000000 $baud = 1200 Do Do ' Warten bis das TXC Bit gesetzt ist. loop until UCSRA.TXC = 1 Set UCSRA.TXC ' zum zurücksetzen von TXC muss 1 geschrieben werden ' gemäss Datenblatt Set PortB.1 ' Umschalten von Senden auf Empfangen am RS485 Loop
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.