www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu Buffer_Size von Kommunikation über UART


Autor: oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oliver schrieb:
> kann jemanden mir sagen wo das Problem liegt.

Ja.
Irgendwo in Deiner unbekannten Hardware und Software.


Peter

Autor: oliver (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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
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

und ich kann da nichts entdecken, wo die Ausgabe offensichtlich falsch 
wäre.

Autor: oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.