'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
> 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
>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
>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.
> 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
>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
>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.
> 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
>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
> 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
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.