Hallo Zusammen, ich habe hier einen QinHeng USB2UART Wandler (lsusb sagt ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter), der bei 9600Baud nur Müll ausgibt (Fragezeichen etc) Ein anderer USB2UART Wandler (Prolific) mit der gleichen Datenquelle funktioniert super. Erkannt wird der QinHeng Wandler gut (dmesg meldet Erfolg und gibt /dev/ttyUSB0 an), Loopbacktest funktioniert auch ohne Probleme, selbst am Oszilloskop sehen die Signale identisch aus. Warum sehe ich am Terminal nur unlesbare Zeichen?
Gast
#4723085
7bit / 8bit richtig eingestellt?
Gast
#4723156
Moritz S. schrieb: > Warum sehe ich am Terminal nur unlesbare Zeichen? Hast du mal die Baudrate nachgemessen? Vielleicht liegt der Takt daneben.
Moritz S. schrieb: > Warum sehe ich am Terminal nur unlesbare Zeichen? Zieh Dir Hterm und schau mal nach wie das in Hexadezimal aussieht. Oder ist der eine ein UART und der andere RS232? Die haben unterschiedliche, vor allem auch invertierte Datenpegel.
Gast
#4723224
Moritz S. schrieb: > selbst > am Oszilloskop sehen die Signale identisch aus. Glaube ich nicht. Von weitem vielleicht.
Gast
#4724040
Moritz S. schrieb: > der bei 9600Baud nur > Müll ausgibt (Fragezeichen etc) erhöhe mal auf 2 Stopp-Bits. W.S.
> QinHeng USB2UART Wandler
Der kann nur chinesisch.
Danke für die vielen konstruktiven Kommentare! hp-freund schrieb: > 7bit / 8bit richtig eingestellt? W.S. schrieb: > erhöhe mal auf 2 Stopp-Bits. > > W.S. Beides am PC ausprobiert, leider kein Erfolg. Oder meint ihr, dass der USB2UART Adapter nur 7bit / nur 2stoppbits versteht und ich das daher HW-seitig (am ATmega) umstellen muss? Jim M. schrieb: > Zieh Dir Hterm und schau mal nach wie das in Hexadezimal aussieht. Hterm hab ich nicht, aber das Kommandozeilenprogramm xxd zeigt auch in hex an (/dev/ttyUSB0 ist der QinHeng Wandler, /dev/ttyUSB1 der funktionierende):
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
Das zweite und dritte Zeichen ("1" und "0" haben aufeinander folgende
ASCII Werte, selbst davon sieht man bei dem QinHeng Wandler nichts!
(Jedes Telegram fängt mit "h10" an. Es handelt sich dabei um eine
Binäruhr.)
> Oder ist der eine ein UART und der andere RS232? Die haben
> unterschiedliche, vor allem auch invertierte Datenpegel.
Das habe ich als allererstes geprüft. Beide machen TTL-Pegel.
Wolfgang schrieb:
> Hast du mal die Baudrate nachgemessen?
> Vielleicht liegt der Takt daneben.
Ich bin mir nicht ganz sicher, was du meinst. Ich hab im Atmega 9600Baud
eingestellt und der funktionierende Wandler zeigt das richtige an, wenn
ich 9600Baud einstelle. Im Loopbacktest stimmen die Bitzeiten (104us)
zwischen den beiden Wandlern überein.
Arduino F. schrieb:
> Moritz S. schrieb:
>> selbst
>> am Oszilloskop sehen die Signale identisch aus.
> Glaube ich nicht.
> Von weitem vielleicht.
Zu beiden Beiträgen: Meine Datenrichtung ist ausschliesslich ATMega -->
PC. Die USB2UART Wandler müssen also nur empfangen. Die Datenrichtung
des fraglichen USB2UART Wandlers kann ich ja nur im Loopbacktest
nachprüfen. Da sahen die Signale der beiden Wandler identisch aus.
Ich habe im Moment den Verdacht, dass der QinHeng zwar mit TTL-Pegeln
arbeitet, die Signale aber trotzdem invertiert (erwartet). Das muss ich
heute abend prüfen, muss jetzt erstmal zur Arbeit.
Moritz S. schrieb: > Ich bin mir nicht ganz sicher, was du meinst. Es geht nicht um den Takt und die Baudrate der Wandler, sondern um den Deines AVR. Der wird üblicherweise mit einem RC-Oszillator erzeugt, und ist so ungenau und unstabil, daß es bei seriellen Übertragungen zu Problemen kommen kann. Das scheint bei Dir aber nicht das Problem zu sein. Sieh Dir mal Deine Platine mit dem CH-340 genauer an. Welche Variante des CH-340 ist darauf verbaut? Laut Datenblatt* gibt es einen CH340R, dessen Verhalten durch den Pegel an Pin 17 zwischen normalem seriellen Betrieb (offen bzw. High) und IR-Betrieb (low) umgeschaltet werden kann. *) https://www.olimex.com/Products/Breadboarding/BB-CH340T/resources/CH340DS1.PDF
Moritz S. schrieb: > Beides am PC ausprobiert, leider kein Erfolg. Oder meint ihr, dass der > USB2UART Adapter nur 7bit / nur 2stoppbits versteht und ich das daher > HW-seitig (am ATmega) umstellen muss? Nein, der kann auch ganz normal 8 bit + 1 stopbit. Was der unter Linux allerdings bei den etwas älteren Kerneln (*buntu 14.04 bis ?) gar nicht kann sind Parity bits. Schließ doch mal die beiden Wandler zusammen und öffne mal zwei Terminals, da müsste dann ja was im einen raus geht im anderen reinkommen. Ich benutze ganz gerne Picocom, das hat nicht so viel Schnickschnack und ist für fast jede Distri verfügbar.
1 | |
und zum beenden einfach <Ctrl-a>,<Ctrl-x>
Die Vermutung hat gestimmt, die Signalpegel haben zwar TTL-Level, sind aber tatsächlich invertiert. Eine einfache Emitterschaltung zwischen Signalquelle und Qinheng Wandler sorgt ganz spontan für fehlerfreie Telegramme :) Rufus Τ. F. schrieb: > Laut Datenblatt* gibt es einen CH340R, dessen Verhalten durch den Pegel > an Pin 17 zwischen normalem seriellen Betrieb (offen bzw. High) und > IR-Betrieb (low) umgeschaltet werden kann. Danke für den Tipp, das Ändern des Pegels an Pin 17 wäre eine super Option, wenn der Chip nicht im vergossenen D-SUB9 Gehäuse stecken würde. Dazu sieht es so aus, als wäre der Die direkt auf die Platine gebondet, mit dem entsprechenden schwarzen Blob obendrauf. Da finde ich dann wahrscheinlich auch keinen Pin 17 mehr. Ich denke, ich mach mir einfach eine kleine Adapterplatine mit zwei Emitterschaltungen, die dann dauerhaft am Qinheng Wandler angesteckt bleibt.
Gast
#4725279
Moritz S. schrieb: > Hterm hab ich nicht, aber das Kommandozeilenprogramm xxd zeigt auch in > hex an (/dev/ttyUSB0 ist der QinHeng Wandler, /dev/ttyUSB1 der > funktionierende): Hast du Internetanschluss? Dann kannst du dir HTerm einfach runter laden und brauchst nicht einmal irgendetwas zu installieren. Heutzutage würde man wohl sagen, dass es sich um ein tragbares Programm handelt. Und störe dich nicht dran, dass es als Beta-Version bezeichnet ist. Das ist seit 8 Jahren so. Die möglicherweise verhandenen Bugs haben es bisher auch nicht gemerkt ;-) http://www.der-hammer.info/terminal/ Wilde Zeichenfolgen sind meist ungeeignet, um systematischen Bitfehlern auf die Spur zu kommen. Um den Fehler einzukreisen, ist es sinnvoll, bestimmte Einzelzeichen oder folgen aus genau zwei Zeichen zu übertragen, um Signalpolarität, Fehler der Symbolzeit oder inkompatible Stop-Bit Anzahl gezielt zu prüfen. Sonst siehst du den Wald vor lauter Bäumen nicht. Um Zeichen auf dem Oszi zu prüfen, musst der Adapter Zeichen senden. Beim Empfang kannst du erst ganz am Ende der Übertragungskette, nämlich auf dem Terminal, kontrollieren und das macht die Sache oft unübersichtlich.
Moritz S. schrieb: > Die Vermutung hat gestimmt, die Signalpegel haben zwar TTL-Level, > sind aber tatsächlich invertiert. Eine einfache Emitterschaltung > zwischen Signalquelle und Qinheng Wandler sorgt ganz spontan für > fehlerfreie Telegramme :) > > Rufus Τ. F. schrieb: > Laut Datenblatt* gibt es einen CH340R, dessen Verhalten durch den Pegel > an Pin 17 zwischen normalem seriellen Betrieb (offen bzw. High) und > IR-Betrieb (low) umgeschaltet werden kann. > > Danke für den Tipp, das Ändern des Pegels an Pin 17 wäre eine super > Option, wenn der Chip nicht im vergossenen D-SUB9 Gehäuse stecken würde. Der Wandler hat einen dsub9, und du steuerst den mit "UART Pegeln", also TTL an?
Gast
#4725292
Simon K. schrieb: > Der Wandler hat einen dsub9, und du steuerst den mit "UART Pegeln", also > TTL an? Wird wohl! Ein TTL <-> Rs232c Wandler invertiert. (Meist) Also alles Richtig so, nur das falsche Werkzeug.
W.A. schrieb: > Dann kannst du dir HTerm einfach runter laden und brauchst nicht einmal > irgendetwas zu installieren. Heutzutage würde man wohl sagen, dass es > sich um ein tragbares Programm handelt. Mir ist Hterm durchaus bekannt, das es "tragbar" ist, war mir hingegen nicht bekannt. Arduino F. schrieb: > Simon K. schrieb: >> Der Wandler hat einen dsub9, und du steuerst den mit "UART Pegeln", also >> TTL an? > > Wird wohl! > Ein TTL <-> Rs232c Wandler invertiert. > (Meist) > Also alles Richtig so, nur das falsche Werkzeug. Alles richtig finde ich nicht. Mir sind zwei Normen bekannt: 1) RS232 mit +-3...12V, invertierte Pegel, mechanisch D-SUB9 und 2) TTL mit 0V und 5V, keine invertierten Pegel, mechanisches Interface nicht definiert (meist Pinleisten) Der Qinheng macht TTL Pegel, die aber invertiert werden müssen, um lesbar zu sein. Wie ganz oben geschrieben, habe ich zu Beginn die Pegel geprüft. Ich habe 0V/5V gesehen und gedacht "super, kein RS232, müsste alles so funktionieren."
Gast
#4725327
Moritz S. schrieb: > Wie ganz oben geschrieben, habe ich zu Beginn die Pegel geprüft. Ich > habe 0V/5V gesehen und gedacht "super, kein RS232, müsste alles so > funktionieren." Ein Irrtum! Einen Billig Wandler erwischt, der zwar invertiert, aber keine RS232C korrekten Pegel fertigt. Ein Max war dem Hersteller wohl zu teuer... (Griff ins Klo) + (falsche Annahme) = Problem ;-)
Arduino F. schrieb: > Moritz S. schrieb: > Wie ganz oben geschrieben, habe ich zu Beginn die Pegel geprüft. Ich > habe 0V/5V gesehen und gedacht "super, kein RS232, müsste alles so > funktionieren." > > Ein Irrtum! > > Einen Billig Wandler erwischt, der zwar invertiert, aber keine RS232C > korrekten Pegel fertigt. Ein Max war dem Hersteller wohl zu teuer... > > (Griff ins Klo) + (falsche Annahme) = Problem > > ;-) Da stimme ich zu! Man sieht: der Fehler ist immer da wo man ihn nicht vermutet. Hättest du alle Informationen von Anfang an reingestellt wäre das evtl früher aufgefallen. ;-)
Simon K. schrieb: > Da stimme ich zu! Man sieht: der Fehler ist immer da wo man ihn nicht > vermutet. Hättest du alle Informationen von Anfang an reingestellt wäre > das evtl früher aufgefallen. ;-) Man weiss halt nie, welche Informationen wichtig sind und welche nicht. Ich hätte auch schreiben können, dass der Wandler ein blaues Gehäuse und ein klares Kabel hat. Arduino F. schrieb: > (Griff ins Klo) + (falsche Annahme) = Problem trifft die Sache aber schon recht gut :)
Gast
#4725501
Moritz S. schrieb: > Man weiss halt nie, welche Informationen wichtig sind und welche nicht. Hmm... Ein Link zu den Dingern, hätte es sofort klar gemacht. Ich sach nur: SUB-D Moritz S. schrieb: > trifft die Sache aber schon recht gut Danke, für die Blumen.
Moritz S. schrieb: > Simon K. schrieb: >> Da stimme ich zu! Man sieht: der Fehler ist immer da wo man ihn nicht >> vermutet. Hättest du alle Informationen von Anfang an reingestellt wäre >> das evtl früher aufgefallen. ;-) > > Man weiss halt nie, welche Informationen wichtig sind und welche nicht. > Ich hätte auch schreiben können, dass der Wandler ein blaues Gehäuse und > ein klares Kabel hat. Auf dem Oszi hätte man gesehen das der IDLE Pegel falsch ist. Das hätte gereicht.
Ein Schaltplan wäre auch hilfreich gewesen. Oder mindestens ein Schaltbild.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.