/dev/ttyS1 Probleme mit Baudrate

OP #386008
Lesenswert?
• ▲
▼
Hallo,

ich habe da ein Problem, wo ich nicht weiterkomme.

Ich benutze einen AVR Mikrokontroller zum Senden von Daten
auf die serielle Schnittstelle meines Linux PC's.

Zuerst stellte ich im AVR eine Baudrate von 1200 ein, aber unter Linux
bekomme ich per

>cat /dev/ttyS1

keine Daten angezeigt. Die Schnittstelle habe ich mit

>stty 1200 cs8 -parenb -crtscts -echo -F /dev/ttyS1

konfiguriert.
Da auch auf dem Rechner W2K drauf ist, konnte ich feststellen, daß
jedenfalls bei Hyperterminal die Zeichen bei eingestellten 1200 Baud
korrekt ankommen.

Unter Linux ändert sich die Interruptanzahl der Schnittstelle
(grep serial /proc/interrupts), aber es werden keine Zeichen
angezeigt.

Jetzt habe ich die Baudrate des AVR's auf 115000 erhöht, und plötzlich
erhalte ich auch unter Linux die korrekten Zeichen, obwohl die Baudrate
unter Linux per stty immer noch bei 1200 steht .

Wieder Windows gebootet, und unter Hyperterminal sind es auch
115000 Baud, wo die Zeichen korrekt ankommen.

Jetzt habe ich mal unter Linux die Baudrate abgeändert, und schon
funktioniert es nicht mehr -> meine Einstellungen werden anscheinend
übernommen .

Warum muß ich unter Linux 1200 Baud einstellen, damit eine Baudrate von
115000 Baud empfangen wird ????

Der AVR läuft definitiv mit externem Quarz bei 16Mhz.

echt ratlos

Jogibär
Gast #386009
Lesenswert?
• ▲
▼
Also ich habe bei mir unter Linux die Einstellungen für die serielle
folgendermaßen vorgenommen:

stty ospeed 1200 ispeed 1200 -crtscts -parenb cs8 < /dev/ttyS0

Ich weiß nicht ob es einen Unterschied macht die Einstellugnen mittels
der -F Option einzustellen. Bei mir funktioniert es jedenfalls so.
Ob die Einstellungen übernommen wurden kann man sich auch mit:

stty -a < /dev/ttyS0

anzeigen lassen.
Probleme treten auf, wenn noch andere Programme im Hintergrund laufen
die auf die serielle Schnittstelle zugreifen. Das "Mitlauschen"
mittels cat hat bei mir nicht funktioniert.
Gast #386010
Lesenswert?
• ▲
▼
Mit dem -F Schalter funktioniert es auch, die hast es nur in der
falschen Reihenfolge benutzt.
Mit:

stty  -F /dev/ttyS1 1200 cs8 -parenb -crtscts -echo

funktioniert die Einstellung der Schnittstelle ebenfalls.

PS:
Eigentlich ist die Standardantwort auf Linuxfragen ja:
RTFM ;-)
Gast #386011
Lesenswert?
• ▲
▼
Hallo,

weder noch.

Bei meinem Laptop funktioniert es wie gewünscht mit meinen
Einstellungen.
Die Ursache scheint zu sein, daß in meinem PC eine serielle
Schnittstellenkarte eingebaut ist.
Wie ich im Internet gelesen habe, kann es sein, daß diese karte mit
einer anderen Frequenz arbeitet, als es Linux annimmt.
Deshalb muß man irgendwie Linux sagen, welchen Teiler er nehmen soll.
Ich weiß aber nicht, ob dies was mit setserial DIVISOR zu tun hat.

Jogibär

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.