Forum: Mikrocontroller und Digitale Elektronik Kann man den Suspend-Mode bei USB verhindern?


von Thorsten B. (martello)


Lesenswert?

Hi,

Ich hab die Suche von diesem Forum schon gequält aber bin noch nicht auf 
eine  Antwort gestoßen, die mein Problem löst, deswegen möchte ich zum 
1001ten mal nach der Spannungsversorgung am USB Port fragen.
Ich bin Dabei ein Gerät zu entwickeln, welches sich als High-Power Gerät 
am Bus anmeldet und vom Bus mit c.a. 350mA versorgt wird. Das 
funktioniert auch!
So weit do gut, jetzt sagt die USB Spezifikation, dass mein Gerät einen 
Suspendmode beherrschen muss, bei dem Die Strumaufnahme 0,5mA/2,5mA 
nicht übersteigt. Das Ist technisch nicht so einfach, theoretisch aber 
bestimmt möglich. Das eigentliche Problem aber ist, das mein Gerät, wenn 
es denn dann läuft, nicht sinnvoll in den Suspendmode gehen kann.

Meine eigentliche Frage ist also:
Wie kann ich Spezifikationskonform verhindern, dass mein Gerät in den 
Suspend-Mode wechselt?

Vielen dank schon mal!

cu Thorsten

von Jens (Gast)


Lesenswert?

Es ist an sich egal,
Jedes Gerät dass ich an meinem PC betreibe, wenn ich innen S3 Standby 
gehe, zieht mindestens 100mA oder so, andre schalten sich garned ab wenn 
der PC aus geht.Gleich ist es auch wenn mein Pc aus oder im Suspend mode 
ist.

Also lass die Spezifikation da mal Spezifikation sein, solange alles 
geht, und du keine usb zertifizierung brauchst, lass es einfach.
Schau dir mal ne USB Maus an, PC ist aus, die Maus lässt nochimmer ihre 
optische LED schalten, so wie als wäre sie im Normalbetrieb.
Und ne hellrote led braucht bestimtm 30mA.
Bei 2A auf der 5V Leitung nenne ich aber sowas als noch verkraftbar


Gruß Jens

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Du könntest aber das Gerät doch komplett abschalten wenn es in Suspend 
geht oder ist das nicht möglich?

von Thorsten B. (martello)


Lesenswert?

Läubi Mail@laeubi.de wrote:
> Du könntest aber das Gerät doch komplett abschalten wenn es in Suspend
> geht oder ist das nicht möglich?

klar, das geht. Nur wenn ich das Gerät abschalte, 3ms nach dem kein 
traffic mehr auf dem Bus ist. Dann geht der sinn des Gerätes irgendwie 
verloren.

Wie oft und wann kommt denn das überhaupt vor?

cu Thorsten

von Thomas B. (yahp) Benutzerseite


Lesenswert?

> Meine eigentliche Frage ist also:
> Wie kann ich Spezifikationskonform verhindern, dass mein Gerät in den
> Suspend-Mode wechselt?

Nein. Das Verhindern des Suspend-Modes ist nun eben nicht 
spezifikationsgemäß, aber in einer Welt, in der es Kabel A-Stecker auf 
A-Stecker gibt, Kaffetassenwärmer (sicher mit Suspend) und Festplatten 
mit Y-Kabel muss man wahrscheinlich nicht viel auf die Spec. geben.


> Wie oft und wann kommt denn das überhaupt vor?

Na die Idee ist doch Stromfresser am US-Bus nicht laufen zu lassen, wenn 
der Rechner (z. B. ein portables Gerät) selbst in einen Stromsparmodus 
geht?!

von Christian R. (supachris)


Lesenswert?

Thorsten B. wrote:
> Läubi Mail@laeubi.de wrote:
>> Du könntest aber das Gerät doch komplett abschalten wenn es in Suspend
>> geht oder ist das nicht möglich?
>
> klar, das geht. Nur wenn ich das Gerät abschalte, 3ms nach dem kein
> traffic mehr auf dem Bus ist. Dann geht der sinn des Gerätes irgendwie
> verloren.
>
> Wie oft und wann kommt denn das überhaupt vor?
>
> cu Thorsten

Hmm? Der USB Suspend wird doch nur aktiviert, wenn dein PC in den 
Standby, Hibernate oder Soft-Off gefahren wird. Ansonsten ist der USB 
voll da.
Musst allerings auch aufpassen, dass du während der Enumeration nicht 
mehr als 100mA ziehen darfst. Klar geht auch mehr, ist aber dann nicht 
spec-konform.

von Thorsten B. (martello)


Lesenswert?

Das klingt dann doch mal langsam so als ob auch ich das verstehen könnte 
:-)

Also eine Betriebsart in der ich nicht mehr als 100mA brauche kann ich 
schon. Dann werde ich das mit dem Suspend auch mal in Angriff nehmen!

vielen Dank an alle!

cu Thorsten

von Christian R. (supachris)


Lesenswert?

Welchen USB Controller setzt du denn ein?
Wenn du dich an die Spec halten willst, musst du zuerst dem OS über den 
Device Descriptor mitteilen, dass du ein High-Power Gerät bist. Wenn es 
der Meinung ist, dass es genügend Strom liefern kann (was ja z.B. bei 
Bus-Powered Hubs meist nicht der Fall ist), dann wird das OS diese 
Konfiguration setzen. Den USB Controller empfängt dann das SetConfig 
Kommando. Erst dann darfst du die mehr als 100mA ziehen. Im 
unkonfigurierten (nicht enumeriert) Zustand darfst du max 100mA 
verbrauchen.

Im USB Controller gibts dann garantiert auch eine Suspend() und eine 
Resume() Funktion. Bei Suspend musst du alles abschalten, was mehr als 
2,5/0,5 mA verbraucht. Bei Resume darfst du wieder anschalten.

Beim Cypress 68013 war das ganz einfach in die Firmware zu 
implementieren. Der aktuelle FX2LP braucht auch im unkof. Zustand max. 
85mA sodass die Sache leicht zu machen war.

von Thorsten B. (martello)


Lesenswert?

Hi,

ich verwende einen Microchip PIC18F4550 mit der von Microchip 
gelieferten Firmware. Wie oben schon zu lesen ist, dass mit dem Anmelden 
und dem Strombedarf das funktioniert alles soweit, auch wenn ich es noch 
bei keinem Hub geschafft habe, dass er mich nicht konfiguriert :-/ oder 
sogar abschaltet, wenn ich zuviel Strom brauche. Aber das ganze sollte 
soweit spezifikationskonform funktionieren.
Softwaretechnisch ist auch der Suspendmode kein Problem sondern mehr von 
der Funktion her. Ist halt doof, wenn ein datenaufzeichnendes Gerät 
einfach zwischendurch abgeschaltet wird weil der Host meint das wär mal 
nett um Strom zu sparen.

cu Thorsten

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.