Forum: Mikrocontroller und Digitale Elektronik PIC24FJ128GC006 - USB SESVD-Bit


von WehOhWeh (Gast)


Angehängte Dateien:

Lesenswert?

ich habe folgendes Problem:

Auf einem PIC24FJ128GC006 verwende ich USB. ich verwende  das USB-CDC 
Basic example aus der MAL, geringfügig modifiziert. Das Gerät ist "self 
powered", weil es mit Akku läuft. USB ist zum Laden und zum Auslesen von 
Daten da, und später für einen Bootloader. Der Sinn von dem Ding ist 
eine Kombination aus Fahrradtacho und barometrischen Höhenmesser.

Die USB CDC funktioniert soweit, nur das "attach sense" haut nicht hin:
Ich möchte eigentlich das SESVD-Bit um festzustellen, ob das Device an 
einem Host angeschlossen ist oder nicht. Nur klappt das nicht, SESVD und 
alle anderen Bits in USBOTGSTAT sind immer 0.

Die Spannung direkt am Pin ist ok, ohne USB kommt da auch der richtige 
Wert heraus (PORT-Bits). Nur wenn USB läuft natürlich nicht, der Block 
krallt sich ja den Pin.

Ich habe VBUS direkt an den VBUS-Pin angeschlossen, das wird im 
Datenblatt so vorgeschlagen.

Kennt jemand diese Eigenheit?
Wie kann ich über den PIN VBUS herausfinden, ob USB angeschlossen ist?
Gibts vielleicht eine andere Möglichkeit, die Spannung wenigstens zu 
erkennen, ohne gleich eine Brücke auf der Platine zu ziehen?

Wäre wirklich toll, wenn mir hier jemand weiterhelfen könnte!

von Pit (Gast)


Lesenswert?

WehOhWeh schrieb:
> Nur klappt das nicht, SESVD und
> alle anderen Bits in USBOTGSTAT sind immer 0.

Das OTG in USBOTGSTAT hat vermutlich was mit 'On-The-Go' zu tun und wird 
vermutlich nur dann in Funktion treten, wenn Dein Gerät auch als 
'On-The-Go' konfiguriert ist und Host Funktionen bereit stellt.

Aber VBUS sollte man irgendwie abfragen können, nur halt nicht so.

von WehOhWeh (Gast)


Lesenswert?

Pit schrieb:
> WehOhWeh schrieb:
>> Nur klappt das nicht, SESVD und
>> alle anderen Bits in USBOTGSTAT sind immer 0.
>
> Das OTG in USBOTGSTAT hat vermutlich was mit 'On-The-Go' zu tun und wird
> vermutlich nur dann in Funktion treten, wenn Dein Gerät auch als
> 'On-The-Go' konfiguriert ist und Host Funktionen bereit stellt.
>
> Aber VBUS sollte man irgendwie abfragen können, nur halt nicht so.

Danke für den Tipp.

Laut Datenblatt sollte es eigentlich nicht so sein. Habe es trotzdem 
ausprobiert (OTG eingeschaltet, die Pullups manuell geschaltet), leider 
bleibts dabei - nichts in diesem Register.

Ich hab tastächlich bisher keine andere Möglichkeit entdecken können, 
VBUS abzufragen.

von Pit (Gast)


Lesenswert?

Du kannst auch ganz einfach den USB Status auslesen:
- POWERED
- DEFAULT
- ADDRESS
- CONFIGURED

Wenn Dein Gerät CONFIGURED ist, dann hat es sich erfolgreich am USB 
angemeldet.

von WehOhWeh (Gast)


Lesenswert?

Pit schrieb:
> Du kannst auch ganz einfach den USB Status auslesen:
> - POWERED
> - DEFAULT
> - ADDRESS
> - CONFIGURED
>
> Wenn Dein Gerät CONFIGURED ist, dann hat es sich erfolgreich am USB
> angemeldet.

Danke, die Idee ist gut.

Leider funktioniert das nur in eine Richtung, denn wenn ich einmal 
"CONFIGURED" war, bleibt das so. Zumindest ist das mit dem 
Microchip-USB-Stack so. Getestet habe ich es ausgiebig - ohne Erfolg.

Ich habe auch noch versucht, JSTATE zu verwenden, das klappt, ist aber 
unzuverlässig. Auch wenn kein USB angeschlossen ist, kommt das Bit 
desöfteren einmal. Vermutlich, weil ich keine externen Pulls habe und 
die Pins dann floaten.

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.