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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von H. S. (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
2 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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. (achs)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (lkmiller) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht 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. (achs)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert

von Mike J. (linuxmint_user)


Bewertung
1 lesenswert
nicht 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
Ebay-Artikel Nr. 171202927182
5,51 Euro

Dazu vielleicht noch:

10pcs-X-Test-Hook-Clip-dupont-cable-FOR-Arduino-UNO-R3-Logic-Analyser-TE 
ST-IC
Ebay-Artikel Nr. 222165518730
3,70 Euro

von Sinus T. (micha_micha)


Bewertung
0 lesenswert
nicht 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) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Eine auf derartige Anwendungen spezialisierte Hardware ist das hier:

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

von H. S. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Guter Tipp!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.