Folgende Schaltung: Usart0 -> Max487 RS485 Tranciever Usart1 -> RS232 von Maxim Controller ein Atmega664P Das Programm sendet ab und zu Telegramme über den RS485. Außerdem wird bei einem RX Interrupt das Empfangene Zeichen sofort auf RS232 übergeben und gesendet. Jetzt habe ich das Problem dass beim Umschalten des Max487 in Senderichtung, mein µC sofort ein 0x00 Empfängt und das Control Register die Framing Error Flag gesetzt hat. Der 485 Bus ist mit einer Bias Terminierung nach Lehrbuch ausgestattet, Pegel sind im Ruhezustand gezogen. Habe Spaßeshalber versucht, die Bias Terminierung umzudrehen, dann klappt gar nix mehr. Hat jemand ne Idee woher das kommen mag? Bin mit meinem Latein am Ende.
Gefunden ... Kein Kontakt vom VCC zum RX Pin Pullup. Wie dämlich von mir.. ;)
Ist es möglich dass Dein Programm mit dem Abschalten des Treibers (DE) nicht lange genug wartet bis das UART mit dem Senden der Daten fertig ist? Versuchsweise könnte man das "UDRE" bit des "UCSRnA" testen um die "DE" Leitung erst dann wieder auf Null zu stellen wenn das "USART Data Register Empty Bit" wieder gesetzt wurde. Versuch mal mit dem OSZI die TX-DATEN Leitung und die DE Leitung zu beobachten um zu sehen ob DE erst nach Vollendung der Sendung wieder gesetzt wird. Siehe unten: RS485: EEEEEEEEEESSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSEEEEEEEEEEEEEEE ________________________________ DE(RE-)_________/ _________________________ \_______________ TXD --------------(_________________________)-------------------- UDRE Bit: 111111111000000000000000000000000000111111111111111111111 ^ erst hier auf RX
Harries schrieb: > Gefunden ... > > > Kein Kontakt vom VCC zum RX Pin Pullup. > > > Wie dämlich von mir.. ;) Das ist mir auch schon passiert.
Hi >Versuchsweise könnte man das "UDRE" bit des "UCSRnA" testen um die "DE" >Leitung erst dann wieder auf Null zu stellen wenn das "USART Data >Register Empty Bit" wieder gesetzt wurde. UDRE ist wegen dem TX-Puffer ungeeignet. Zum Umschalten muss auf TXC getestet werden. MfG Spess
Spess53 schrieb: > Hi > >>Versuchsweise könnte man das "UDRE" bit des "UCSRnA" testen um die "DE" >>Leitung erst dann wieder auf Null zu stellen wenn das "USART Data >>Register Empty Bit" wieder gesetzt wurde. > > UDRE ist wegen dem TX-Puffer ungeeignet. Zum Umschalten muss auf TXC > getestet werden. > > MfG Spess Danke für den Hinweis. Steht ja hier auch: The Transmit Complete (TXCn) Flag bit is set one when the entire frame in the Transmit Shift Register has been shifted out and there are no new data currently present in the transmit buffer. The TXCn Flag bit is automatically cleared when a transmit complete interrupt is executed, or it can be cleared by writing a one to its bit location. The TXCn Flag is useful in half-duplex communication interfaces (like the RS-485 standard), where a transmitting application must enter receive mode and free the communication bus immediately after completing the transmission.
Der TXC kommt wenn das Register rausgeschoben ist. Das Stopbit ist dann aber noch nicht gesendet...
Hi >Der TXC kommt wenn das Register rausgeschoben ist. Das Stopbit ist dann >aber noch nicht gesendet... >The Transmit Complete (TXCn) Flag bit is set one when the entire frame >in the Transmit Shift Register has been shifted out Und was verstehst du unter 'entire frame'? MfG Spess
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.