UART Treiber sendet Signale wenn man sich mit dem virtuellen COM-Port verbindet

Hallo,

ich benutze ein Arduino UNO Rev 3 Board mit den neusten Treibern unter Windows 7.
Programmiert wird er in C mit der avrlibc und geflasht mit avrdude.

Nun habe ich heute einen UART Rx Interrupt implementiert und mir ist aufgefallen, dass der AVR Zeichen empfängt, sobald ich in HTerm auf “Connect” klicke.
Zeichen werden bei einer Baudrate von 19200Bd und auch 38400Bd erkannt. Bei einer Baudrate von 9600Bd dahingegen nicht. Andere Baudraten habe ich nicht getestet. Die in HTerm eingestellte Baudrate spielt hierbei keine Rolle. Es werden immer Signale beim connecten gesendet. Im Anhang könnt ihr einen Screenshot der Signale sehen.
Mit einem anderen Terminal Program (putty) werden beim Verbinden auch Signale gesendet. Allerdings nicht 12 sondern nur 2 “Bit”.
Da die Daten offensichtlich keine gültigen RS232 Daten sind, konnte ich mir Abhilfe schaffen, indem ich auf Paritäts und Framingerrors in der UART ISR entsprechend reagiere. Das ist aber nicht wirklich befriedigend. Ich würde gerne wissen, wieso diese Daten gesendet werden und ob man dieses Verhalten deaktivieren kann.

Ich vermute es handelt sich hierbei im irgendwelche synchronisations Bits für automatische Baudratenerkennung.
Weiß jemand genaueres?

Viele Grüße
Daniel

Hallo, bei den TermProgrammen ist es ja so, dass sie sich auf die "Lauer" legen. Sobald sie eine Verbindung entdecken, fragen sie "wer da". Da sendet jedes TermProgramm seinen eigenen InitString. In den Tiefen der seriellen Komminikation sollte man das aber mit "automatisch Verbinden"- nein, unterdrücken können. Gruß und Spaß Andreas

Hallo Andreas,

danke für die Antwort. Ich habe das gerade überprüft. Meine echte UART des PCs (COM1) und auch ein handelsüblicher USB<->seriell Wandler sendet keine Signale beim Verbinden. Es muss irgendwas anderes sein :frowning:

Nachtrag: Auch mit einem simplen Programm, welches einfach nur die serielle Schnittstelle vom Arduino unter Windows mittels CreateFile() und SetCommState() öffnet, werden wie bei putty 2 dieser Signale gesendet.

Scheint ein Bug in der Firmware zu sein.

Mehr dazu hier: http://forum.arduino.cc/index.php?topic=219344.0