Linux, USB-UART, Baudrate wechseln, Verhalten von Steuerleitungen?

Gast #1586945
Lesenswert?
• ▲
▼
Wie sollte sich eine serielle Schnittstelle beim Wechsel der Baudrate 
verhalten?

Unter Linux tritt bei einem Baudratenwechsel via termios eines 
usbserial Adapters immer ein unerwünschter Wechsel des DTR-Signals 
auf. Ich benutze einen PL2303, das Problem tritt nach Hörensagen aber 
auch bei anderen Adapter auf. Evtl. ist es ein Problem mit USB?

http://www.mjmwired.net/kernel/Documentation/usb/usb-serial.txt

Und im Treiber:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.31.y.git;a=blob;f=drivers/usb/serial/pl2303.c;h=600097de714fb08f65447ed3e0b1182160e4b69c;hb=HEAD#l619

Leider ist das eine Nummer zu groß für mich. Wo ist B0 definiert?
Gast #1586953
Lesenswert?
• ▲
▼
Die manpage sagt:

The zero baud rate, B0, is used to terminate the connection.  If B0 is 
specified, the modem control lines shall no longer be  asserted. 
Normally, this will disconnect the line.
Gast #1589663
Lesenswert?
• ▲
▼
Der "Fehler" liegt im Treiber und zwar hier
pl2303.c:

622         if ((cflag & CBAUD) == B0)
623                 priv->line_control &= ~(CONTROL_DTR | CONTROL_RTS);
624         else
625                 priv->line_control |= (CONTROL_DTR | CONTROL_RTS);
626         if (control != priv->line_control) {
627                 control = priv->line_control;
628                 spin_unlock_irqrestore(&priv->lock, flags);
629                 set_control_lines(serial->dev, control);
630         } else {
631                 spin_unlock_irqrestore(&priv->lock, flags);
632         }

Beim wechsel der Baudrate ungleich "B0" wird DTR und RTS immer auf HIGH 
gesetzt, egal, ob vorher nicht gesetzt oder gesetzt.
Du müsstest dir den Treiber ohne diese Zeilen übersetzen, dann sollte es 
funktionieren.
(hab gerade dasselbe Problem)

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.