mikrocontroller.net

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


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Philipp (Gast)
Datum:

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

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/D2... 
auf Seite 25-28 nach. Vielleicht gehts ja damit

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?...). 
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

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.