Forum: PC Hard- und Software Sniffer für serielle Schnittstelle, die Fehler lesen kann


von H. S. (Gast)


Lesenswert?

Ich habe ein Problem mit dem Senden und Empfangen auf der seriellen 
Schnittstelle, wo Ich nicht weiterkomme. Ich gehe davon aus, dass 
irgendwo Bis verloren werden, weil das timing nicht stimmt, oder das Bit 
nicht in der Mitte erwischt wird. Gobt es in Software irgendeine 
Möglichkeit, das darzustellen, was der PC UART tatsächlich sieht?

Solange der ja nix Gescheites empfängt, sind die klassischen Sniffer 
darüber auch machtlos.

?

von Jim M. (turboj)


Lesenswert?

Heiko S. schrieb:
> Gobt es in Software irgendeine
> Möglichkeit, das darzustellen, was der PC UART tatsächlich sieht?

Nur mit einem DSO oder Logic Analyser direkt an der Leitung. Im PC sieht 
man nur dekodierte Daten und eventuelle Fehler (Parity, Framing).

von c-hater (Gast)


Lesenswert?

Heiko S. schrieb:

> Ich habe ein Problem mit dem Senden und Empfangen auf der seriellen
> Schnittstelle, wo Ich nicht weiterkomme. Ich gehe davon aus, dass
> irgendwo Bis verloren werden, weil das timing nicht stimmt, oder das Bit
> nicht in der Mitte erwischt wird. Gobt es in Software irgendeine
> Möglichkeit, das darzustellen, was der PC UART tatsächlich sieht?

Nicht wirklich, jedenfalls nicht für die übliche UART-Hardware. Es gibt 
da einfach keine Möglichkeit, direkt mit Software am RX-Pin zu lauschen.

Aber natürlich kann man tricksen. Man schließt einfach RX mit einem der 
vier direkt abfragbaren Pins einer PC-UART kurz und guckt sich dann die 
Pegel an diesem Pin an.

Allerdings: Nur bei relativ geringen Bitraten wird dabei etwas 
sinnvolles herauskommen können, jedenfalls so lange man im Userspace 
eines der üblichen Multitasking-OS agiert...

von Thorsten Legat (Gast)


Lesenswert?

Heiko S. schrieb:
> Ich gehe davon aus, dass irgendwo Bis verloren werden, weil das timing
> nicht stimmt, oder das Bit nicht in der Mitte erwischt wird. Gobt es in
> Software irgendeine Möglichkeit, das darzustellen, was der PC UART
> tatsächlich sieht?

Guck dir doch erstmal mit hterm das ganze in binär an. Dann siehste ob 
da Bits gekippt sind.

von H. S. (Gast)


Lesenswert?

Ich habe das erwartet. Werde mich mal um USB-LOGIC Anaylzer bemühen. Die 
können das ja auch dekodieren, wie ich meine.

Wenn dann komische Bits kommen, kann Ich sicher sehen, was rauskommt.

Die Schwierigkeit ist nämlich, dass manchmal was Lesbares rauskommt und 
sich das Proggi dann verläuft, weil die Befehle falsch sind.

von B.A. (Gast)


Lesenswert?

Ich habe mir bei eBay einen en 6€ USB LA gekauft. Die Software dafür ist 
openSource und wirklich gut.
Es ist eine Kopie eines US-Gerätes.
Es stehen 8 Kanäle zur Verfügung.
Dort wurde ein PSoC Controller verwendet.
Suche selbst einfach mal bei eBay, der Name fällt mir gerade nicht ein.

von A. S. (Gast)


Lesenswert?

Ein einfachstes Osczi reicht. Bis dahin kannst Du auch die häufigsten 
Gründe durchgehen:

- Wackelkontakt, Bauteiltod --> Oszi
- Leitungslängen (nur bei >5kBaud UND >10m) --> vorerst nur 3m, nur 
115kBaud)
- eigene HW-Frickelschaltung (--> hier posten, kann man mit Erfahrung 
hinreichend analysieren)
- Timing des Prozessors (Datenblatt aufmerksam lesen, Vergleichswerte 
prüfen, meistens off by one Problem oder unsaubere Näherung)
- Polarität (Low auf der Leitung zum PC im Ruhezustand, mit Voltmeter 
oder LED prüfen)

Tipp:
a) Mit Parity --> dann werden Fehler eher erkannt, z.B. total falsche 
Baudrate.
b) mit 2 Stopp-Bits --> bei leicht unterschiedlicher Frequenz 
vorteilhaft
c) Back-to-Back Treiber in SW-Programmieren, 10.000 Bytes senden. Bei 
115k, 12 Bit (8+Start+Parity+2Stopp) ergibt das ziemlich genau 1s. 
Kannst du mit LED relativ genau testen.
d) Uart-Fehler anzeigen lassen (Framing, Parity)

Wenn Du auf Deinem Arbeitstisch mit 115kBaud zum PC kommunizierst, und 
nicht gerade den EMP-Freak in der Nachbarwohnung hast, dann sollte pro 
Stunde nicht ein einziger Fehler auftreten.

von Georg (Gast)


Lesenswert?

Heiko S. schrieb:
> Werde mich mal um USB-LOGIC Anaylzer bemühen

Ich habe einen HP Protokoll-Analyzer, der zeigt natürlich an, was real 
auf der Leitung ist. Das hilft ungemein bei Fragen der Programmierung, 
aber wenn da Zeichen verfälscht sind, egal warum, zeigt er eben auch 
Parity Error an, wie der empfangende UART. Für Fehler wie schlechte 
Pegel oder ungenaues Timing oder Leitungsstörungen muss man einen Oszi 
bemühen, aber das ist dann meistens echte Arbeit, besonders bei 
sporadischen Fehlern. Was geht: mit dem Analyzer bei einem Fehler den 
Speicheroszi triggern. Das ist dann schon höhere Messtechnik.

Georg

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Heiko S. schrieb:
> Werde mich mal um USB-LOGIC Anaylzer bemühen.
Zu allererst würde ich mir die Signalqualität mit einem analogen Oszi 
ansehen. Denn wenn das Signal da schon schlecht aussieht, dann hilft die 
ganze digitale Untersucherei nichts.

von A. S. (Gast)


Lesenswert?

Korrektur oben: streiche 5kBaud, ersetze 115kBaud.

Wenn Du beschreibst, was Du an HW und SW (SIO-Parameter) hast, dann wird 
der Fehler vermutlich offensichtlich.

Zum Testen des Timings eignen sich auch einzelne Zeichen ganz gut, hier 
allerdings einfacher ohne Parity z.B.
a) 0xf0 senden --> 5 low-bits, dann 5 high-bits --> je nach dem, welches 
Zeichen empfangen wird, kann man auf die Baudrate schließen.
b) abwechselnd 0x48 und 0xb8 nach jeweils >=10ms Pause senden. Wenn man 
hier auf der (invertierten) Leitung zum PC auf der fallenden Flanke 
triggert, dann sieht man 3 Bitzeiten später im Oszi ein Augendiagramm 
des Signals für 1 Bit.
c) Falls ein Rechteck-Generator zur Verfügung steht (und kein Oszi), 
dann den Empfänger (im µC) bei 0xe0 eine LED blitzen lassen. Die 
minimale und maximale Frequenz bestimmen. Die mittlere Frequenz * 6 ist 
die ungefähre nominelle Baudrate.

von rk (Gast)


Lesenswert?

B.A. schrieb:
> Ich habe mir bei eBay einen en 6€ USB LA gekauft. Die Software dafür ist
> openSource und wirklich gut.
> Es ist eine Kopie eines US-Gerätes.

Nur der Vollständigkeit halber:
Vermutlich ist ein Saleae Clone gemeint und Sigrok/Pulseview als 
Software.

von Lutz H. (luhe)


Lesenswert?


von Mike J. (linuxmint_user)


Lesenswert?

B.A. schrieb:
> Ich habe mir bei eBay einen en 6€ USB LA gekauft. Die Software dafür ist
> openSource und wirklich gut.
>...
> Suche selbst einfach mal bei eBay, der Name fällt mir gerade nicht ein.

Der LA kostet sogar weniger als 6 Euro.
Die Software nennt sich "PulseView" und ist von "sigrok".

https://sigrok.org/wiki/PulseView
http://sigrok.org/wiki/Downloads


24MHz-8CH-USB-Logic-Analyzer-8-Channel-Logic-Analyzer-Compatible-to-Sale 
ae
http://www.ebay.de/itm/171202927182
5,51 Euro

Dazu vielleicht noch:

10pcs-X-Test-Hook-Clip-dupont-cable-FOR-Arduino-UNO-R3-Logic-Analyser-TE 
ST-IC
http://www.ebay.de/itm/222165518730
3,70 Euro

von Sinus T. (micha_micha)


Lesenswert?

Und eventuell daran denken, dass die Pegel bei RS232 +-15V betragen 
können, was durchaus den LA zerschießen kann

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Eine auf derartige Anwendungen spezialisierte Hardware ist das hier:

https://iftools.com/analyzer/msb-rs232/index.de.php

von H. S. (Gast)


Lesenswert?

Guter Tipp!

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.