Grüßt euch,
Fehlerbeschreibung:
ich versuche mich derzeit mit der Seriellen Schnittstelle einzuarbeiten. Beim Empfangen funktioniert alles ohne Probleme, nur wenn der Raspberry manuell Daten Übertragen soll, sendet er Teilweise wirres Zeug.
Beispielhaft:
- 9600 Baud Funktioniert ohne Probleme
- 19600 Baud kommen nur wirre Zeichen
- 115200 Baud erscheint ein Zusätzliches Zeichen beim Start
Wenn ich die Software Minicom benutze gibt es nicht einen solchen Fehler.
Fehlerursache:
Die Ursache des Fehlers ist eine vorangehendes 32us Sekunden langes Signal, wodurch das Zielsystem die Signale falsch Interpretiert
Edit: Das Signal ist immer 32us lang, auch wenn die Baudrate geändert wird. Was eigentlich nicht zur Datenübertragung passt.
Aufbau:(Raspberry B+)
Der Fehler ist ebenfalls zusehen wenn ich mit dem Oszilloskop direkt die IO Ports prüfe. Sonnst ist noch ein Max3232 dazwischen geschaltet und mit dem PC verbunden.
Das Signal wird mit den folgenden Oszilloskop gemessen: http://www.datatec.de/Keysight-MSO6034A-Oszilloskop.htm
Derzeitige Einstellungen und Vorgehensweisen:
Ich habe /boot/cmdline.txt wie in den Tutorialen angepasst:
von
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblkop2 rootfstype=ext4 $evator=deadline rootwait
in dieser Zeile geändern:
Zitatdwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblkop2 rootfstype=ext4 $evator=deadline rootwait
in /etc/inittab habe ich die Zeile auskommentiert:
Die Berechtigung für den User habe ich gesetzt:
und die geschwindigkeit für die Schnittstelle Vorgegeben(Parity, Stopbit und ähnliches passen alles):
sysop@pipaos:~$ stty -F /dev/ttyAMA0 -a
speed 115200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 5;
-parenb -parodd cs8 -hupcl -cstopb cread clocal crtscts
ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke
Die Ports sind nicht weiter in anderen Programmen konfiguriert und der Fehler tritt über die Shell oder C Programmierung auf.
z.B. mit dem Befehl:
Lösung?
Hat jemand Lösungsvorschläge?
Edit:
Der Grundzustand mit stty sane
hilft auch nicht weiter