Hallo zusammen, ich sende von meinem Arduino Mega 2560 über TX1 Daten zu Hterm auf meinem Laptop. Das klappt einwandfrei. Die Daten die ich von meinem Laptop aus sende, kommen zwar am Arduino am Pin RX1 an, aber der Inhalt stimmt nicht mehr. Beispiel: Wenn ich 998 vom Laptop aus sende, kommt NNj beim Arduino an. Zwischen dem Arduino Mega 2560 und dem Laptop ist ein TTL auf RS232 Converter. Der Arduino Mega 2560 sendet und empfängt Daten über TTL. Wieso kann ich die Daten vom Arduino einwandfrei versenden, aber nicht auf dem Arduino einwandfrei empfangen? Vielen Dank für eure Hilfe. Grüße datatom
Thomas H. schrieb: > Wieso kann ich die Daten vom Arduino einwandfrei versenden, aber nicht > auf dem Arduino einwandfrei empfangen? Bei welcher eingestellter Baudrate?
Was erzeugt den Takt des Arduinos? Sein eingebauter RC-Oszillator, oder hängt da ein Quarz dran, der auch benutzt wird?
ich würde verschiedene Baudraten testen, verschwindet der Fehler bei niederen Baudraten hat man ein Timingproblem.
Thomas H. schrieb: > Wieso kann ich die Daten vom Arduino einwandfrei versenden, aber nicht > auf dem Arduino einwandfrei empfangen? So wie du das beschrieben hast, kann es nur am TTL->USB Adapter liegen. Ich würde es zuerst mit einem anderen Adapter probieren oder die Spannungen kontrollieren (3V3 oder 5V).
Thomas H. schrieb: > Beispiel: Wenn ich 998 vom Laptop aus sende, kommt > NNj beim Arduino an. Ich vermute auch ein Timing-Problem. Schick doch mal einen längeren String zum Arduino und untersuche, ob das was beim Arduino ankommt, eine reproduzierbare Regelmäßigkeit bei den Bit-Verschiebungen aufweist.
Joachim B. schrieb: > ich würde verschiedene Baudraten testen, verschwindet der Fehler bei > niederen Baudraten hat man ein Timingproblem. Wolfgang E. schrieb: > Ich vermute auch ein Timing-Problem. Kaum. Das, was gesendet worden ist (9 oder 0x39) und das, was angekommen ist (N oder 0x4E), hat mit Timing oder falscher Baudrate nichts zu tun (LSB wird zuerst gesendet). Das ist ein Hardware Fehler - ob Leitung, Verbindung oder USB-TTL Adapter, ist vorerst egal.
:
Bearbeitet durch User
Thomas H. schrieb: > Zwischen dem Arduino Mega 2560 und dem Laptop ist ein TTL auf RS232 > Converter. Marc V. schrieb: > So wie du das beschrieben hast, kann es nur am TTL->USB Adapter > liegen. woher weisst du von einem USB Adapter? (Glaskugel?) Ich nehme gerne MAX3232 und nicht immer USB! Marc V. schrieb: > Ich würde es zuerst mit einem anderen Adapter probieren oder > die Spannungen kontrollieren (3V3 oder 5V). das kann man testen so man mehrere hat! Marc V. schrieb: > Kaum. > Das, was gesendet worden ist (9 oder 0x39) und das, was angekommen ist > (N oder 0x4E), hat mit Timing oder falscher Baudrate nichts zu tun > (LSB wird zuerst gesendet). das kann man erst mal nicht ausschliessen und bevor man weitere Hardware kaufen muss ist eine schrittweise Verringerung der beiderseitigen Baudrate ein legitimer Test der weitere Erkenntnisse bringt.
Joachim B. schrieb: > woher weisst du von einem USB Adapter? (Glaskugel?) > Ich nehme gerne MAX3232 und nicht immer USB! Mein Fehler, weil es sich um einen Laptop handelt. Ich persöhnlich habe schon seit 10 Jahren kein Laptop mit Serport gesehen. Und wenn es sich tatsächlich um einen RS232-TTL Adapter handelt, noch dazu aus China, braucht er gar nicht weiter zu suchen... > das kann man testen so man mehrere hat! > das kann man erst mal nicht ausschliessen und bevor man weitere Hardware > kaufen muss ist eine schrittweise Verringerung der beiderseitigen > Baudrate ein legitimer Test der weitere Erkenntnisse bringt. Erstens: Warum schreist du dauernd ? Zweitens: Ja, das kann man mit ein bisschen Logik ausschliessen. Ein gesendetes Byte wird vom Empfänger in bestimmten Zeitabständen abgetastet. Eine gesendete Null (0x00) kann beim Empfänger niemals 0xAA ergeben, egal bei welcher Baudrate, genauso kann eine gesendete 0x39, egal bei welcher Baudrate niemals 0x4E ergeben. So etwas kann nur bei Hardware Fehlern auftreten. Etwas klarer ? P.S. Gerade mit RS232-TTL Adaptern aus China braucht man Baudraten > 38400B gar nicht erst zu versuchen, insofern kann eine Baudratenverminderung tatsächlich helfen, hat aber mit dem eigentlichen Problem gar nichts zu tun.
:
Bearbeitet durch User
Marc V. schrieb im Beitrag #4803396:
> Etwas klarer ?
ich verstehe nun was du meinst (bis auf das Schreien)
Klar behebt man nicht die Ursachen, aber ich hoffe wir sind uns einig
das Sender und Empfänger verschiedene Toleranzen bei der Baudrate haben
können, deswegen wenn es ein Problem im Timing gibt runter, zur Not bis
300 Bd, wenn das Problem der fehlerhaften Übertragung verschwindet ist
es Timing, wenn nicht ist es Hardware.
Ok, ich fang mal von hinten her an zu löschen. Wenn ein Kollateralschaden dabei ist: kann passieren. Und das Thema "Schreien im Internet" könnt ihr bitte privat oder im OT dikutieren. Und jetzt: bitte weiter im Thema. Zur Fehlersuche einfach mal 0000111122223333444455556666777788889999 senden und schauen, was ankommt. Dann das Bitmuster anschauen und Nachdenken.
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Und jetzt: bitte weiter im Thema. Joachim B. schrieb im Beitrag #4803386: >> Gerade mit RS232-TTL Adaptern aus China braucht man Baudraten > 38400B >> gar nicht erst zu versuchen, insofern kann eine Baudratenverminderung >> tatsächlich helfen, > > ja was denn nun, erst widersprichst du, dann wieder nicht? Das ist etwa so, wie bei einem abgefahrenem Reifen und Regen - langsamer fahren hilft tatsächlich... Joachim B. schrieb im Beitrag #4803386: >> hat aber mit dem eigentlichen Problem gar nichts >> zu tun. > > ach was........ beseitigt aber die Ursache nicht... Ich glaube das war nicht offtopic, kann aber vielleicht bei der Fehlersuche helfen. Zum senden und empfangen wird der gleiche Quartz benutzt, irgendwie macht es keinen Sinn, dass das eine klappt und das andere nicht. Wenn die Baudrate beim senden stimmt, warum soll sie beim Empfang falsch sein ?
Joachim B. schrieb: > ich würde verschiedene Baudraten testen, verschwindet der Fehler bei > niederen Baudraten hat man ein Timingproblem. Meinst du, ein Taktratenfehler von beispielsweise 3 Prozent mutiert bei niedrigerer Baudrate plötzlich zu nur noch 1 Prozent? Wenn ich das mit dem Dreisatz richtig verstanden habe, bist du da auf dem Holzweg.
Sechtsklässler schrieb: > Wenn ich das mit dem Dreisatz richtig verstanden habe, bist du da auf > dem Holzweg. ich weiss es schlicht nicht, weil Fehler beim Sender oder Empfänger sein können, nur weil der Sender noch grad im Toleranzbereich des Empfängers liegen muss es umgekehrt nicht genauso sein. Vielleicht entdecke ich mal den Zusammenhang, aber momentan rätsel ich grad nur so. Der TO kann noch mehr hardware kaufenn oder probieren, er könnte auch mal die Baudrate beiderseits runterstellen, verschwindet der Fehler nicht kann er sich um die Hardware weiter kümmern. Marc V. schrieb: > P.S. > Gerade mit RS232-TTL Adaptern aus China braucht man Baudraten > 38400B > gar nicht erst zu versuchen, insofern kann eine Baudratenverminderung > tatsächlich helfen, nichts weiter meinte ich. Auch wissen wir noch nichts über die Verkabelung, jeder Sender muss nicht die gleiche Treiberfähigkeit (Kabelkapazität) besitzen was zu verschliffenen Impulsen führen kann.
:
Bearbeitet durch User
Joachim B. schrieb: > Auch wissen wir noch nichts über die Verkabelung, jeder Sender muss > nicht die gleiche Treiberfähigkeit (Kabelkapazität) besitzen was zu > verschliffenen Impulsen führen kann. Das kann natürlich auch sein, kommt aber im Endeffekt auf das Gleiche hinaus: Hardware und nicht die Baudrate. Aber der TO meldet sich nicht mehr, vielleicht ist er nach China geflogen, um neue Kabel und Adapter zu besorgen, Lufthansa streikt...
:
Bearbeitet durch User
Ein Arduino Mega 2560 hat 4 Serielle Schnittstellen. ES kann mit einem einzigen Drahtbügel ein Ausgang mit einen Engang verbunden werden. Eine mögliche Fehlerquelle -Treiberlaufeit- wird eliminiert.
Thomas H. schrieb: > Hallo zusammen, > > ich sende von meinem Arduino Mega 2560 über TX1 Daten zu Hterm auf > meinem Laptop. Das klappt einwandfrei. Die Daten die ich von meinem > Laptop aus sende, kommen zwar am Arduino am Pin RX1 an, aber der Inhalt > stimmt nicht mehr. Beispiel: Wenn ich 998 vom Laptop aus sende, kommt > NNj beim Arduino an. > > Zwischen dem Arduino Mega 2560 und dem Laptop ist ein TTL auf RS232 > Converter. Der Arduino Mega 2560 sendet und empfängt Daten über TTL. > > Wieso kann ich die Daten vom Arduino einwandfrei versenden, aber nicht > auf dem Arduino einwandfrei empfangen? > > Vielen Dank für eure Hilfe. > > Grüße > > datatom Hallo zusammen, noch einmal ein Nachtrag zu meiner Konstruktion. Ich übertrage die Daten folgendermaßen: Arduino Mega 2560 <--> TTL-RS232-Konverter <--> RS232-USB-Konverter <--> Laptop. Ich habe die Baudraten mehrmals geändert, aber das Ergebnis war das selbe. Mit folgender Konstruktion klappt das Übertragen der Daten: Arduino <--> TTL-USB-Konverter <--> Laptop Wahrscheinlich funktioniert wirklich der TTL-RS232-Konverter nicht richtig. Ich brauche aber die erste Konstruktion, da der Arduino nicht mit dem Laptop kommunizieren soll, sondern mit einem GSM-Modul, welches nur einen seriellen Anschluß hat. Folgendes Produkt habe ich bei Conrad erworben: https://www.conrad.de/de/seriell-adapter-1x-d-sub-stecker-9pol-1x-d-sub-buchse-9pol-0-m-schwarz-1171005.html Vielleicht kann mir jemand ein Produkt, ohne Gewährleistung natürlich, empfehlen. Vielen Dank.
Thomas H. schrieb: > Mit folgender Konstruktion klappt das Übertragen der Daten: > > Arduino <--> TTL-USB-Konverter <--> Laptop wenn du nun noch Daten der Konverter nennen würdest wären wir weiter einige 232 sind zickig, wollen genaue 5V, mit MAX3232 hätte man immerhin die Bandbreite 3V - 5V, aber obacht MAX3232 sind mir schon mal gestorben wenn man die vor Ihrer Versorgung an kräftige RS232 klemmt. Thomas H. schrieb: > Arduino Mega 2560 <--> TTL-RS232-Konverter <--> RS232-USB-Konverter <--> > Laptop. Thomas H. schrieb: > Folgendes Produkt habe ich bei Conrad erworben: > > https://www.conrad.de/de/seriell-adapter-1x-d-sub-stecker-9pol-1x-d-sub-buchse-9pol-0-m-schwarz-1171005.html sag ich doch: MAX 232 einige 232 sind zickig, wollen genaue 5V, ich nehme lieber MAX3232 klein und im Dutzend billiger http://www.ebay.de/itm/2PCS-Mini-RS232-Level-Turn-TTL-Board-MAX3232-Electric-Serial-Converter-Modul-/272296158546?hash=item3f661da552:g:Ub0AAOSwgY9Xejiy http://www.ebay.de/itm/2-5-10-15-20Stks-RS232-MAX3232-Level-to-TTL-Level-Module-Board-Converter-Adaptor-/272413019707?var=&hash=item3f6d14ce3b:m:mi5_ufQQ-iLlPKwdnJKhYoQ http://www.ebay.de/itm/5PCS-MAX3232-MAX3232CSE-Serial-Port-Mini-RS232-to-TTL-Adapter-Module-Converter-C-/272037300424?hash=item3f56afc8c8:g:y7cAAOSwuzRXdhF8 oder mit Buchse, Doppelpack http://www.ebay.de/itm/2PCS-MAX3232-RS232-To-TTL-Converter-Module-COM-Serial-Port-Board-max232-/401087384806?hash=item5d62abcce6:g:OUwAAOSwiYFXIIhG vermutlich auch im Dutzend billiger
>Meinst du, ein Taktratenfehler von beispielsweise 3 Prozent mutiert bei >niedrigerer Baudrate plötzlich zu nur noch 1 Prozent? Ja natürlich ist das so: http://www.gjlay.de/helferlein/avr-uart-rechner.html Gruß J
> Meinst du, ein Taktratenfehler von beispielsweise 3 Prozent mutiert > bei niedrigerer Baudrate plötzlich zu nur noch 1 Prozent? Kommt auf die Kombination von Quarz und Baudrate an. Bei einem 14,7Mhz Quarz werden alle gängigen Baudraten mit gleicher Präzision erzeugt. Meinem einem 8Mhz Quarz sieht das aber schon anders aus.
Thomas H. schrieb: > Arduino Mega 2560 <--> TTL-RS232-Konverter <--> RS232-USB-Konverter <--> > Laptop. > Arduino <--> TTL-USB-Konverter <--> Laptop > Wahrscheinlich funktioniert wirklich der TTL-RS232-Konverter nicht > richtig. Wahrscheinlich kannst aber nur du das bewerten, weil nur du den Typ und die Bestellbezeichung dieser Konverter kennst... Sechtsklässler schrieb: > Joachim B. schrieb: >> ich würde verschiedene Baudraten testen, verschwindet der Fehler bei >> niederen Baudraten hat man ein Timingproblem. > Meinst du, ein Taktratenfehler von beispielsweise 3 Prozent mutiert bei > niedrigerer Baudrate plötzlich zu nur noch 1 Prozent? Du hast bei deinem Dreisatz aber nicht beachtet, dass Bausteine eine asymmetrische Verzögernung haben können. Wenn z.B. die fallende Flanke um 1us verzögert wird, die steigende aber um 5us, dann wirkt sich das bei 100kBd sicherlich störend aus, bei 9600 aber gar nicht...
jo schrieb: >>Meinst du, ein Taktratenfehler von beispielsweise 3 Prozent mutiert bei >>niedrigerer Baudrate plötzlich zu nur noch 1 Prozent? > > Ja natürlich ist das so: [...] Äpfel, Birnen. Der systematische Fehler durch den Integer Teiler ist kleiner, aber der Fehler durch den falschen Basistakt des AVRs bleibt gleich. Den Integer Teiler Fehler kann man bei modernen USB UARTs durch geeignete Wahl der Baudrate ausgleichen, da die i.d.R. auch non-Standard Baudraten können. Aber falls der RC Oszillator weit genug weg driftet geht auch 9600 Baud nicht mehr. Kann bei Winter Wetter im Keller oder Dachboden durchaus passieren.
Nicht jede niedrigere Baudrate provoziert geringere Fehler, aber es gibt Baudraten, die sich besser aus dem Systemtakt ableiten lassen als andere. Die Tabellen mit den jeweiligen Baudratenfehlern in Abhängigkeit vom Systemtakt und der gewünschten Baudrate sollten im Datenblatt zu finden sein. Ein schöner Baudratenrechner für AVRs findet sich hier: http://www.gjlay.de/helferlein/avr-uart-rechner.html
Thomas H. schrieb: > Vielleicht kann mir jemand ein Produkt, ohne Gewährleistung natürlich, > empfehlen. Funktionierten bisher alle bei mir einwandfrei: https://www.aliexpress.com/item/RS232-to-TTL-Female-Serial-TTL-serial-module-Brush-board-MAX3232-chip-line-to-send-Dupont/32467368742.html Funktionierten 50/50 (Warum auch immer): https://www.aliexpress.com/item/MCU-mini-RS232-MAX3232-level-to-TTL-level-converter-board-serial-converter-board-module/32465706052.html P.S. Wie schon oben angemerkt, bis 38400B gehen alle ohne Probleme.
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.