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
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.
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 ;-)
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.