Forum: Mikrocontroller und Digitale Elektronik FTDI (bus powered) soll angeschlossene Logik resetten


von Alex (Gast)


Lesenswert?

Hallo,


da ich aus den Datenblättern nicht ganz schlau geworden bin folgendes 
Problem. Ich habe einen Controller der via FTDI mit einem Rechner 
verbunden werden kann (Versorgung über USB).

Problem: Ich möchte auf dem Host via SW den Controller zurücksetzen 
können ohne das Kabel abzuziehen und wieder anzustecken.

Der FTDI bietet SUSPEND und PWREN Signale. PWREN wird gesetzt sobald der 
Rechner das USB-Gerät erkannt hat. Den USB-Suspend Mode habe ich nicht 
gänzlich verstanden, er wird offenbar eingenommen wenn eine gewisse Zeit 
Ruhe auf dem Bus ist.

Die FTDI Lib bietet spärlich dokumentierte Funktionen wie ResetDevice() 
und ResetPort(). Hat eine dieser Funktionen Auswirkungen auf die beiden 
genannten Pins?

Gibt es einen anderen (eleganten) Weg beim Öffnen der 
Kommunikationsverbindung für einen Reset zu sorgen?


Besten Dank,
Alex

von Philipp (Gast)


Lesenswert?

Vielleicht über die Handshake-Pins (CTL, DTR, etc..).
Da bietet die D2XX-Lib auch Funktionen für zum setzen und löschen an.

von Philipp (Gast)


Lesenswert?

Hab mich vertan, sorry. CTL gibts überhaupt nicht.
Was ich meine sind die Pins DTR und RTS. Schau mal dort: 
http://www.ftdichip.com/Documents/ProgramGuides/D2XX_Programmer%27s_Guide%28FT_000071%29.pdf 
auf Seite 25-28 nach. Vielleicht gehts ja damit

von Alex (Gast)


Lesenswert?

Danke,


der Hinweis passt. Bin durch Zufall dann doch noch auf eine Lösung 
gestoßen 
(http://www.sparkfun.com/commerce/product_info.php?products_id=9115). 
Dort wird am Rande erwähnt, dass DTR für solche Zwecke missbraucht 
werden kann. Das klappt auch soweit mit der Lib (SetDTR(true/false)).


Grüße,
Alex

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Nein, SUSPEND wird nur gesetzt wenn der Rechner in einen Ruhezustand 
uebergeht. Der soll das gesamte USB-Geraet abschalten. Die 
Handshake-Leitungen wuerde ich fuer sowas nicht nehmen, die braucht man 
ja fuer eine stabile Datenuebertragung.

Du kannst im BitBang-Modus die Bus-Leitungen benutzen, um zusaetzliche 
Dinge zu steuern. Allerdings habe ich das anders gemacht: Ich habe den 
watchdog des Controlers benutzt, um diesen mit einem Befehl zu resetten, 
indem man in dann einfach in eine Endlosschleife schickt.

Michael

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.