Forum: Mikrocontroller und Digitale Elektronik Hilfe bei Projekt mit USB


von Andreas D. (Gast)


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 :)

von Never_Knows_Nothing (Gast)


Lesenswert?

als welche Art von gerät meldet sich dein PIC denn am PC an? externer 
oder interner USB controller?

von Εrnst B. (ernst)


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)

von Andreas D. (Gast)


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.

von Εrnst B. (ernst)


Lesenswert?

Andreas D. schrieb:
> z.b. auf EP1 was
> sende,er es in den EP2-Buffer schreibt

Tippfehler?

Andreas D. schrieb:
> Leider bekomme ich nicht das gewünschte Ergebnis

Was passt nicht? Keine Daten, falsche Daten? Programmabsturz? 
Bluescreen?

von Andreas D. (Gast)


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"

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.