Forum: Mikrocontroller und Digitale Elektronik FTDI 2232D - dauerhaft verbinden oder jedes Mal neu?


von CK1 (Gast)


Lesenswert?

'Nabend!

Ich bin gerade dabei für meinen 2232D von FTDI (Dual USB UART/FIFO IC) 
ein Steuerprogramm zu schreiben.

Zur Zeit ist es noch so, dass ich für jedes "instructionset" 
(=Befehlssatz) das jeweilige Device (neu) verbinde und anschließend 
wieder trenne.
Das ist zwar nicht so das große Problem, nur kostet es Zeit und birgt 
eine Fehlerquelle.

Nun stelle ich mir seit einigen Tagen die Frage was wäre, wenn ich jedes 
am PC angesteckt Device verbinde und nie wieder trenne, es sei denn, ich 
trenne es manuell.

Jetzt stellt sich mir aber die Frage, ob der USB-Bus des PC's das 
Device/die Devices selbst in einen Stromsparmodus versetzt oder je nach 
angehängter Last der Bus voll powern muss.
Und wie ist das, wenn ich das USB-Modul vom PC trenne ohne die Devices 
vorher zu trennen, nimmt das Modul dadurch ggf. Schaden?

Ich hoffe, ihr könnt mir auf meine Fragen Antworten liefern!

Gruss
CK1

von Ralf (Gast)


Lesenswert?

> Zur Zeit ist es noch so, dass ich für jedes "instructionset"
> (=Befehlssatz) das jeweilige Device (neu) verbinde und anschließend
> wieder trenne.
> Nun stelle ich mir seit einigen Tagen die Frage was wäre, wenn ich jedes
> am PC angesteckt Device verbinde und nie wieder trenne, es sei denn, ich
> trenne es manuell.
Was heisst bei dir verbinden? Physikalisch-Kabel-in-die-Buchse oder 
Software-öffnet-virtuellen-COM-Port oder 
Software-greift-über-D2xx.DLL-auf-die-Devices-zu?

> Jetzt stellt sich mir aber die Frage, ob der USB-Bus des PC's das
> Device/die Devices selbst in einen Stromsparmodus versetzt oder je nach
> angehängter Last der Bus voll powern muss.
Der Bus kann immer die 500mA (eigentlich min. 600mA) liefern. Das 
angeschlossene Gerät muss im Bus-Powered-Betrieb dafür sorgen, dass es 
erstens nicht mehr zieht als vom Host zugewiesen, und zweitens kann der 
Host die Leitung nicht abschalten (ausser bei Überlast -> ist aber eher 
eine Funktion der Hardware mit Nachricht ans OS).
Somit ist das Gerät für die Stromaufnahme verantwortlich. Ob der Host 
das Gerät abschalten kann, wird unter Windows im Gerätemanager 
eingestellt.

> Und wie ist das, wenn ich das USB-Modul vom PC trenne ohne die Devices
> vorher zu trennen, nimmt das Modul dadurch ggf. Schaden?
Wenn du das Abmelden am OS meinst, das sorgt beispielsweise bei USB 
Flashspeichern dafür, dass keine Daten mehr gelesen/geschrieben werden 
und somit auch keine Daten kaputt gehen können (speziell beim 
Schreiben).

Elektrisch gesehen dürfte auch keine Kommunikation mehr auf den 
USB-Datenleitungen stattfinden, also kannst du abziehen (was aber auch 
bei Kommunikation für gewöhnlich kein Problem darstellt).
Für die Spannungsversorgung dürfte ebenfalls nix passieren.

Ralf

von CK1 (Gast)


Lesenswert?

>Was heisst bei dir verbinden? Physikalisch-Kabel-in-die-Buchse oder
>Software-öffnet-virtuellen-COM-Port oder
>Software-greift-über-D2xx.DLL-auf-die-Devices-zu?
Software-greift-über-D2xx.DLL-auf-die-Devices-zu

>Wenn du das Abmelden am OS meinst, das sorgt beispielsweise bei USB
>Flashspeichern dafür, dass keine Daten mehr gelesen/geschrieben werden
>und somit auch keine Daten kaputt gehen können (speziell beim
>Schreiben).
Ich meine damit, dass ich das Kabel ziehe bevor die Verbindung meiner 
Software mit dem Gerät über den Treiber trenne. Trennen über die 
Funktion des Betriebsystems wie bei USB-Datenträgern geht hierbei nicht.
Mir ging es eigentlich darum ob der Chip Schaden nimmt wenn ich die 
Verbindung des Programmes (über den Treiber) nicht trenne, die 
Verbindung nicht schliesse.

Trotzdem erst einmal danke für deine Hilfe!

Gruss

von holger (Gast)


Lesenswert?

>Ich meine damit, dass ich das Kabel ziehe bevor die Verbindung meiner
>Software mit dem Gerät über den Treiber trenne.

Blöde Idee. Von einfacher Fehlermeldung über kompletten
Hänger kann da alles passieren.

>Mir ging es eigentlich darum ob der Chip Schaden nimmt wenn ich die
>Verbindung des Programmes (über den Treiber) nicht trenne, die
>Verbindung nicht schliesse.

Dem Chip passiert da nix.

von Ralf (Gast)


Lesenswert?

> Ich meine damit, dass ich das Kabel ziehe bevor die Verbindung meiner
> Software mit dem Gerät über den Treiber trenne. Trennen über die
> Funktion des Betriebsystems wie bei USB-Datenträgern geht hierbei nicht.
> Mir ging es eigentlich darum ob der Chip Schaden nimmt wenn ich die
> Verbindung des Programmes (über den Treiber) nicht trenne, die
> Verbindung nicht schliesse.
Ah, okay. Siehste, kaum gibt man mehr Infos schon kommen auch bessere 
Antworten ;)
Also, bei wirklich gut geschriebenen Treibern (vom Hersteller) darf 
eigentlich nix schiefgehen. Ausschließen kannst du das aber aufgrund der 
Vielfalt an Kombinationen mit anderen Treibern etc. NIE (du weisst 
schon, hunderttausend andere Rechner machens mit, aber deiner war der 
einzige, bei dem das Abziehen das OS, die Festplatte, die Batterie und 
den Fussball vom Nachbarsjungen geplättet hat). Ich hab auch schon von 
Effekten gehört, dass das Abziehen eines USB-Gerätes unmittelbar keine 
Auswirkungen hatte, wohl aber der nächste Systemstart in die Hose ging). 
Konkret bezogen auf FTDI würd ich aber sagen, dass die Dinger so oft im 
Einsatz sind, dass die Treiber ausgereift sind und die Chance einen GAU 
damit zu haben, nahezu null ist.
Du kannst es schon mal in deiner Software über TimeOuts etc. abfangen, 
ob das Device noch angeschlossen ist. Ansonsten würde deine Software 
hängenbleiben. Wäre aber eher ein Bedienungskomfort als wirklich eine 
Fehlervermeidung.
Ich selbst verwende ebenfalls den Zugriff über die DLL in mehreren 
Projekten und habe bei keinem der Rechner negative Effekte festgestellt 
(und ich habe eben jenen Fall ausgiebig getestet).

Ralf

von CK1 (Gast)


Lesenswert?

>Blöde Idee. Von einfacher Fehlermeldung über kompletten
>Hänger kann da alles passieren.
Also sollte ich besser wie jetzt auch jedes mal neu eine Verbindung 
herstellen und wieder trennen.

Aber was genau kann den passieren? Einzig der Treiber kann schlapp 
machen weil das Device nicht mehr vorhanden ist. Fehler werden in der 
Software direkt abgefangen, wenn ein Device nicht mehr gefunden wird 
werden alle Devices sofort abgefragt bzw. die Liste der gültigen Devices 
wird zurückgesetzt, weitere Code kann erst wieder ausgeführt werden, 
wenn neu nach Devices gesucht wird.

Gruss

von CK1 (Gast)


Lesenswert?

>Du kannst es schon mal in deiner Software über TimeOuts etc. abfangen,
>ob das Device noch angeschlossen ist
Geht ja prinzipiell in die Richtung von dem, was ich bereits 
implementiert habe.

von Ralf (Gast)


Lesenswert?

> Also sollte ich besser wie jetzt auch jedes mal neu eine Verbindung
> herstellen und wieder trennen.
Wäre zumindest ein besser definierter Zustand als der bestimmt 
undefinierte Zustand beim "harten" Abziehen. Wie gesagt, ganz verhindern 
kannst es eh nicht. Frag dich andersrum ob's dir etwas ausmacht, es so 
zu machen? Wenn die Antwort nein lautet, hast du a) ein "saubereres" 
Programm und b) nichts dabei verloren :)

Ralf

von CK1 (Gast)


Lesenswert?

>Wäre zumindest ein besser definierter Zustand als der bestimmt
>undefinierte Zustand beim "harten" Abziehen. Wie gesagt, ganz verhindern
>kannst es eh nicht. Frag dich andersrum ob's dir etwas ausmacht, es so
>zu machen? Wenn die Antwort nein lautet, hast du a) ein "saubereres"
>Programm und b) nichts dabei verloren :)
Ein saubere Programm ist so eine Sache. Ich würde sagen, dass mein 
Programm sauber ist weil ich alle Fehler die auftreten können abfange 
bevor sie überhaupt auftreten können - nun ja, halt den Teil der in 
meiner Macht liegt. Alle Exceptions die beim Übertragen der Befehle zum 
Chip auftreten können werden vom Treiber selber abgefangen.

Gruss

von Ralf (Gast)


Lesenswert?

> Ich würde sagen, dass mein Programm sauber...
Ich hab ja nicht gesagt, dass es nicht sauber ist, nur dass es dadurch 
noch sauber*er* wird :)

> ...ist weil ich alle Fehler die auftreten können abfange bevor sie
> überhaupt auftreten können - nun ja, halt den Teil der in *meiner*
> Macht liegt
Wunderbar, dann hast du's kapiert. Denn du kannst nicht verhindern, 
dass jemand den Stöpsel zieht. Selbst wenn du den Stecker an der 
Buchse verklebst, verleimst, versonstwast, kann die Katze am Kabel 
knabbern (oder an der Maus, die am Kabel knabbert), oder jemand übers 
Kabel fliegen, oder... oder... oder... Höchstens du vergießt das Gerät 
komplett mit dem PC :)

Ralf

von CK1 (Gast)


Lesenswert?

>Ich hab ja nicht gesagt, dass es nicht sauber ist, nur dass es dadurch
>noch sauber*er* wird :)
Ich mich ja auch nicht angegriffen gefühlt ;-)

Naja, ich werde trotzdem versuchen, den Code immer weiter zu verbessern.

Danke für euren Rat!

Gruss

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.