Hilfe bei Projekt mit USB

Gast #2600018
Lesenswert?

Hallo µC-Gemeinde,

nach langem Mitlesen,googeln,etc benötige ich jetzt wohl ein bisschen 
Hilfe.
Und zwar geht um die USB-Programmierung mit einem PIC32MX.
Der Laptop soll dabei als Host fungieren und der PIC als Device.
Ich möchte per USB Daten an den PIC senden,welcher diese dann per 
SPI(soll hier nicht Thema sein,funktioniert schon) an einen weiteren 
Baustein sendet.

Ich bin jetzt soweit gekommen,dass sich der PIC am Laptop anmeldet,hab 
mir meine Endpoints konfiguriert,und kann auch per Laptop-Software Daten 
über USB raussenden,jedoch funktioniert nur die Richtung Laptop->PIC

Was nicht klappt,ist das Senden zum PC/Empfangen("Aufnehmen") vom Laptop 
auf dem PIC,die Standardmethoden aus dem USB Stack von Microchip 
funktionieren leider auch nicht und ich weiss nicht genau worans liegt.

Habe mir das ursprünglich eig so vorgestellt,dass der PIC per Polling an 
z.b. Endpoint 2 ein Steuerbyte empfängt,dann in eine spezielle Funktion 
wechselt,dann z.b. an Endpoint 3 die Daten empfängt,welche in der 
Funktion weiterverarbeitet werden. Muss ich beim Senden/Empfangen am PIC 
irgendwas besonderes beachten/initialisieren/etc vor allem an den 
Endpoint-Buffern?

Programmiersprachen sind C/C++ auf dem PIC und C# am Laptop

Bin für jede Hilfe,jeden Hinweis dankbar :)
#2600230
Lesenswert?

Dir ist klar, dass ein USB-*Device* nie von sich aus senden kann?

Das muss immer vom Host gepollt werden.

d.H. die "Sende an den Host"-Methoden deiner USB-Lib packen die Daten 
nur in die entsprechenden Endpoint-Buffer, abholen muss sie der PC 
selber, darum musst du dich kümmern.

(Je nach PC-Framework, HID, Interrupt-Endpoints usw. nimmt dir das 
Betriebssystem einen Teil davon ab)
Gast #2600375
Lesenswert?

yo ich benutze die LibUsbDotNet am PC und den USB Stack von Microchip am 
PIC,hatte es jetzt so zum Testen dass ich dem PIC z.b. auf EP1 was 
sende,er es in den EP2-Buffer schreibt bzw "sendet" und die PC-Software 
diesen danach liest und ausgibt.

Leider bekomme ich nicht das gewünschte Ergebnis.
Gast #2600421
Lesenswert?

Ah sorry,sollte beides EP1 heissen

Beim Lesen bekomme ich nur 0en,egal was ich sende
Habe mir mal ein USB-Monitor prog installiert,das sagt mir immer 
folgendes:

Bei der Send-Funktion:
Request: Bulk or Interrupt Transfer
Details: 1 Byte Data
Raw Data: FF
I/O: OUT
+ diverse andere Daten,Devicename,Time,...

Danach kommt immer ein "Abort Pipe" mit Status "Cancelled"

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