Playersteuerung über RS232

Hallo Community!

Ich versuche, eine Steuerung für zwei Player (Tascam DV-D01U und Tascam SS-R1) über RS232 mit einem Arduino Uno zu realisieren.
Die beiden Player verwenden verschiedene Steuerungsbefehle. Die Spezifikation der Schnittstellen verlangen beide:
Baudrate: 9600 b/s
8 Datenbits
kein Paritybit
1 Stopbit

Der Plan sieht folgendermaßen aus: Ich habe einen MAX232 an die serielle Schnittstelle gesteckt und entsprechend beschaltet. Da ich damit zwei Schnittstellen verarbeiten kann, hängt der SS-R1 an der seriellen Schnittstelle des Arduino (Pin 0 und 1), der DVD-Player an den Pins 2 und 3, dieser soll mit der Library NewSoftSerial angesprochen werden. Zur Vorwahl der Track-Nummern ist eine 4fach-7Segment-Anzeige mit einem MAX7219 an Pin 4,5 und 6 angeschlossen, welche auch einwandfrei funktioniert.

Das Problem: wenn ich die NewSoftSerial einbinde und initialisiere, fängt sowohl die SoftSerial-Schnittstelle, als auch die Hardware-Serial-Schnittstelle an, Müll zu senden. Lasse ich die Zeilen für die SoftSerial weg, funktioniert die Hardware-Schnittstelle normal, abgesehen davon, dass sie ziemlich oft Frame Errors produziert. Nur verstehe ich nicht, warum die SoftSerial-Library sendet, wenn sie nichts weiter als initialisiert wird.

Vielen Dank im Voraus für eure Hinweise!
robertfranz

Und den muell sieht man am PC, oder nur an den anderen geraeten? Der baud-rate mismatch bei 16MHz und 9600bps ist eigentlich sehr klein. Stimmt die taktfrequenz deines avr?

http://www.gjlay.de/helferlein/avr-uart-rechner.html

BTW, ohne code ist die standard antwort auf alle fragen: "Das problem liegt in zeile 42!"

madworm:
.... "Das problem liegt in zeile 42!"

Komisch, bei mir ist es immer Zeile 45 :wink: :wink: :wink: oder ist mal wieder meine Kristallkugel zu verschwommen? :wink: :wink: :wink:
Grüße Uwe

Die Taktung des Arduino stimmt, ich habe den frisch aus dem Paket von rs online.

Die Geräte reagieren gar nicht, bzw. sehr selten. Bei der Analyse am PC werden ab und zu ein paar Werte falsch angezeigt, jedesmal was anderes. Ich habe so spontan im Kopf: Probleme beim Erkennen der asynchronen Kommunikation? Das Terminal gibt mir nämlich oft eine Frame error aus. Nur: standardmäßig arbeitet die Hardware-Serial-Library mit einem Stopbit, also genau nach Spezifikation.

Kann es sein, dass der Max Werte verschluckt, weil der Arduino nicht genügend Strom für Display und Max liefert?

robertfranz:
Kann es sein, dass der Max Werte verschluckt, weil der Arduino nicht genügend Strom für Display und Max liefert?

Kann sein, kann auch nicht sein.

Solange Du uns nicht den Kode und die Schaltung gibst, fischen wir im trüben.

Und solange kann alles sein oder es könnte auch nicht sein, und der Fehler liegt bestimmt in Zeile 42 oder war's die 45? :wink: :wink: :wink:

Grüße Uwe

IN ZEILE 42! Douglas Adams wusste das!

IN ZEILE 42! Douglas Adams wusste das!

:slight_smile: :slight_smile: :slight_smile: :slight_smile:

Alles was da rauskommt ist natürlich 42.
Aber robertfranz hat sicher nicht nach dem Sinn der Welt gefragt. :cold_sweat:

Das Problem: wenn ich die NewSoftSerial einbinde und initialisiere, fängt sowohl die SoftSerial-Schnittstelle, als auch die Hardware-Serial-Schnittstelle an, Müll zu senden. Lasse ich die Zeilen für die SoftSerial weg, funktioniert die Hardware-Schnittstelle normal, abgesehen davon, dass sie ziemlich oft Frame Errors produziert. Nur verstehe ich nicht, warum die SoftSerial-Library sendet, wenn sie nichts weiter als initialisiert wird.

8N1 ist meist richtig für die serielle Daten-Übertragung.
Die Probleme sind immer der Sende- & und Empfangs-Puffer. Solange Arduino/PC sendet oder empfängt, stehen die Räder still. Da hilft IMHO auch kein Interrupt.

Solange die Sende- & und Empfangs-Puffer nicht voll sind, geht nix.

MfG