COM Port pin DTR will nicht so wie ich das will

OP #4242181
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?
Gast #4242203
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?
OP #4242220
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?

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.