mikrocontroller.net

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


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Ferber (aferber)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus Hubig (Firma: IMKO GmbH) (mhubig)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt stimmen die IRQs, aber geändert hat sich nichts :-(

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.