hallo, ich sende und empfange Daten uber UART0 mit 8 bits, no parity 1 stop bit, 115200bit/s und asynchron. Jetzt stelle ich fest, dass ich nicht mehr als 255 Charater senden kann. wenn die Länge von Daten >255 ist, dann wird die Rest auch gelesen aber von ertem Teil abgeschnitten. Ich habe noch mein Datenblatt gelesen aber habe ich nichts über die maximale Länge des Buffer gefunden. kann jemanden mir sagen wo das Problem liegt.
oliver schrieb:
> kann jemanden mir sagen wo das Problem liegt.
Ja.
Irgendwo in Deiner unbekannten Hardware und Software.
Peter
hallo, die Hardware ist der Mikrocontroller AT90CAN128. anbei die Initialisierung der UART-Funktion, und senden-Funktion. Ich habe nur ein Teil des Programms geschickt. Das Problem liegt in der FunktionX, in FunktionX bekomme ich das Ergebnis aber es wird getrennt. Die Ausagbe sieht so aus: 0: 20F0790C00000011 0300 0900 0400 0000 1: 20588D0C00000055 0300 0500 0300 0300 2: 209C970C000000D7 0200 0700 0200 0000 3: 204E8D0C000000BC 0200 1800 0300 0000 4: 20598D0C00000062 0400 0700 0400 0300 5: 20B9980C000000E5 0300 0300 0300 0000 6: 20D7710C000 0001C 0300 1100 0400 0000 7: 202F860C00000038 0300 0600 0400 0000 danke
oliver schrieb: > Ich habe noch mein Datenblatt gelesen aber habe ich nichts über die > maximale Länge des Buffer gefunden. Dann musst Du genauer lesen, es steht garantiert drin. Ich tippe mal auf einen 2 Level FIFO mit je einem Byte.. Also zwei Byte Puffer. Es gibt auch ein Statusbit fuer Data Overrun, das Du auswerten kannst. Volker
> in FunktionX bekomme ich das Ergebnis aber es wird getrennt. Was heißt das? > 0: 20F0790C00000011 0300 0900 0400 0000 1: 20588D0C00000055 0300 0500 > 0300 0300 2: 209C970C000000D7 0200 0700 0200 0000 3: 204E8D0C000000BC > 0200 1800 0300 0000 4: 20598D0C00000062 0400 0700 0400 0300 5: > 20B9980C000000E5 0300 0300 0300 0000 6: 20D7710C000 > 0001C 0300 1100 0400 0000 7: 202F860C00000038 0300 0600 0400 0000 mal davon abgesehen, dass der \n offensichtlich keinen Zeilenvorschub macht ( \r\n verwenden), sieht das doch eigentlich so aus, wie es aussehen soll. mit korrektem Umbruch würde es so aussehen
1 | 0: 20F0790C00000011 0300 0900 0400 0000 |
2 | 1: 20588D0C00000055 0300 0500 0300 0300 |
3 | 2: 209C970C000000D7 0200 0700 0200 0000 |
4 | 3: 204E8D0C000000BC 0200 1800 0300 0000 |
5 | 4: 20598D0C00000062 0400 0700 0400 0300 |
6 | 5: 20B9980C000000E5 0300 0300 0300 0000 |
7 | 6: 20D7710C0000001C 0300 1100 0400 0000 |
8 | 7: 202F860C00000038 0300 0600 0400 0000 |
und ich kann da nichts entdecken, wo die Ausgabe offensichtlich falsch wäre.
Hallo Meine Ausgabe sieht so aus:Mit einem Zeilenvorschub nach dem 6.Ausagbe 0: 20F0790C00000011 0300 0900 0400 0000 1: 20588D0C00000055 0300 0500 0300 0300 2: 209C970C000000D7 0200 0700 0200 0000 3: 204E8D0C000000BC 0200 1800 0300 0000 4: 20598D0C00000062 0400 0700 0400 0300 5: 20B9980C000000E5 0300 0300 0300 0000 6: 20D7710C000 0001C 0300 1100 0400 0000 7: 202F860C00000038 0300 0600 0400 0000 aber ich möchte das Ergebis so haben: ohne Zeilenvorschub 0: 20F0790C00000011 0300 0900 0400 0000 1: 20588D0C00000055 0300 0500 0300 0300 2: 209C970C000000D7 0200 0700 0200 0000 3: 204E8D0C000000BC 0200 1800 0300 0000 4: 20598D0C00000062 0400 0700 0400 0300 5: 20B9980C000000E5 0300 0300 0300 0000 6: 20D7710C0000001C 0300 1100 0400 0000 7: 202F860C00000038 0300 0600 0400 0000 danke
oliver schrieb: > Hallo > Meine Ausgabe sieht so aus:Mit einem Zeilenvorschub nach dem 6.Ausagbe Wo gibst du aus? Kann natürlich auch sein, dass der ungewollte Zeilenvorschub von deinem Terminalprogramm kommt, welches nach einer 255 Zeichen Zeile einen Umbruch einfügt. > 0: 20F0790C00000011 0300 0900 0400 0000 > 1: 20588D0C00000055 0300 0500 0300 0300 > 2: 209C970C000000D7 0200 0700 0200 0000 > 3: 204E8D0C000000BC 0200 1800 0300 0000 > 4: 20598D0C00000062 0400 0700 0400 0300 > 5: 20B9980C000000E5 0300 0300 0300 0000 > 6: 20D7710C000 > 0001C 0300 1100 0400 0000 7: 202F860C00000038 0300 0600 0400 0000 > > aber ich möchte das Ergebis so haben: ohne Zeilenvorschub > > 0: 20F0790C00000011 0300 0900 0400 0000 1: 20588D0C00000055 0300 0500 > 0300 0300 2: 209C970C000000D7 0200 0700 0200 0000 3: 204E8D0C000000BC > 0200 1800 0300 0000 4: 20598D0C00000062 0400 0700 0400 0300 5: > 20B9980C000000E5 0300 0300 0300 0000 6: 20D7710C0000001C 0300 1100 0400 > 0000 7: 202F860C00000038 0300 0600 0400 0000 Schau dir die Übertragung auf Bytebene an und entscheide, wer den Umbruch macht. In deinem Programm gibt es dafür keinen Grund. Von daher halte ich dein Anzeigeprogramm für den Übeltäter.
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.