Forum: Mikrocontroller und Digitale Elektronik Probleme beim RS232-Daten empfangen (Linux)


von Markus (Gast)


Lesenswert?

Hallo,

ich versuche verzweifelt, über die serielle Schnittstelle Daten von 
einem LPC2378STK Board (Olimex) zu empfangen. Das ganze klappt unter 
Windows mit hyperterm am gleichen Rechner einwandfrei. Habs unter Linux 
schon mit minicom, cat und hterm versucht immer das Gleiche.
kommen sollte :

Uart initialized.
wait for link...linked.

Statt dessen kommt z.B
tializedfor link

oder auch mal andere Teile.

hyperterminal läuft mit 9600 Bd, 8N1, kein Flow Control
Auch in minicom sind hard- und software flow control aus.
Aber ich vermute, es hat damit was zu tun?
Die anderen Parameter in Minicom sind Gleich (9600, 8N1), aber daran 
sollte es ja kaum liegen, ich empfang ja einige Buchstaben korrekt.

Hier mal noch die Ausgabe von "stty -aF /dev/ttyS0":

speed 9600 baud; rows 0; columns 0; line = 0;
intr = <undef>; quit = <undef>; erase = <undef>; kill = <undef>; eof = 
<undef>; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = 
<undef>;
stop = <undef>; susp = <undef>; rprnt = <undef>; werase = <undef>; lnext 
= <undef>; flush = <undef>; 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


vielleicht könnt ihr mir ja helfen?

Viele Dank
Markus

von Εrnst B. (ernst)


Lesenswert?

CR/LF-Problem?

Ctrl-A, A :
Toggle 'Add Linefeed' on/off. If it is on, a linefeed is added before 
every carriage return displayed on the screen.

von Markus (Gast)


Lesenswert?

Hi,
danke für die schnelle Antwort.
CR/LF hab ich mir auch schon überlegt, aber ich kann das glaube ich 
durch hterm ziemlich ausschließen. Dort wird mir jedes byte einzeln auch 
als hex usw. angezeigt. Und da kommt genau das gleiche.
Oder gibts irgendwo, tief in den ttySx Einstellungen auch nochmal sowas 
wie CR/LF? Also irgendwie vermute ich ja was mit Flow-Control da einfach 
ein paar Zeichen am Stück unterschlagen werden.

Vielleicht noch jemand eine Idee wo ich nachschauen könnte?

Danke

Markus

von Andreas F. (aferber)


Lesenswert?

Was sagt denn "setserial -ga /dev/ttyS0"?

Eventuell hat Linux den UART falsch erkannt, und benutzt deshalb den 
FIFO nicht. In diesem Fall kann es helfen, den FIFO-Typ mit setserial 
manuell zu setzen: "setserial /dev/ttyS0 uart 16550A". 16550A sollte bei 
den meisten Rechnern aus diesem Jahrtausend funktionieren, ansonsten mal 
noch andere UART-Typen ausprobieren (siehe setserial-Manpage).

Andreas

von Markus (Gast)


Lesenswert?

setserial -ga /dev/ttyS0
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4
  Baud_base: 115200, close_delay: 50, divisor: 0
  closing_wait: 3000
  Flags: spd_normal skip_test

auch während minicom läuft. Bin aber sehr sicher, da gestern abend auch 
die 9600 gesehen zu haben.
Was mich erstanunt ist, dass hwinfo 2 Serial controller findet, auf 
ttyS0 und ttyS2. Und wenn ich auf ttyS2 mit minicom höre bekomme ich 
auch Daten, allerding nur "?". Die Daten stammen auch irgendwie vom 
Board, kommen nämlich nur wenn ich es anschalte.

Hier mal die 2 controller in hwinfo:


48: None 00.0: 0700 Serial controller (16550)
  [Created at serial.74]
  UDI: /org/freedesktop/Hal/devices/pnp_PNP0501_serial_platform_0
  Unique ID: S_Uw.3fyvFV+mbWD
  Hardware Class: unknown
  Model: "16550A"
  Device: "16550A"
  Device File: /dev/ttyS0
  I/O Ports: 0x3f8-0x3ff (rw)
  IRQ: 4 (509 events)
  Config Status: cfg=new, avail=yes, need=no, active=unknown

49: None 00.2: 0700 Serial controller (16550)
  [Created at serial.74]
  UDI: 
/org/freedesktop/Hal/devices/platform_serial8250_serial_platform_2
  Unique ID: ML+2.3fyvFV+mbWD
  Hardware Class: unknown
  Model: "16550A"
  Device: "16550A"
  Device File: /dev/ttyS2
  I/O Ports: 0x3e8-0x3ef (rw)
  IRQ: 4 (509 events)
  Config Status: cfg=new, avail=yes, need=no, active=unknown

Ein weiteres Phänomen fällt mir gerade ein:
Vor ein paar Wochen hab ich schon mal wild Daten über RS232 an den 
Laptop geschickt. Nach ein paar Sekunden ist dieser dann immer 
heruntergefahren. Werd mal im Bios schauen was da eingestellt ist. Habt 
ihr sonst noch eine Idee?

Vielen Dank und viele Grüße
Markus

von Markus H. (Firma: IMKO GmbH) (mhubig)


Lesenswert?

Hi Markus,

minicom & hterm zeigen den gleichen Fehler? Dann liegt's eher nicht an
der Software. Ich benutze unter Linux gerne jpnevulator
(http://jpnevulator.snarl.nl/) kannst ja auch mal damit ausprobieren.

Ansonsten könntest Du mal einen USB->RS232 Adapter ausprobieren, um
herauszufinden ob deine serielle Schnittstelle einen Macken hat.

Was für eine Linux Distribution nutzt Du denn?

- Markus

von Markus (Gast)


Lesenswert?

Ich glaub ich bin dem Fehler jetzt auf der Spur:
Die beiden Seriellen Controller (ttyS2 müsste IR sein) nutzen beide 
IRQ4. In Windows ist aber der IR-Port auf IRQ3. wenn ich das jedoch mit 
setserial umstelle ändert sich nichts, hwinfo zeigt auch immer noch 
beide mit IRQ4 an.
Weiß jemand vielleicht auswendig, wo ich das dauerhaft einstellen kann?

Danke

Grüße Markus

von Markus (Gast)


Lesenswert?

Jetzt stimmen die IRQs, aber geändert hat sich nichts :-(

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.