Forum: PC Hard- und Software COM Port pin DTR will nicht so wie ich das will


von Ben S. (theben)


Lesenswert?

Hallo Leute!

Ich baue mir gerade ein Tool zusammen mit dem ich meinen AVR über USB 
updaten kann. Dazu benutze ich einen FTDI um die USB Signale in Serielle 
Signale umzuwandeln. Damit ich über USB den RESET Pin ziehen kann habe 
ich den die DTR Leitung Zweck entfremdet. Mit dem C# Befehl
1
SerialPort.DtrEnable = true;
setze ich die Leitung auf LOW.

So weit so gut. An sich funktioniert das auch am FTDI. So lange ich 
keinen AVR angeschlossen habe kann ich die Leitung wie gewünscht 
dauerhaft auf LOW oder HIGH schalten. Wenn ich jedoch zusätzlich meinen 
AVR anschließe verändert sich dieses Verhalten. Die DTR Leitung wird nur 
kurz auf LOW gezogen und geht danach direkt wieder auf high. Sehr 
komisch.

Weiterhin habe ich noch die Beobachtung gemacht, wenn ich den Pin per 
Software auf LOW setze geht diese Leitung wie gesagt nur kurz auf LOW 
und dann wieder auf HiGH. Wenn ich danach die Leitung kurz hardwaremäßig 
auf LOW Brücke und wieder los lasse geht bleibt die DTR Leitung wie 
gewünscht auf LOW. Mit dieser Beobachtung würde ich eigentlich ein 
Treiberproblem ausschließen.


Zur Schaltung: Ich habe jetzt gerade keinen Schaltplan aber es ist recht 
simpel. Die DTR Leitung ist direkt mit der RESET Leitung des AVR’s 
verbunden. Dazwischen hängt nur ein 10k Ohm Pull-Up Widerstand.

Hat jemand eine Idee wie man sich dieses Verhalten erklären kann, bzw. 
hat jemand auch schon so ein Problem gehabt?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wenn Du selbst an den Handshakeleitungen herumwackeln willst, musst Du 
das Hardwarehandshake des Devicetreibers deaktivieren, sonst behakeln 
sich Dein Programm und der Devicetreiber, der ebenfalls die 
Handshakeleitungen ansteuern möchte.

von Planlos (Gast)


Lesenswert?

Evtl. wird die DTR-Leitung zusätzlich auch noch "bestimmungsgemäß" 
verwendet.

Dein manuelles Überschreiben des PIN-Status gilt dann nur solange, bis 
das nächste Byte über die Leitung gegangen ist.

Kannst du der Schnittstelle den "Hardware Flow-Control" abschalten?

von Ben S. (theben)


Lesenswert?

Ich habe jetzt das Ganze mal mit einem silabs anstelle des FTDI's 
probiert. Dort gibt es keine Probleme. Also muss es doch irgendwie mit 
dem Treiber zu haben.


Beim FTDI habe ich jetzt versuch mit
1
SerialPort.Handshake = Handshake.None;
die "Hardware Flow-Control" abzuschalten. Hat aber nicht gebracht.

Die silabs gehen zwar, doch möchte ich den FTDI, der auf meinem Board 
schon vorhanden ist, weiter verwenden. Kennt jemand vielleicht noch eine 
Möglichkeit an dem Treiber der FTDI's rum zu pfuschen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sieh Dir die Einstellmöglichkeiten des FTDI-Treibers im Gerätemanager 
an. Vielleicht bietet der dort noch irgendwas.

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
Noch kein Account? Hier anmelden.