PicoScope 2206A: Serielle Dekodierung nur bis 38400 baud

OP #4383609
Lesenswert?

Hallo zusammen !

Ich habe seit kurzem ein PicoScope 2206A.

Zum Austesten des Gerätes habe ich die serielle Dekodierung
am TX-Pin eines Arduino UNO ausprobiert. Kein Problem mit
dem 9 € China Logik Analyzer auch bei 115200 baud.

Das PicoScope 2206A funktioniert auch bis 38400 baud, steigt
dann aber bei 57600 baud aus. Er zeigt nicht mehr "hello world!"
- wie gesendet - sondern unsinnige Zeichen.

Hat jemand eine Ahnung, woran das liegen könnte?

Danke für alle Tipps!

Jürgen
#4383625
Lesenswert?

Jürgen S. schrieb:

> Das PicoScope 2206A funktioniert auch bis 38400 baud, steigt
> dann aber bei 57600 baud aus. Er zeigt nicht mehr "hello world!"
> - wie gesendet - sondern unsinnige Zeichen.

Das könnte an der UART implementierung im Arduino liegen.
Bei 16Mhz und 57600 Baud und U2X auf 0 hast du einen Baudratenfehler von 
2.1%. Normal sagt man, dass bis ca 3% akzeptabel sind, aber je nachdem 
wie die Abtastung im PicoScope implementiert ist, könnte das auch schon 
in die Hose gehen.
Bei einem U2X von 1 ist der Fehler wesentlich geringer. Allerdings 
erhebt sich die Frage, ob die Arduino Entwickler dahingehend eine 
Analyse machen, welche U2X Stellung bei einer konkreten Baudrate die 
bessere wäre.
#4383631
Lesenswert?

Karl H. schrieb:

> Bei einem U2X von 1 ist der Fehler wesentlich geringer. Allerdings
> erhebt sich die Frage, ob die Arduino Entwickler dahingehend eine
> Analyse machen, welche U2X Stellung bei einer konkreten Baudrate die
> bessere wäre.

Bei 76800 hast du übrigens bei einem U2X von 0 wieder einen kleinen 
Fehler von 0.2%. Schafft das PicoScope das wieder? Wenn ja, würde ich 
das als starken Hinweis werten, dass das "Problem" zweigeteilt in einer 
ungeschickten Abtastung im PicoScope und einem Baudratenfehler im 
Arduino zu suchen ist.
Gast #4383673
Lesenswert?

Karl H. schrieb:
> Normal sagt man, dass bis ca 3% akzeptabel sind

Das sagt man natürlich nicht nur so, sondern das liegt daran, dass sich 
bei 8 Bit die Zeitfehler im letzten übertragenen Bit auf 9*3% = 27% der 
Bitdauer aufsummiert haben, so dass man bei halbwegs sauberen Signalen 
noch auf dem richtigen Bit abtastet. Ob es nun wirklich 3% sind, hängt 
davon ab, wie der Empfänger die Abtastung des Bits macht und auswertet. 
Und darüber schweigt sich das PicoScope Manual aus. Versuchweise könnte 
man im ATmega mal den Wert im Baudratenregister etwas ändern und gucken, 
was PicoScope und Sigrok (oder welche SW auch immer) dazu sagen.
OP #4383894
Lesenswert?

Ich dachte auch zunächst, dass es an ungenauen Baudraten liegen könnte,
aber der Fehler liegt bei ca. 1%.

Anbei zwei Screenshots bei 38400 und 57600 Baud.

Inzwischen bin ich mir ziemlich sicher, dass es ein Programmierfehler
in der Beta-Version von PicoScope ist, denn die Signale stimmen, aber
der Decoder macht zwischen zwei Zeichen eine "Pause" von 2-Bit und
verschiebt dadurch alles.
Angehängte Dateien:
OP #4383953
Lesenswert?

Karl H. schrieb:
> Das sieht so aus, als ob der auf Biegen und Brechen die Stoppbits
> abwartet.

Ja, so ähnlich glaube ich ist es. Die Ursache ist aber
keine falsche Einstellung, sondern, dass er das Stoppbit
oder das Startbit ignoriert, vielleicht weil es ihm einen
Hauch zu spät kommt.

Zuerst dachte ich, es ist ein Performance Problem des Oszis
(38400 geht, 57600 nicht) und war ziemlich enttäuscht, aber
es ist wohl ein Softwareproblem.
#4383960
Lesenswert?

Jürgen S. schrieb:
> Karl H. schrieb:
>> Das sieht so aus, als ob der auf Biegen und Brechen die Stoppbits
>> abwartet.
>
> Ja, so ähnlich glaube ich ist es. Die Ursache ist aber
> keine falsche Einstellung, sondern, dass er das Stoppbit
> oder das Startbit ignoriert, vielleicht weil es ihm einen
> Hauch zu spät kommt.

Du kannst ja mal probieren, zwischen den Buchstaben eine kleine Pause 
künstlich einzulegen.
OP #4384045
Lesenswert?

Karl H. schrieb:
> Das könnte an der UART implementierung im Arduino liegen.
> Bei 16Mhz und 57600 Baud und U2X auf 0 hast du einen Baudratenfehler von
> 2.1%.

Du hattest Recht, genau daran liegt es.
Es sind +2,1 %, wenn man das Signal vermisst.
Das ergibt eine Baud-Rate von 58.825 und wenn
man die einstellt, funktioniert der Decoder.

Fazit: PicoScope ist nicht sonderlich fehlertolerant.
OP #4384192
Lesenswert?

Aber MS/s ist doch pro Zeiteinheit, nämlich Megasamples pro Sekunde.
Ich dachte es ging ihm um die Abkürzung "Sa" für Samples, da finde ich
"S" auch ok, "s" kleingeschrieben dagegen bezeichnet Sekunden.

Vielen Dank auch an alle für die Hilfe!

P.S.: Ich denke, Wolfgang und ich haben aneinander vorbeigeredet.
Gast #4384437
Lesenswert?

Jürgen S. schrieb:
> Wolfgang A. schrieb:
>>
>> Bei einer Abtastrate würde man irgenwas mit "kSa/s" o.ä erwarten
>
> Warum? MS/s sind doch auch nicht schlecht. "S" steht für "Samples".

Auf die Info "pro Sekunde", "pro Division" oder "pro ..." legt man aber 
schon Wert, wenn es um Abtastraten geht ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren