www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik uart problem


Autor: Wesam Casa (fay79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,
ich habe meine uart schnittstelle auf der maximum Baudrate eingestellt, 
aber das problem, wenn ich daten senden will, macht sie öfters pause.
weisst jemand, an was  das liegt
danke

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> habe meine uart schnittstelle auf der maximum Baudrate eingestellt
Die Schnittstelle vom PC?

> weisst jemand, an was das liegt
An Windows?

Autor: Wesam Casa (fay79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo
ich habe eine hardware am pc angeschlossen, und wenn ich daten mit hohe 
Baudrate senden will, geht das nicht, wie ich erwartet habe, das macht 
stängig pause.
ob an windows liegt ich weiss es nicht, aber wenn du es so meist, wie 
kann es passieren ??
danke

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat die UART einen Puffer? Schickst du vom Programm aus schneller Daten 
in den Puffer rein, als sie von der UART aus dem Puffer entnommen und 
auf die Reise geschickt werden? Wartet die "UART-Befüllfunktion" bis 
genug Platz im Puffer ist, um neue Daten aufzunehmen und entsteht 
dadurch eine Wartezeit? Haben die UART am PC und die UART an deiner 
"Hardware" eine Handshake-Funktion (Siehe RS232 Flußsteuerung)?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> und wenn ich daten mit hohe Baudrate senden will
Von wo nach wo?
Vom PC zu deiner Hardware?

> ob an windows liegt ich weiss es nicht
Beweg während der Übertragung mal ein Windows-Fenster.
Ruckelt es dann mehr?

> wie kann es passieren ??
Das Programm kommt nicht mit dem Befüllen des UARTs nach.
BTW: Ist dieser UART an einer USB-Schnittstelle angeschlossen?

Autor: Wesam Casa (fay79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
es gibt einpaar einstellung im datasheet die ich machen musste , ich 
habe flowcontrol aktiviert aber was mit puffer zutun hat, habe ich 
bessschen zweifen, da ich nich genau weiss was ich einstellen soll:
- UART Receiver, RTS/CTS Hardware Flow Control
The UART receive buffer is approx. 1024 bytes, and at lower baudrates 
(9600, 19200) the system
can process data into the device without need for flow control.
If constant streaming of data into RX on the device is required, care 
should be taken to set the
comm parameters to optimize the performance. If data has a termination 
char, this can be used.
Also, if data has a particular frame size, this can be used.
set comm match <value> sets the value of the packet terminator.
set comm size <value> sets the number of bytes to receive before 
forwarding
0-1 forwards immediately. maximum value = 1460 bytes.
The comm size is automatically set whenever the baudrate is set, but can 
be modified.
Even at higher baudrates (115K and higher ) it is possible to operate 
without flow control if packets
are uniform and a protocol is used to ensure that data is delivered on 
the remote side before the
next packet is sent

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine aktivierte Flow Control springt an, wenn der UART receive buffer 
voll wird. Der Empfänger meldet das Vollwerden dem Sender denn der 
Sender soll bis auf weiteres keine Daten mehr schicken. Ist wieder Platz 
im UART receive buffer wird das Senden wieder frei gegeben. Auf der 
Senderseite sieht das wie eine Pause aus.

Laut deinem Datenblatt ist der UART Receiver in der Lage bei lower 
baudrates (9600, 19200) die Daten schnell genug aus dem UART receive 
buffer weiterzuverarbeiten, denn es ist da kein Flow Control nötig. Bei 
Verzögerungen und Pausen würde ich auf der Senderseite forschen.

Bei höheren Baudraten muss man die Kommunikationsparameter optimal 
einstellen um beste Performance zu haben. Verschiedene Möglichkeiten 
sind aufgeführt.

Unabhängig davon kann es auch auf der Senderseite Probleme geben. Auch 
beim Befüllen des Senderpuffers aus dem Sendeprogramm heraus kann es zu 
Überfüllung kommen. In diesem Fall setzt eine andere Art Flow Control 
zwischen deinem Senderprogramm bzw. dessen Programmlibraries und der 
Sender-UART ein - die Library kann z.B. warten bis der Sendepuffer Platz 
für weitere Zeichen hat. Auch das äussert sich als Pause auf der 
Senderseite

Autor: Wesam Casa (fay79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
uart ist mit usb angeschlossen.

Autor: Wesam Casa (fay79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe vergessen euch zusagen, dass ich die daten (file daten) mit 
kermit protokol sende.. sagt euch was??

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ein trübes Stochern im Nebel, was hier los ist...

Du sendest also vom PC über einen USB-UART an deine Hardware. Richtig?
Diese Übertragung wird durch kurze Pausen unterbrochen. Richtig?

Gib doch mal noch mehr Informationen:
Was ist deine Hardware?
Welche Baudrate?
Wie stellst du fest, dass die Übertragung stockt?
Wie lange stockt die Übertragung?
Verwendest du überhaupt die Flusskontrolle (RTS, CTS, DSR...)?
Oder nur RXD und TXD?

Autor: Wesam Casa (fay79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Das ist ein trübes Stochern im Nebel, was hier los ist...
>
> Du sendest also vom PC über einen USB-UART an deine Hardware. Richtig?
> Diese Übertragung wird durch kurze Pausen unterbrochen. Richtig?
rechtig
>
> Gib doch mal noch mehr Informationen:
> Was ist deine Hardware?
wlan modul http://www.rovingnetworks.com/documents/WiFlyGSX-um.pdf
> Welche Baudrate?
ich verwende jetzt die maximal baud rate 921600
> Wie stellst du fest, dass die Übertragung stockt?
durch LED und ein program (tera Term ), der mir gie übertragungszeigt
> Wie lange stockt die Übertragung?
unterschiedlich
> Verwendest du überhaupt die Flusskontrolle (RTS, CTS, DSR...)?
> Oder nur RXD und TXD?
am anfang nur RXD und TXD und jetzt flow kontrolle aber brigst mir 
nichts.
ich sende die daten mit einem protokol der kermit heisst.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2.3  UART 
Connect a common ground when using the external TX, RX inputs.  
 
For a 3 wire DB-9 interface (connect tx, rx, gnd only)  
 
Factory default is hardware flow control disabled, CTS and RTS are not required.
Hast du die CTS und RTS Pins angeschlossen?

Am besten zeichnest du mal eine Skizze, wo man alle beteiligten 
Komponenten und die angeschlossenen Leitungen sieht. Vielleicht hilft 
das weiter...

Autor: Wesam Casa (fay79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hast du die CTS und RTS Pins angeschlossen?
mit was soll ich die anschliessen?? ich arbeite mit usb-schnittstelle
>
> Am besten zeichnest du mal eine Skizze, wo man alle beteiligten
> Komponenten und die angeschlossenen Leitungen sieht. Vielleicht hilft
> das weiter...

alle beteiligten sind hier: 
http://www.rovingnetworks.com/documents/rn-134-ds.pdf
damit das problem wird klar: ich sende von diesem wlan modul zum anderem 
textdaten und das funktioniert schon aber nur die pause was mich nervt

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> alle beteiligten sind hier: ...
Das ist also nur 1 Komponente  :-o

Ohne Witz, wenn ich raten kann sieht dein Aufbau so aus:
PC #1 mit Terminal-SW  --> USB --> RS232 --> WLAN -----> WLAN --> RS232 --> USB --> PC #2 mit Terminal-SW
Und wenn du jetzt eine Datei vom PC #1 zum PC #2 via Kermit sendest, 
dann hast du auf der Empfängerseite kurze Pausen?

Autor: Wesam Casa (fay79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
>> alle beteiligten sind hier: ...
> Das ist also nur 1 Komponente  :-o
>
> Ohne Witz, wenn ich raten kann sieht dein Aufbau so aus:
>
> PC #1 mit Terminal-SW  --> USB --> RS232 --> WLAN -----> WLAN --> RS232
> --> USB --> PC #2 mit Terminal-SW
rechtig 1,0 :-)
> 
> Und wenn du jetzt eine Datei vom PC #1 zum PC #2 via Kermit sendest,
> dann hast du auf der Empfängerseite kurze Pausen?
das ist so: wenn ich  daten sende: also von pc1  zum pc 2 blinkt eine 
rote  LED in meinem evaluation board dh die daten werden gesendet zum 
wlan modul 1 durch usb--> rs232 ( wir sind immer nur beib pc 1 ).Wenn 
das wlan module 1 daten weiter leiten im luft :also wlan 1---> wlan2 
blinkt eine orengene LED in beiden module dh wlan 1 sendet und wlan 2 
empfängt.
aber das problem denke ich mal ist zwichen usb und uart.

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

Bewertung
0 lesenswert
nicht lesenswert
Darf ich mal etwas anderes fragen:
Wieso ist das jetzt ein Problem, wwenn du kurzzeitige Aussetzer hast?

Ich meine: Du hast in deiner Übertragungskette so viele paketorientierte 
Übertragungsstrecken drinnen, dass es eigentlich ein Wunder wäre, wenn 
da nicht kurzzeitig die Übertragung stockt.

Wenn du so etwas aufbaust, dann musst du IMHO damit rechnen, dass die 
Übertragung immer wieder mal kurzzeitig stockt und deine Programme so 
aufbauen, dass sie damit zurecht kommen -> FIFO Queues, die die 
Zwischenräume auffüllen.

Autor: Wesam Casa (fay79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Darf ich mal etwas anderes fragen:
natürlich :-)
> Wieso ist das jetzt ein Problem, wwenn du kurzzeitige Aussetzer hast?
>
> Ich meine: Du hast in deiner Übertragungskette so viele paketorientierte
> Übertragungsstrecken drinnen, dass es eigentlich ein Wunder wäre, wenn
> da nicht kurzzeitig die Übertragung stockt.
> ja schon aber nicht bei 4 Bytes und bei baudrate von 921600
> Wenn du so etwas aufbaust, dann musst du IMHO damit rechnen, dass die
> Übertragung immer wieder mal kurzzeitig stockt und deine Programme so
> aufbauen, dass sie damit zurecht kommen -> FIFO Queues, die die
> Zwischenräume auffüllen.
du hast schon recht aber es konnte sein, dass ich irgenwas nicht rechtig 
verstanden habe wo ich datasheet gelesen habe.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> aber das problem denke ich mal ist zwichen usb und uart.
Wie  Karl heinz Buchegger schon beschrieben hat, kann das Problem an 
jeder der beteiligten Schnittstellen auftauchen. Schon beim Transfer vom 
Terminalprogramm im PC #1 zum USB-Treiber kann es ruckeln, und das wird 
mit jedem Teilnehmer nur noch schlimmer...

Schade eigentlich nur, dass das jetzt 3 1/2 Stunden gedauert hat, das 
rauszufinden, was schon ganz zu Anfang mein Verdacht war... :-/

Und dann bleibt es bei der Frage:
>> Wieso ist das jetzt ein Problem, wenn du kurzzeitige Aussetzer hast?

Autor: Wesam Casa (fay79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo
> Schade eigentlich nur, dass das jetzt 3 1/2 Stunden gedauert hat, das
> rauszufinden, was schon ganz zu Anfang mein Verdacht war... :-/
do hast schon recht aber es konnte, dass ich irgenwas falsch 
eingestellt, was ich nicht verstanden habe

Autor: Wesam Casa (fay79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
guten morgen zusammen,
ich habe die baud rate runtergesetzt und getzt funktioniert 
besser.Anstatt 921600 MBit/s habe ich 11500 MBit/s eingestellt, hat 
jemand von euch eine Erklärung, warum pause bei 921600Mbit/s gab
ich danke euch

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

Bewertung
0 lesenswert
nicht lesenswert
Faycal Miftah schrieb:
>> Ich meine: Du hast in deiner Übertragungskette so viele paketorientierte
>> Übertragungsstrecken drinnen, dass es eigentlich ein Wunder wäre, wenn
>> da nicht kurzzeitig die Übertragung stockt.
> ja schon aber nicht bei 4 Bytes und bei baudrate von 921600

Doch. Gerade bei 4 Bytes darfst du dich nicht wundern.
Dir scheint nicht klar zu sein, was paketorientierte Verbindung bedeutet 
und wie so etwas realisiert wird.

> ich habe die baud rate runtergesetzt und getzt funktioniert
> besser.Anstatt 921600 MBit/s habe ich 11500 MBit/s eingestellt, hat
> jemand von euch eine Erklärung, warum pause bei 921600Mbit/s gab
> ich danke euch

Du überträgst 4 Bytes, was schon mal schlecht für eine paketorientierte 
Verbindung ist, da viel zu kurz.

Nun gehen die Pakethandler aber nicht her und bauen aus jedem 
dahergelaufenen Byte ein neues Paket zusammen und schicken das auf die 
Reise, sondern sie haben Algorithmen, die im Prinzip erst eine zeitlang 
warten ob noch weitere Bytes daherkommen, die sie in das Paket 
integrieren können (Für TCP/IP siehe zb der Nagle Algorithmus).

Kommen die Bytes jetzt etwas langsamer daher, kann es natürlich sein, 
dass sich das alles zeitlich besser ausgeht und die Bytes als 
Einzelpakete bzw. als kleinere Pakete auf die Reise geschickt werden.

Genau wird man dem nur mit teurem Messequipment auf die Schliche kommen 
können, wenn überhaupt.
Ist aber im Grunde sinnlos, denn eine Einstellung die heute 
funktioniert, kann morgen schon wieder die gleichen Probleme aufwerfen. 
Einfach deshalb weil die Netzlast insgesamt zb höher oder niedriger ist, 
du zb bei TCP/IP mehr Hops zwischen den Teilnehmern hast, die 
Funkverbindung schlechter ist, etc. Sprich deine, von dir nicht 
beeinflussbare, Umgebung spielt da mit rein.

Und nochmal: Wenn deine Programme mit derartigen kurzen Aussetzern eines 
kontinuierlichen Datenstroms nicht klarkommen, dann musst du daran 
arbeiten, das abzustellen. Deine Verbindungskette ist von der Art, dass 
du immer damit rechnen musst, das solche Dinge passieren. Solange du auf 
dieser Verbindungskette bleiben musst, werden solche Dinge passieren!

Autor: Wesam Casa (fay79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank

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.