Forum: Compiler & IDEs Problem mit Uart-lib von P. Fleury


von Daniel Held (Gast)


Lesenswert?

Hallo Forum,
ich bin gerade dabei einen RS485 Master auf einem ATM128 zu schreiben 
und möchte die Uart-lib von PF verwenden. Das einbinden klappt 
einwandfrei und auch die Funktion ist, bis auf eine Kleinigkeit, 
perfekt.
Das Problem ist, dass nach dem Senden die gesendeten Zeichen im 
Fifo-Buffer "bleiben" und somit quasi über get_c() wieder "empfangen" 
werden. Leider verfügt das zu verwendende Protokoll nicht über ein 
spezielles Startzeichen sodass ich die gesendeten Zeichen nicht von den 
empfangenen separieren kann.
Hatte jmd. evtl. das selbe Problem bzw. eine Lösung dafür?

Vielen Dank schon einmal.

benutzt wird die unveränderte Version der Homepage von PF.

von Stefan E. (sternst)


Lesenswert?

Das hat nichts mit der UART-Lib zu tun, sondern damit, wie du den 
RS485-Bus handhabst. Wenn du beim Senden das Empfangen am Transceiver 
nicht abschaltest, bekommst du halt deine eigenen Daten als Echo zurück.

von Daniel Held (Gast)


Lesenswert?

Stimmt natürlich, hatte ich übersehen. Leider steht die Hardware soweit 
schon und das Receive Enable ist fest auf GND gezogen. :-(

Hat evtl. jemand eine Idee wie man das lösen kann???

Danke speziell auch an Stefan für den Tip

von Karl H. (kbuchegg)


Lesenswert?

Daniel Held schrieb:

> Hat evtl. jemand eine Idee wie man das lösen kann???

Führ dir ein Flag in die Software ein, welches aussagt, dass gerade 
gesendet wird. Solange das Flag auf TRUE ist, verwirft die 
Empfangsroutine alles was reinkommt.
Problem könnte das letzte gesendete Byte aufwerfen. D.h. du musst ein 
wenig warten, ehe das Flag zurückgesetzt wird, welches den Empfangscode 
wieder freischaltet.

von Daniel Held (Gast)


Lesenswert?

Danke Karl-Heinz, werde das gleich mal testen. Ich könnte doch zum 
Rücksetzen des Flags das TXC0-Flag (Transmitt complete) aus UCSR0A 
verwenden?

von Daniel Held (Gast)


Lesenswert?

Funktioniert :-)

Nochmals DANKE für's "Augen öffnen" an Karl-Heinz

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.