VUSB Interrupt transfers und AVR

OP #3716944
Lesenswert?

Hallo
Kennt jemand ein Tutorial zur Kommunikation mit VUSB über Interrupt 
Endpoints? Oder irgendeine Erklärung dazu?
Ich verwende VUSB mittels controlmsg aber damit ist nur einseitige 
Kommunikation möglich oder? Ich meine kann ich damit auch Daten zum PC 
senden (ohne vorherige Anfrage)?
Danke im Voraus
#3717000
Lesenswert?

Der Interrupt-Endpoint hat einen etwas irreführenden Namen.
Er heißt so, weil er in dem ganzen USB-Stack am nähesten an einen 
Interrupt hinkommt. In Wahrheit wird er nur sicher alle x ms (von dem 
device vorgegeben) "gefragt" ob er neue Daten hat. Das zuständige 
Programm (bzw. Treiber, je nach OS und Applikation) muss ihn trotzdem 
selbstständig abfragen, er kriegt diese Abfrageraten nur reserviert.
OP #3717022
Lesenswert?

Danke für die schnellen Antworten

Das bedeutet der slave kann Daten reinschreiben, wenn er sie hat, und 
kurz darauf wird der Stack automatisch abgefragt und der Master liest 
sie aus? Hab ich das richtig verstanden? Gibt es irgendwo eine genauere 
Erklärung in Zusammenhang mit VUSB? Gibt es überhaupt irgendwo eine VUSB 
Dokumentation?

Kurze Zusatzfrage: Bulk Transfers sind nicht möglich mit VUSB oder?
#3717026
Lesenswert?

Roman B. schrieb:
> Danke für die schnellen Antworten
>
> Das bedeutet der slave kann Daten reinschreiben, wenn er sie hat, und
> kurz darauf wird der Stack automatisch abgefragt und der Master liest
> sie aus? Hab ich das richtig verstanden? Gibt es irgendwo eine genauere
> Erklärung in Zusammenhang mit VUSB? Gibt es überhaupt irgendwo eine VUSB
> Dokumentation?
>
> Kurze Zusatzfrage: Bulk Transfers sind nicht möglich mit VUSB oder?

Bulk transfers verletzen bei low-speed geräten (und nur diese kann man 
in software nachamchen) die USB Spezifikationen. Es gibt aber einige 
Projekte die das trotzdem (und mit erfolg machen). Ob es bei dir geht 
hängt von deinem Setup ab; Es ist wahrscheinlich, muss aber nicht.
OP #3717095
Lesenswert?

Danke!! Ich benutze libusb war aber zu blöd die Dokumentation 
aufzurufen?! Damit wäre das hostseitige Problem gelöst aber gibt es auch 
eine Beschreibung der VUSB Funktionen? In dem Wiki ist zwar die einfache 
Verwendung beschrieben aber nicht gerade ausführlich.

Mit getInterruptData lese ich die Daten in den AVR ein und mit 
setInterrupt sende ich welche an den PC. Stimmt das so? Oder sende ich 
Daten mit processInterruptOut2Data? Wieviel Interrupt Endpoints kann 
VUSB verwalten? Muss man die Endpoints irgendwie definieren und dem Host 
bekannt machen oder reicht es die Nummer mitzuschicken?
Gast #3718386
Lesenswert?

Roman B. schrieb:

> Weiß niemand Rat?

Faulheit besiegen! Mehr lesen!

Was es über V-USB zu wissen gibt, steht als Kommentar in den Quelltexten 
und im Quelltext selbst.

Was es über USB im Allgemeinen zu wissen gibt, steht in der USB-Doku.

Hättest du diese beiden frei verfügbaren Quellen wirklich gelesen, 
könntest du dir alle deine Fragen direkt selber beantworten.

Ich z.B. habe beides gelesen (nicht nur einmal), sehe aber keine Grund 
zur Veranlassung dafür, dir eine Nacherzählung des Stoffs zu liefern, da 
du offensichtlichen durchaus selber lesen kannst, es nur nicht 
willst.

Warum sollte man solche parasitäre Faulheit noch unterstützen?
OP #3718465
Lesenswert?

Ich hab mir das jetzt durchgelesen:
-VUSB kann 2 Endpoints verwalten(1&3)
-usbFunctionWriteOut --> zum einlesen
-usbSetInterrupt --> zum senden an den PC
-Stack-Größe 8 Bytes
-Stack wird manuell gelesen und anschließend entleert
      -auf PC Seite manuelles lesen mit usb_interrupt_read
      -am µC wird  automatisch usbFunctionWriteOut aufgerufen

Stimmt das so?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren