Forum: Mikrocontroller und Digitale Elektronik Baudrate berechnen anhand Logic-Analyzer


von Joachim (Gast)


Angehängte Dateien:

Lesenswert?

Hi zusammen,

ich stehe gerade etwas auf dem Schlauch und wollte mal fragen, ob mir 
jemand auf die Sprünge helfen kann.

Ich habe folgendes Signal wie im Anhang aus einem Gerät mitgelauscht, 
das sind die ersten Bytes einer seriellen Kommunikation. 0V als idle 
sollte hier nicht stören, da das Signal invertiert zu sein scheint. Die 
Impulsdauer liegt bei rund 9ms (Cursor rot/blau). Wer kann mir helfen, 
die Baudrate zu errechnen?

Liege ich richtig mit der Annahme, dass ein Symbol damit ~90ms dauert 
und somit die Buadrate 11bauds sein muss? Da stimmt doch was nicht, 
oder?

Besten Dank und schönes Wochenende
Joachim

von Joachim (Gast)


Lesenswert?

...vielleicht weiss auch jemand direkt, wie die ersten Zeichen aussehen? 
Ich meine gehört zu haben, dass die Baudrate 7n1 sein soll, aber das 
sehe ich auf dem Bild nicht, da das ja schon 10 bit pro Periode/Zeichen 
sind?

Gruß Joachim

von Jack V. (jackv)


Lesenswert?


von Joachim (Gast)


Lesenswert?

Jack,

danke, aber das hättest du dir auch sparen können, da das null auf meine 
Fragen eingeht.

Vielleicht gibt es aber jemanden der meine Fragen konkret liest.

von Jack V. (jackv)


Lesenswert?

Nein, es geht nicht auf deine Frage ein. Es zeigt aber, dass sowas wie 
„dass die Baudrate 7n1 sein soll“ Unsinn ist, und vielleicht die 
Zusammenhänge erstmal zusammengehängt werden sollten. Dabei kann der 
verlinkte Artikel helfen.

von Dietrich L. (dietrichl)


Lesenswert?

Joachim schrieb:
> Vielleicht gibt es aber jemanden der meine Fragen konkret liest.

Dann solltest du die Frage auch erstmal korrekt stellen!

Zur Klarstellung:

Joachim schrieb:
> dass die Baudrate 7n1 sein soll

Das ist aber keine Baudrate, sondern das Übertragungsformat.

Joachim schrieb:
> Impulsdauer liegt bei rund 9ms

Das ergibt die Baudrate von ca. 110 Baud.

von Stefan F. (Gast)


Lesenswert?

Die Baudrate von UART Kommunikation bezieht sich auf die einzelnen Bits, 
nicht auf das ganze Byte samt Start- und Stop-Bit.

Dietrich L. schrieb:
> Das ergibt die Baudrate von ca. 110 Baud.

Würde ich auch sagen.

von Wolfgang (Gast)


Lesenswert?

Joachim schrieb:
> danke, aber das hättest du dir auch sparen können, da das null auf meine
> Fragen eingeht.

Dann lies mal unter "Physikalische Einheit" wie die Einheit Baud 
definiert ist.

Oder was ist deine Frage?

Joachim schrieb:
> Liege ich richtig mit der Annahme, dass ein Symbol damit ~90ms dauert

Nein

Lies mal in dem von Jack V. verlinkten Artikel wenigstens noch den 
zweiten Satz ("Jedes Symbol entspricht einer definierten, messbaren 
Signaländerung im physischen Übertragungsmedium.") und versuche ihn zu 
verstehen.

Joachim schrieb:
> Ich meine gehört zu haben, dass die Baudrate 7n1 sein soll

7n1 hat nichts mit der Baudrate zu tun. Ob ein Paritätsbit verwendet 
wird, kannst du aus einer LA-Aufzeichnung nicht erkennen.

von Stefan F. (Gast)


Lesenswert?

Wolfgang schrieb:
> Ob ein Paritätsbit verwendet
> wird, kannst du aus einer LA-Aufzeichnung nicht erkennen.

Ich denke da ist keins drin, denn es wäre sonst an mindestens einer 
Stelle falsch. Zähle mal die Anzahl der Bits auf High Pegel.

von c-hater (Gast)


Lesenswert?

Joachim schrieb:

> Impulsdauer liegt bei rund 9ms (Cursor rot/blau). Wer kann mir helfen,
[...]
> Liege ich richtig mit der Annahme, dass ein Symbol damit ~90ms dauert
> und somit die Buadrate 11bauds sein muss? Da stimmt doch was nicht,
> oder?

Genau, da stimmt was nicht. Mal abgesehen davon, dass es eine ganze 
Menge verschiedene Frameformats für die UART-Kommunikation gibt, von 
denen längst nicht alle zehn Bits pro Frame haben, hast du auch noch ein 
dramatisches Problem mit trivialster Logik...

Wenn 9ms wirklich die Dauer eines Bits ist, dann ist die Baudrate 
natürlich 1/9 ms=111 Baud, denn dafür spielt das Wortformat natürlich 
überhaupt keine Rolle...

111 Baud ist ziemlich ungewöhnlich (wären 11 Baud ebenfalls), aber 
natürlich möglich...

von karadur (Gast)


Lesenswert?

110Baud war früher ein Standard z.B. für Teletype

von Joachim (Gast)


Lesenswert?

Besten Dank, 7n1 ist natürlich keine Baudrate, das war ein Fehler von 
mir...
Könnt ihr mir sagen, warum das mit 7N1 nicht funktionieren kann? Ist 7N2 
als Parameter möglich, wenn man sich das Signal anschaut?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Joachim schrieb:
> Ich meine gehört zu haben, dass die Baudrate 7n1 sein soll,

 Nein, bestimmt nicht.
 Eher 7N2.

Joachim schrieb:
> ...vielleicht weiss auch jemand direkt, wie die ersten Zeichen aussehen?

 Wenn es 7N2 ist, dann ist das eine Folge von 4 * CR (Carriage Return
 oder 0x0D) + ASCII "A" (oder 0x41).

von c-hater (Gast)


Lesenswert?

Joachim schrieb:

> Könnt ihr mir sagen, warum das mit 7N1 nicht funktionieren kann? Ist 7N2
> als Parameter möglich, wenn man sich das Signal anschaut?

Wozu genau hast du einen LA? Genau um sowas zu klären, auch wenn du 
nicht den Hauch einer Andeutung einer Ahnung hat...

Also lerne wenigstens, wie man mit dem Teil umgeht, sonst kannst du es 
auch gleich wegwerfen und dir ein anderes Hobby suchen, 
Briefmarkensammeln z.B...

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Joachim schrieb:
> Könnt ihr mir sagen, warum das mit 7N1 nicht funktionieren kann? Ist 7N2
> als Parameter möglich, wenn man sich das Signal anschaut?

 Warum soll das mit 7N1 nicht funktionieren?

 Funktioniert genau wie mit 7N2, weil Stoppbit beliebig lang sein
 kann.

von Wolfgang (Gast)


Lesenswert?

Joachim schrieb:
> Könnt ihr mir sagen, warum das mit 7N1 nicht funktionieren kann? Ist 7N2
> als Parameter möglich, wenn man sich das Signal anschaut?

Warum fragst du das nicht deinen Logikanalysator. Ein vernünftiger LA 
wird dir bei fehlerhafter Parität das Bit deutlich markieren.

von georg (Gast)


Lesenswert?

Joachim schrieb:
> dass die Baudrate 7n1 sein soll, aber das
> sehe ich auf dem Bild nicht, da das ja schon 10 bit pro Periode/Zeichen
> sind?

Ja und - 1 Start + 7 Daten + 2 Stop = 10

Wenn der Sender 2 Stop bits sendet und der Empfänger 1 Stop bit erwartet 
ist alles gut. Also kann man 7N1 oder 7N2 einstellen.

Georg

von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

Der Symbolvergleich ist so etwas übersichtlicher ...

von Stefan F. (Gast)


Lesenswert?

Es kann nicht 7N1 oder 7N2 sein, denn dann hättest du framing Fehler 
(falsches Stop-Bit).

Man sieht da eindeutig 8 Bits zwischen Start und Stopp. Das achte Bit 
kann wie gesagt auch keine Parity sein, weil die dann bei mindestens 
einem Zeichen falsch wäre.

von Stefan F. (Gast)


Lesenswert?

Wolfgang schrieb:
> Der Symbolvergleich ist so etwas übersichtlicher ...

Das Start Bit beginnt mit der fallenden Flanke, nicht mit der 
steigenden!

von c-hater (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:

> Das Start Bit beginnt mit der fallenden Flanke, nicht mit der
> steigenden!

Kommt drauf an: Logic Level UART oder UART over RS232...

von Stefan F. (Gast)


Lesenswert?

c-hater schrieb:
> Kommt drauf an: Logic Level UART oder UART over RS232...

Logic Analyzer messen Logic Level, richtig?

von foobar (Gast)


Lesenswert?

Auf Wolfgangs Bild sieht man doch, dass 7N2 durchaus möglich und sogar 
wahrscheinlich wäre.

von c-hater (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:

> Logic Analyzer messen Logic Level, richtig?

Nicht unbedingt. Sie messen was sie dafür halten... Den guten kann man 
ggf. sagen, dass sie falsch liegen. Die richtig Guten bekommen das bei 
UART sogar alleine raus, jedenfalls wenn das Eingangssignal lang genug 
ist...

von Wolfgang (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Das Start Bit beginnt mit der fallenden Flanke, nicht mit der
> steigenden!

Das Startbit muss sich vom Idle-Zustand unterscheiden, sonst wird das 
nichts mit dem Start. Also muss das Startbit mit einer steigenden Flanke 
anfangen.

Joachim schrieb:
> 0V als idle sollte hier nicht stören, da das Signal invertiert
> zu sein scheint.

von Stefan F. (Gast)


Lesenswert?

Wolfgang schrieb:
> Das Startbit muss sich vom Idle-Zustand unterscheiden, sonst wird das
> nichts mit dem Start. Also muss das Startbit mit einer steigenden Flanke
> anfangen.

Der Idle Zustand bei UART ist HIGH.

Also muss das Startbit mit einer fallenden Flanke anfangen.

von Zombie (Gast)


Lesenswert?

Der TE hat doch in seinem ersten Posting geschrieben, dass das Signal 
vermutlich invertiert ist:
Joachim schrieb:
> 0V als idle
> sollte hier nicht stören, da das Signal invertiert zu sein scheint.

von c-hater (Gast)


Lesenswert?

Zombie schrieb:

> Der TE hat doch in seinem ersten Posting geschrieben, dass das Signal
> vermutlich invertiert ist:
> Joachim schrieb:
>> 0V als idle
>> sollte hier nicht stören, da das Signal invertiert zu sein scheint.

Du kannst doch Schmalspur-Denkern wie Stefanus F. nicht mit Fakten 
kommen. Das kann er garnicht gut ab...

von Wolfgang (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Der Idle Zustand bei UART ist HIGH.

Woraus entnimmst du, dass das Signal von einem UART mit Idle High 
stammt?

von Stefan F. (Gast)


Lesenswert?

Wolfgang schrieb:
> Woraus entnimmst du, dass das Signal von einem UART mit Idle High
> stammt?

Ich weiß es nicht. Ist genau wie die gegenteiligen Aussagen nur eine 
Vermutung.

von Joachim (Gast)


Lesenswert?

Besten Dank nochmals für die Antworten.

Das Signal ist nach der seriellen (TTL) nochmals über einen Transistor 
invertiert. Dort habe ich das Signal abgegriffen.

Marc V. schrieb:
> Wenn es 7N2 ist, dann ist das eine Folge von 4 * CR (Carriage Return
>  oder 0x0D) + ASCII "A" (oder 0x41).

Kann mir jemand sagen, wie man da auf CR (0x0A) + 'A' kommt? Das klingt 
nämlich schon relativ plausibel. Ich werde nochmal versuchen länger zu 
loggen, vielleicht kann man da was sehen...

@c-hater: ich weiss nicht, was du hier beitragen möchtest, aber deine 
flachen Kommentare gehen mir hart auf die Nüsse. Such dir bitte einen 
anderen Beitrag oder erstell deine eigenen, denn mich interessieren 
deine Kommentare nicht...

von Einsatzleiter (Gast)


Lesenswert?

Joachim schrieb:

> @c-hater: ich weiss nicht, was du hier beitragen möchtest, aber deine
> flachen Kommentare gehen mir hart auf die Nüsse. Such dir bitte einen
> anderen Beitrag oder erstell deine eigenen, denn mich interessieren
> deine Kommentare nicht...

Das ist aber heute das diensthabende Arschloch. Ich glaube, morgen ist 
"Cyblord" dran. Der ist vom gleichen Kaliber.

von Stefan F. (Gast)


Lesenswert?

Joachim schrieb:
> Kann mir jemand sagen, wie man da auf CR (0x0A) + 'A' kommt?

Auf dem Bild von Wolfgang in 
Beitrag "Re: Baudrate berechnen anhand Logic-Analyzer" sieht man deutlich 
die Bitfolge
1
1 0100111 00

Die Start- und Stopp-Bits habe ich mal etwas abgesetzt dargestellt. 
Zuerst wird das niederwertigste Bit übertragen, also drehen wir das 
ganze mal um, damit die Binärzahl so da steht, wie wir es gewohnt sind:
1
1110010

Und weil das ganze wegen deinem Transistor invertiert ist:
1
0001101

Das ist von links nach rechts in Dezimal umgerechnet: 8+4+1=13, was 
wiederum 0x0D in hexadezimal ist.

von A.S. (Gast)


Lesenswert?

georg schrieb:
> Empfänger 1 Stop bit erwartet

Dem Empfänger reicht auch ein halbes stoppbit, egal wie er konfiguriert 
ist. Sonst würden uarts nicht funktionieren.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Joachim schrieb:
> Kann mir jemand sagen, wie man da auf CR (0x0A) + 'A' kommt? Das klingt
> nämlich schon relativ plausibel.

 0x0A ist LF (Linefeed)
 0x0D ist CR (Carriage return).

 Und das letzte Zeichen ist wahrscheinlich (weil unvollständig)
 ASCII "U".

 Vielleicht wird "AUX" gesendet?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

A.S. schrieb:
> Dem Empfänger reicht auch ein halbes stoppbit, egal wie er konfiguriert
> ist. Sonst würden uarts nicht funktionieren.

 Mit 110 Baud und 2 Stoppbits wäre ich mir da nicht so sicher.

 Sieht nach einem Fernschreiber, uralten Modem oder elektronischen
 Schreibmaschine aus.

von Joachim (Gast)


Lesenswert?

Vielen Dank nochmal für eure Hilfe, das hat mich weitergebracht.
Es handelt sich um ein Kaffeautomat. Wenn ich das nach dem Schema 
aufbaue, dann erhalte ich ein paar CR´s und "AUTOMAT" zurück. Daher ist 
das abgeschnitte Bitmuster auch tatsächlich ein "U".

von Joachim (Gast)


Lesenswert?

Marc V. schrieb:
> Mit 110 Baud und 2 Stoppbits wäre ich mir da nicht so sicher.

Was wäre dein Vorschlag, um da ein AVR zu konfigurieren? 7N1? 7N2? 
Baudrate scheint wirklich 110 zu sein.

von foobar (Gast)


Lesenswert?

Beim Senden 7N2, gibt dem Empfänger mehr Zeit.  Beim Empfang ist es 
egal.

von foobar (Gast)


Lesenswert?

Btw, beim ATMega328 ist die Konfiguration der Stopbits eh nur für's 
Senden.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Joachim schrieb:
> Marc V. schrieb:
>> Mit 110 Baud und 2 Stoppbits wäre ich mir da nicht so sicher.
>
> Was wäre dein Vorschlag, um da ein AVR zu konfigurieren? 7N1? 7N2?
> Baudrate scheint wirklich 110 zu sein.

Es handelt sich also um einen langsamen Kaffeeautomaten.
Es wird schon einen Grund geben, warum das alles mit 110 Baud und
7N2 läuft.

Also, es ist egal, AVR als Empfänger (und auch als Sender, falls es
geht) ruhig auf 7N2 stellen,
AVR wird sich dabei sowieso nur langweilen...

: Bearbeitet durch User
von georg (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Es kann nicht 7N1 oder 7N2 sein, denn dann hättest du framing Fehler
> (falsches Stop-Bit).

Das ist halt einfach falsch. Bei den meisten UARTs bewirkt die 
Einstellung 2 Stoppbits zwar dass 2 gesendet werden, der Empfänger ist 
aber trotzdem mit 1 Stoppbit bzw. sogar weniger zufrieden und erzeugt 
keinen Framing Error.

c-hater schrieb:
> Du kannst doch Schmalspur-Denkern wie Stefanus F. nicht mit Fakten
> kommen

Ja, das ist wohl so. Keine Ahnung, aber das mit voller Überzeugung.

Georg

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.