Forum: Mikrocontroller und Digitale Elektronik Daten zwischen Hterm und Arduino Mega 2560 versenden


von Thomas H. (datatom)


Lesenswert?

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

von Arduinoquäler (Gast)


Lesenswert?

Thomas H. schrieb:
> Wieso kann ich die Daten vom Arduino einwandfrei versenden, aber nicht
> auf dem Arduino einwandfrei empfangen?

Bei welcher eingestellter Baudrate?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Was erzeugt den Takt des Arduinos? Sein eingebauter RC-Oszillator, oder 
hängt da ein Quarz dran, der auch benutzt wird?

von Joachim B. (jar)


Lesenswert?

ich würde verschiedene Baudraten testen, verschwindet der Fehler bei 
niederen Baudraten hat man ein Timingproblem.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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).

von Wolfgang E. (Firma: janeeisklar) (whattheheck)


Lesenswert?

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.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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
von Joachim B. (jar)


Lesenswert?

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.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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
von Joachim B. (jar)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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 ?

von Sechtsklässler (Gast)


Lesenswert?

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.

von Joachim B. (jar)


Lesenswert?

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
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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
von 0815 (Gast)


Lesenswert?

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.

von Thomas H. (datatom)


Lesenswert?

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.

von Joachim B. (jar)


Lesenswert?

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

von jo (Gast)


Lesenswert?

>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

von Stefan F. (Gast)


Lesenswert?

> 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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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...

von Jim M. (turboj)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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
Noch kein Account? Hier anmelden.