Forum: Mikrocontroller und Digitale Elektronik Datenrate für USART berechnen?


von Florian F. (ultrazauberer)


Lesenswert?

Hallo,

ich versuche rechnerisch die richtige Datenrate für ein GPS-Modul zu 
berechnen, welches an einen USART eine Atmega644 angeschlossen ist.

Durch Probieren weiß ich, dass 19200bps eingestellt werden müssen, um 
lesbare Datensätze zu erhalten.

Jetzt wollte ich anhand des Nyquist-Shannon-Theorems die Datenrate 
berechnen. Per Oszilloskop habe ich eine Periodendauer von 0,104ms 
gemessen.

Damit komme ich auf folgende Schrittgeschwindigkeit:

SR=1/(0,104*10^-3 s)=9615,38 s^-1

Da es 2 Zustände gibt (-5V / +5V), folgen 2 Signalstufen.

Die Datenrate müsste nun folgende sein:

DR=ld(S)*SR=ld(2)*9615,38 s^-1=9615,38 bps

Warum muss ich dann 19200bps einstellen? Irgendwo habe ich einen 
Denkfehler, aber ich komme nicht darauf.

Vielen Dank für die kommenden Erleuchtungen! ;)

von holger (Gast)


Lesenswert?

>Jetzt wollte ich anhand des Nyquist-Shannon-Theorems die Datenrate
>berechnen.

Buhahahhahhhahhhahhhhaaahahhhaaa.
Im Datenblatt gibt es Tabellen für Standard Baudraten.

>Per Oszilloskop habe ich eine Periodendauer von 0,104ms
>gemessen.

Ergibt 9600 Baud.

von holger (Gast)


Lesenswert?

>Durch Probieren weiß ich, dass 19200bps eingestellt werden müssen, um
>lesbare Datensätze zu erhalten.

Achso, fast vergessen. Wenn du 19200 einstellen musst, dann
läuft deine CPU wohl doppelt so schnell wie du vermutest.
Oder F_CPU irgendwo falsch eingestellt? Fuses falsch.

von Noname (Gast)


Lesenswert?

Naja. Nur ein kleiner Denkfehler:
Du hast eine "Periodendauer gemessen.
Sowas aber gibt es bei der RS232 Übertragung nicht.
Du musst die "Bitdauer" messen.

Da zwei aufeinanderfolgende gleiche Flanken eine Periodendauer ergeben,
und dies zwei Bits sind, musst Du den Wert nur durch zwei teilen und 
kommst damit auf die eingestellten 19200 Baud.

von spess53 (Gast)


Lesenswert?

Hi

> Wenn du 19200 einstellen musst, dann
>läuft deine CPU wohl doppelt so schnell wie du vermutest.
>Oder F_CPU irgendwo falsch eingestellt? Fuses falsch.

Eher halb so schnell.

MfG Spess

von Florian F. (ultrazauberer)


Lesenswert?

Erstmal Danke, auch wenn mir die Antwort jetzt nichts gebracht hat.

Ich komme ja auch auf eine Datenrate von 9600bps.

Die GPS-Maus habe ich auch schon an den PC angeschlossen und da 
erscheinen erst lesbare Ausgaben bei einer Datenrate von 19200bps.

Das Oszilloskop zeigt mir eine Periodendauer von 0,104ms und eine 
Frequenz von 9,605kHz. Diese 2 Werte decken sich ja auch.

Nur möchte ich jetzt wissen, warum ich 19200bps einstellen muss, obwohl 
ich rein rechnerisch 9600bps einstellen müsste.

Das möchte ich nun gern wissen.

von Florian F. (ultrazauberer)


Lesenswert?

Noname schrieb:
> Naja. Nur ein kleiner Denkfehler:
> Du hast eine "Periodendauer gemessen.
> Sowas aber gibt es bei der RS232 Übertragung nicht.
> Du musst die "Bitdauer" messen.
>
> Da zwei aufeinanderfolgende gleiche Flanken eine Periodendauer ergeben,
> und dies zwei Bits sind, musst Du den Wert nur durch zwei teilen und
> kommst damit auf die eingestellten 19200 Baud.

Vielen Dank für diesen nützlichen Beitrag! Danke Dir!

von Noname (Gast)


Lesenswert?

Lies bitte nochmal meine Antwort.
Sie sollte stimmen, falls ich Dich nicht total falsch verstanden habe.

Ansonsten muss hier mal Karl Heinz ran, denke ich.

von Noname (Gast)


Lesenswert?

Ah. Na dann...

Viel Erfolg noch.

von Karl H. (kbuchegg)


Lesenswert?

Noname schrieb:
> Lies bitte nochmal meine Antwort.
> Sie sollte stimmen, falls ich Dich nicht total falsch verstanden habe.
>
> Ansonsten muss hier mal Karl Heinz ran, denke ich.

Nö.
Ich werde nicht daraus schlau, was er da eigentlich gemessen hat. An 
einem UART Signal mit einem Frequenzmesser ranzugehen, dürfte nicht sehr 
sinnvoll sein.

Und damit
> Da es 2 Zustände gibt (-5V / +5V), folgen 2 Signalstufen.
kann ich überhaupt nicht viel anfangen.
Hä?

von Noname (Gast)


Lesenswert?

> Nö.

Ooooch.
Musst Du aber natürlich nicht.

Na er hat wohl mit dem Oszi gemessen. Visuell eine "Periodendauer" 
gesucht und gefunden und das für den Kehrwert der Baudrate gehalten.

von Florian F. (ultrazauberer)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Noname schrieb:
>> Lies bitte nochmal meine Antwort.
>> Sie sollte stimmen, falls ich Dich nicht total falsch verstanden habe.
>>
>> Ansonsten muss hier mal Karl Heinz ran, denke ich.
>
> Nö.
> Ich werde nicht daraus schlau, was er da eigentlich gemessen hat. An
> einem UART Signal mit einem Frequenzmesser ranzugehen, dürfte nicht sehr
> sinnvoll sein.
>
> Und damit
>> Da es 2 Zustände gibt (-5V / +5V), folgen 2 Signalstufen.
> kann ich überhaupt nicht viel anfangen.
> Hä?

Ich hab die GPS-Maus mit Strom/Spannung versorgt und am Tx-Pin das Oszi 
angeschlossen, da ich kein Datenblatt zur GPS-Maus habe. Damit wollte 
ich die Baudrate/Datenrate ermitteln.
Das macht schon Sinn, wie will man sonst etwas gescheit ausmessen?

2 Zustände sind es, weil das Signal zwischen -5V und +5V springt. Also 
ein binäres Signal.

Und Dank der tollen Theoreme von Nyquist-Shannon wollte ich rechnerisch 
die Baudrate ermitteln.

Der Fehler lag einfach darin, dass eine Periodendauer ja eine komplette 
Schwingung lang ist. Die Impulsdauer ist aber nur eine halbe Schwingung 
lang. Nun ergibt ja alles einen Sinn! Vielen Dank für den Hinweis!

von spess53 (Gast)


Lesenswert?

Hi

>Und Dank der tollen Theoreme von Nyquist-Shannon wollte ich rechnerisch
>die Baudrate ermitteln.

Praktiker suchen sich den kürzesten Abstand zwischen zwei Flanken.

MfG Spess

von H.Joachim S. (crazyhorse)


Lesenswert?

Das ist viel zu einfach :-)

von Noname (Gast)


Lesenswert?

Lieber Florian,

es macht wahrscheinlich wenig Sinn wenn ich jetzt darauf herumreite, 
weil Du ja eigentlich keine Frage gestellt hast, die sich genau auf das 
Nyquist-Shannon-Theorem (genauer Nyquist-Shannon-Abtasttheorem) bezieht 
oder auf übliche Pegel bei seriellen Übertragungen oder ob man bei 
seriellen Übertragungen (auf der Ebene von der wir hier reden von 
"Schwingungen" reden kann.

Aber:
Bei dem ersten und den letzten Punkt wendest Du die Begriffe auf ein 
Thema (serielle, RS232-Übertragung) an, über das diese Begriffe nichts 
aussagen. Im zweiten Fall, fehlt noch eine Info über den Unterschied 
zwischen "Symbolrate" und "Bitrate" (den ich leider selbst auch 
verwischt habe) und Du multiplizierst Da irgendwie einen Logarithmus 
einer "Anzahl von Symbolen" die eigentlich hier nichts zu suchen haben.

Falls Du dazu noch was wissen willst, antworten wir Dir gerne.
Aber bitte google doch zuerst mal:

1. Nyquist-Shannon-Abtasttheorem (Wikipedia ist auch gut)
2. RS232-Pegel
3. Baudrate
4. Symbolrate
5. Bitrate
6. Schwingung
7. Periodendauer

Ist alles nicht schlimm oder dumm, aber man kann sich einfach noch 
korrekter ausdrücken. Und das hilft wenn die Unterschiede dann doch mal 
wichtig werden.

von Krapao (Gast)


Lesenswert?

----  ----  ----  ----
|  |  |  |  |  |  |  |
-  ----  ----  ----  ----

<-->
Bit, hier 8 Stück willkürlich 0x10101010
Die in 1s übertragen wären 8 bit/s = 8 Baud

<----->
Periode, hier 4 Stück
Die in 1s gemessen wären 4 Hz

Meinst du das mit dem Faktor 2?

von Florian F. (ultrazauberer)


Lesenswert?

Noname schrieb:
> Lieber Florian,
>
> es macht wahrscheinlich wenig Sinn wenn ich jetzt darauf herumreite,
> weil Du ja eigentlich keine Frage gestellt hast, die sich genau auf das
> Nyquist-Shannon-Theorem (genauer Nyquist-Shannon-Abtasttheorem) bezieht
> oder auf übliche Pegel bei seriellen Übertragungen oder ob man bei
> seriellen Übertragungen (auf der Ebene von der wir hier reden von
> "Schwingungen" reden kann.
>
> Aber:
> Bei dem ersten und den letzten Punkt wendest Du die Begriffe auf ein
> Thema (serielle, RS232-Übertragung) an, über das diese Begriffe nichts
> aussagen. Im zweiten Fall, fehlt noch eine Info über den Unterschied
> zwischen "Symbolrate" und "Bitrate" (den ich leider selbst auch
> verwischt habe) und Du multiplizierst Da irgendwie einen Logarithmus
> einer "Anzahl von Symbolen" die eigentlich hier nichts zu suchen haben.
>

Gut, das Abtasttheorem (f_ab > 2*B) ist vielleicht hier etwas falsch 
gewählt, jedoch haben wir im Studium an dieser Stelle immer alle 
möglichen Datenraten errechnet, auch anhand unterschiedlicher 
Codierungen.

Das Vorgehen war meistens so, dass wir zuerst die Symbolrate(=Baudrate) 
ermittelt haben und anschließend die Datenrate.

Und da ist die mir bekannte Formel: DR=ld(S)*SR

DR...Datenrate
S...Symbole=Anzahl Stufen/Zustände, die das Signal annehmen kann
SR...Symbolrate(=Baudrate)

Ich kann gern morgen nochmal in einem Buch nachschlagen und die Quelle 
hier angeben. Jetzt ist es mir zu spät.

Das schöne in der Theorie ist ja, dass man immer alles vorgegeben hat. 
Ich habe mehr oder weniger jetzt zum 1. Mal mit einem Oszi gearbeitet.

> Falls Du dazu noch was wissen willst, antworten wir Dir gerne.
> Aber bitte google doch zuerst mal:
>
> 1. Nyquist-Shannon-Abtasttheorem (Wikipedia ist auch gut)
> 2. RS232-Pegel
> 3. Baudrate
> 4. Symbolrate
> 5. Bitrate
> 6. Schwingung
> 7. Periodendauer
>

3.==4.

> Ist alles nicht schlimm oder dumm, aber man kann sich einfach noch
> korrekter ausdrücken. Und das hilft wenn die Unterschiede dann doch mal
> wichtig werden.

Da gebe ich dir Recht.

von Florian F. (ultrazauberer)


Lesenswert?

Krapao schrieb:
> ----  ----  ----  ----
> |  |  |  |  |  |  |  |
> -  ----  ----  ----  ----
>
> <-->
> Bit, hier 8 Stück willkürlich 0x10101010
> Die in 1s übertragen wären 8 bit/s = 8 Baud
>
> <----->
> Periode, hier 4 Stück
> Die in 1s gemessen wären 4 Hz
>
> Meinst du das mit dem Faktor 2?

Wenn deine 8 Bit hier eine Sekunde benötigen, dann ist ein Bit 1/8 
Sekunde lang, also Beträgt die Impulsbreite 0,125s.

Somit ist SR=1/(1/8)=8/s

Da es ein binäres Signal ist, ist die SR gleich der DR (8bps).

Ich hatte den Fehler gemacht, dass ich statt der Impulsbreite die 
Periodendauer verwendet habe. Schande über mich

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.