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