Forum: Mikrocontroller und Digitale Elektronik UART Schreiben auf USB Geschwindigkeit


von krach (Gast)


Lesenswert?

Hallo,

in meinem Programm sollen alle 200 ms etwa 600 Byte auf das STI100 
Interface geschrieben werden.
Könnte mir jemand sagen, wie man die ungefähre Schreib- bzw Sendedauer 
über UART bei 38400 baud ausrechnen kann?

Danke!

von Falk B. (falk)


Lesenswert?

@  krach (Gast)

>Könnte mir jemand sagen, wie man die ungefähre Schreib- bzw Sendedauer
>über UART bei 38400 baud ausrechnen kann?

Ja, der Herr Adam Ries mit seinen Grundrechenarten, siehe RS232.

MFg
Falk

von Volker S. (volkerschulz)


Lesenswert?

38400 Baud = 38400 bps (bits per second)

Bei 8N1 benoetigt jedes Byte 10 Bits (Startbit + Datenbits + Stopbit). 
Es koennen also maximal 3840 Bytes pro Sekunde uebertragen werden. 600 
Bytes benoetigen demnach gut 156 ms.

Volker

von krach (Gast)


Lesenswert?

Vielen Dank Volker,

ich habe es mal auf 115200 baud gesetzt.

von Mike J. (emjey)


Lesenswert?

@ Volker
Das was du schreibst stimmt nur wenn ein Zeichen genau ein Bit 
entspricht.

Ein Zeichen entspricht normalerweise 10 bis 11 Bit, bei 8N1 sind es 10 
Bit und damit sind 38400 Baud = 384000 bit/Sekunde.


@ krach (Gast)
Du möchtest 600 Byte übertragen und hast nur 200ms dafür Zeit.

600Byte * 5 = 3000 Baud sind dafür notwendig.

Du kannst deine Sendegeschwindigkeit also auf 4800 Baud stellen.

von Ich (Gast)


Lesenswert?

>Ein Zeichen entspricht normalerweise 10 bis 11 Bit, bei 8N1 sind es 10
>Bit und damit sind 38400 Baud = 384000 bit/Sekunde.

Hallo das ist genau falsch. Was Volker geschrieben hat ist richtig.

Mit Baud wird die Symbolrate angegeben und die ist bei UART 1 Bit.

von krach (Gast)


Lesenswert?

Die Praxis spricht auch für Volker, denn es klappt nun ;)

von Mike J. (emjey)


Lesenswert?

Ich schrieb:
> Mit Baud wird die Symbolrate angegeben und die ist bei UART 1 Bit.

Na dann gehen wir das mal durch, ein Zeichen besteht aus dem Start, Stop 
und 8 Datenbits, kein Paritätsbit.

Das sind zusammen 10 Bit pro Zeichen.

@ krach (Gast)
Wenn es nicht mit 4800 Baud geht ist irgend etwas nicht in Ordnung.
Es sollte so laufen.

von Hc Z. (mizch)


Lesenswert?

> Na dann gehen wir das mal durch, ein Zeichen besteht aus dem Start, Stop
> und 8 Datenbits, kein Paritätsbit.
>
> Das sind zusammen 10 Bit pro Zeichen.

Zweifellos.  Deshalb ist in diesem Fall die Zeichenrate ein Zehntel der 
Baudrate.  Letztere bezeichnet nämlich die Breite eines Schritts 
(Bitrate, die bei dieser Schnittstelle gleich der Symbolrate ist).

Also sind 38400 Baud 3840 Zeichen/s.

von Ich (Gast)


Lesenswert?

Ein Zeichen bei UART hat 1Bit.
Es kann nur zwei verschiedene Pegel einnehmen also beim RS232 minimal 
-3V und 3V.

Also Entsprechen 9600Baud = 9600 Bit/s
nun kann man nicht alle bit nutzen weil man auch Anfang und Ende der 
Übertragung erkennen muss gehen davon halt noch ein paar verloren.


siehe auch:
http://de.wikipedia.org/wiki/Baud

von Mike J. (emjey)


Lesenswert?

Okay, jetzt bin ich restlos verwirrt ... ich guck morgen Abend noch mal 
rein und es wär schön wenn da einer mal alles klar stellt. (mit Beweis)
(Im Internet finde ich auch mehrer ... Meinungen dazu)

von Jobst M. (jobstens-de)


Lesenswert?

Ich bin etwas entsetzt - aber vielleicht liegt es daran, daß ich noch 
die Zeit, in der Daten über Modem übertragen wurden, aktiv miterlebt 
habe.

9600 Baud = 9600 bit/s (Brutto) = 7680 bit/s (Netto bei 8N1) = 960 
Byte/s


Wenn Du Deine 600 Bytes in 200ms übertragen möchtest, dann sind das also 
3000 Bytes in 1s -> Mindestrate also 30000 Baud - nächsthöhere: 38400 Bd

Was Volker anfänglich schrieb stimmt. Auch die 156ms kann ich 
bestätigen. (156,25ms um genau zu sein)


Gruß

Jobst

von Volker S. (volkerschulz)


Lesenswert?

Jobst M. schrieb:
> Ich bin etwas entsetzt - aber vielleicht liegt es daran, daß ich noch
> die Zeit, in der Daten über Modem übertragen wurden, aktiv miterlebt
> habe.

Ich haette auch nicht gedacht, dass es bei einem solchen Thread 
tatsaechlich noch zur Diskussion kommen kann. Aber die Verwirrung 
zwischen Baud und bps habe ich auch schon zu Zeiten der Akkustikkoppler 
erlebt. ;)


> 9600 Baud = 9600 bit/s (Brutto) = 7680 bit/s (Netto bei 8N1) = 960
> Byte/s
>
> Wenn Du Deine 600 Bytes in 200ms übertragen möchtest, dann sind das also
> 3000 Bytes in 1s -> Mindestrate also 30000 Baud - nächsthöhere: 38400 Bd
>
> Was Volker anfänglich schrieb stimmt. Auch die 156ms kann ich
> bestätigen. (156,25ms um genau zu sein)

Genau so isses. Bei EIA-232 entspricht ein Symbol einem Bit, somit ist 
Baudrate = Bitrate.


Wikipedia meint:
> Die (zeitliche) Dauer der jeweiligen Bits hängt von der eingestellten
> Bitrate ab, welche bei der EIA-232 gleich der Baudrate ist.

http://de.wikipedia.org/wiki/EIA-232#Datenrahmen_und_Timing


Volker

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.