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