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/PulseViewhttp://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