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. ?
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).
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...
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.
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.
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.
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.
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
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.
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.
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.
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
Und eventuell daran denken, dass die Pegel bei RS232 +-15V betragen können, was durchaus den LA zerschießen kann
Eine auf derartige Anwendungen spezialisierte Hardware ist das hier: https://iftools.com/analyzer/msb-rs232/index.de.php
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.