Gast
#2538522
Hi Ich programmiere gerade einen Bus auf RS-485 Basis mit 19.200 Baud. Dabei wird ein Paket übertragen aus einem Startbyte, acht Datenbytes und dann einem Stoppbyte. Als Stoppbyte wird "Carriage Return" benutzt. Doch Carriage Return kommt nie an.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Nach meinem Verständnis müsste - sobald der Puffer frei ist - Carriage Return in den Puffer geschrieben werden. Dann wird gewartet, bis der Puffer wieder leer ist. Und dann wird gewartet, bis auch das Senden des leltzten Elements abgeschlossen ist. Erst wenn das passiert ist, wird der "Driver Output" deaktiviert und der "Receiver Input" aktiviert. Doch wie gesagt, das CR wird verschluckt. Warte ich vor dem Deaktivieren des Driver-Outputs noch ein paar Hundert Mikrosekunden, kommt auch mein CR an. 100µs reichen nicht, gut 500 (so lang wie ein Byte zum Senden braucht) dagegen schon. Aber wo wird mein letztes Byte (eben das CR) verschluckt? Der MAX481 wird wohl kaum ein ganzes Byte puffern, aber im Mikrocontroller warte ich doch eigentlich extra, bis alles aus allen Puffern raus ist oder nicht? Wo ist mein Denkfehler?