INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Serielle Schnittstelle
08.04.2015, 14:01
Beitrag #1
Serielle Schnittstelle
Hallo Arduino Forum,
seit heute gehöre ich mit zur Arduino Gemeinschaft Smile und habe schon gleich eine Frage:
Ich möchte einen Arduino Mega über die serielle Schnittstelle an eine DCC-Zenrale (Modelleisenbahn) anschließen. Zum Steuern werden Strings in HEX verwendet. So lautet z.B. der String für "alles AN": 2181A0. Das funktioniert über die Ausgabe Serial.println("2181A0") auch hervorragend, solange ich mit 9600 Baud arbeite und mir den String über den seriellen Monitor in der IDE anschaue. Bei gleichem Programm mit 19200 Baud ist im String aber schon bereits ein eigenartiges Zeichen vorangestellt, ein y mit 2 Punkten (Trema), das von mir nicht gesendet wird.
Ganz daneben wird es mit allen versuchten Baudraten, wenn ich die Anschlüsse Tx0 und Rx0 auf eine serielle Schnittstelle meines PC (über USB-Wandler) ausgebe und mir die Daten in einem Terminal-Programm (ich verwende HTerm) ansehe. Die Zeichen, die ich da sehe, haben keinerlei Ähnlichkeiten mit denen, die mir der IDE Monitor zeigt. Folgerichtig erkennt auch die Zentrale diese Strings nicht als verständlichen Befehl an. Siehe Beispiele im angehängten ODT Dokument.
Hat jemand von Euch eventuell eine Idee, was ich falsch machen könnte? Auch ein anderes Terminalprogramm zeigt den gleichen Effekt.

Baudrate habe ich auf beiden Seiten jeweils geändert und die Parameter auf 8N1 belassen.

Gruß
Tourbiker
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.04.2015, 14:34
Beitrag #2
RE: Serielle Schnittstelle
Hi,
das Trema-y kommt bei mir auch manchmal beim Start vor. Ich glaube, dass das daran liegt, dass der Arduino von der IDE einen Reset bekommt wenn der serielle Monitor gestartet wird. Das sollte aber im Betrieb kein groesseres Problem machen.
Ansonsten hat bei mir bisher die serielle bis zu Baudraten von 115200 wunderbar funktioniert, sogar ueber Bluetooth.
Zeig doch mal Deinen Sketch, vielleicht laesst sich da was erkennen.
Moeglicherweise ist aber auch am Systemtakt was faul. Bei niedrigen Baudraten ist das fast egal, aber je hoeher die Baudrate desto genauer muss das passen.
Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.04.2015, 14:57
Beitrag #3
RE: Serielle Schnittstelle
...schon mal gecheckt ob außer der Baudrate auch die Zeichenlänge...6,7,8,9 Bits und Parity, Anzahl der Stoppbits (selten wichtig) auf beiden Seiten übereinstimmt ?
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.04.2015, 14:58 (Dieser Beitrag wurde zuletzt bearbeitet: 08.04.2015 15:03 von tourbiker.)
Beitrag #4
RE: Serielle Schnittstelle
Hallo Thorsten, vielen Dank für die schnelle Antwort.
Du hast schon mal mit dem Trema-y recht. Wenn ich den String in einer Schleife ausgebe, erscheint das Zeichen nur beim allerersten Mal. Danach ist alles ok. Es scheinen allerdings 2 Zeichen zu sein, ein Leerzeichen und dann das y.

Gut, das kann ich im Programm einplanen. An der Darstellung im HTerm hat sich allerdings nichts geändert. Es sind immer wieder dieselben "falschen" Zeichen, die angezeigt werden. Das kenne ich von früher, wenn die Schnittstellenparameter nicht stimmten, Baud oder Parity oder ...ich kann aber keinen Zusammenhang erkennen. Auch, wenn ich nur 1 Zeichen sende "A" und ändere das in "B" liegt der angezeigte Wert total woanders, obwohl er ja nach ASCII direkt daneben liegen sollte. Hast Du mal das ODT File anschauen können? (Libreoffice oder Openoffice).
Das Programm kann ich gerne senden, es sind aber wirklich nur 2 Zeilen, die die serielle Kommunikation betreffen:
Serial.begin(19200);
Serial.println("....");

Gruß
Michael (tourbiker)

Hallo Bitklopfer,
ja, hatte ich gecheckt. Im ODT-Anhang ist ein Screenshot mit den eingestellten Werten 19200,8,N,1.

Könnte tatsächlich der MEGA mit einer falschen Taktfrequenz laufen? Der hat doch 16 MHz, kann ich ja mal mit AVR Studio überprüfen.

Gruß
Micha
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.04.2015, 15:17
Beitrag #5
RE: Serielle Schnittstelle
(08.04.2015 14:58)tourbiker schrieb:  Hast Du mal das ODT File anschauen können? (Libreoffice oder Openoffice).
Erstens hast Du nichts angehaengt und zweitens koennte ich es hier nicht oeffnen.

Zitat:Das Programm kann ich gerne senden, es sind aber wirklich nur 2 Zeilen, die die serielle Kommunikation betreffen:
Der Punkt sind vielleicht die Zeilen, die Deiner Meinung nach die serielle Kommunikation nicht betreffen. Zeig uns das mal.
...oder schreib einen Sketch, der wirklich gar nichts anderes tut als etwas ueber die serielle zu schicken. Er sollte nicht einmal irgendwelche #include haben.

Zitat:Könnte tatsächlich der MEGA mit einer falschen Taktfrequenz laufen? Der hat doch 16 MHz, kann ich ja mal mit AVR Studio überprüfen.
Besser mal ein delay(120000) oder so mit der Stoppuhr ueberpruefen.

Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.04.2015, 17:11
Beitrag #6
RE: Serielle Schnittstelle
(08.04.2015 15:17)Thorsten Pferdekämper schrieb:  ....der Stoppuhr ueberpruefen.

Gruss,
Thorsten

oder einen Port setzen und rücksetzen und den Impuls mit nem anderen Ardi mit pulseIn() messen. Am besten man hat mehrere System zum Vergleichen.
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.04.2015, 08:15
Beitrag #7
RE: Serielle Schnittstelle
Hallo,

1. Frage: Warum reichen Dir die 9600Baud nicht aus? Das ist eine übliche Einstellung.
2. Frage: was kann Dein Gegenüber, also der Empfänger in der Anlage?
Ist der fest auf 9600 eingestellt oder kann man den überhaupt konfigurieren?
Es gibt auch Techniken, die sind flexibel wie eine Eisenbahnschwelle. Check doch mal bitte die Parameter des Empfängers.
wie oben schon berichtet, kommen komische Sonderzeichen von einer falschen Parametrierung.

Gruß Franz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.04.2015, 15:26
Beitrag #8
RE: Serielle Schnittstelle
Hallo alpenpower,

das Gegenstück arbeitet leider nur mit 19200. Ich habe aber - so glaube ich - das Problem gelöst. Die serielle Schnittstelle benötigt mehr als die 3.3 V des Arduino. Mit einem kleinen Transistor als Verstärker auf 5 V dazwischen kommen die Signale so an, wie sie sein sollten.

Vielen Dank an alle, die so hilfreiche Ideen hatten.

LG Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Serielle Schnittstelle - Daten empfangen Datatom 8 774 22.05.2016 18:10
Letzter Beitrag: avoid
  wie Parameter der seriellen Schnittstelle anpassen? avoid 6 481 29.04.2016 16:44
Letzter Beitrag: avoid
  "WORT" über die serielle Schnittstelle auslesen hannes77 1 524 08.03.2016 12:13
Letzter Beitrag: Binatone
  Serielle Ausgabe, Reset ? Mathias 1 596 12.11.2015 18:12
Letzter Beitrag: hotsystems
  Serielle Kommunikation arduino147147 1 666 15.10.2015 08:22
Letzter Beitrag: Binatone
  Serielle Kommunikation zw. zwei Arduino UNOs Marduino_UNO 2 1.109 20.08.2015 07:13
Letzter Beitrag: Marduino_UNO
  Serielle Asugabe probleme samedtopal 3 774 27.03.2015 10:48
Letzter Beitrag: Thorsten Pferdekämper
  Anzahl der Schritte per Serielle Schnittstelle an Arduino übergeben raspido 0 444 21.03.2015 11:27
Letzter Beitrag: raspido
  Serielle Kommunikation neben Programmablauf "parallel" ausführen bits10 1 801 16.03.2015 22:32
Letzter Beitrag: Bitklopfer
  Serielle Kommunikation verschluckt Buchstaben bushi 0 514 17.02.2015 14:36
Letzter Beitrag: bushi

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste