Hallo zusammen, seit kurzem befasse ich mich mit dem oben genannten µC und bin nun auf ein Problem gestoßen, bei welchem ich nicht wirklich weiter komme. Ich versuche zunächst einmal den Fehler zu beschreiben und danach zu sagen, was der source code macht. Ich empfange seriell daten über die HSS, des Controllers. Diese kommen alle korrekt an. Nun schicke ich diese in 64KB Blöcken weiter an den PC. Der PC liest mittels polling die Daten des µC. Je nachdem wie kurz die zykluszeit ist, sind die übertragenen Daten mehr oder weniger Fehlerhaft. Es fehlen entweder Zeichen oder es kommen welche doppelt. Und nun versuche ich nochmal die wichtigsten punkte meines quellcodes in worten zu fassen. Auf dem µC läuft eine IDLE-Schleife. Pro Zyklus lese ich die Daten über den Endpoint 1 aus und sende über Endpoint 2. Das Tatsächliche Senden geschieht dann letztlich über ein Interrupt, welches über eine C-Funktion des Frameworks zur Verfügung gestellt wird. Hierbei übergebe ich mittels einer Struktur unter anderem, die Pufferlänge, einen Buffer auf den Buffer und ich übergebe eine Handler-Routine, welche aufgerufen wird, wenn die Daten am PC ausgelesen wurden. Beim Debuggen stellte sich heraus, dass sowohl vor dem schreiben auf EP2, als auch nach dem Lesen im Buffer des µC immer die richtigen Daten standen. Es fiel aber auf, dass nach einem fehlerhaftem Lesen, der µC nicht mehr in die Handler-Routine sprang. Nun meine generellen Überlegungen zu dem Problem: Ich benutze den Bulktransfer bei full-speed. das müsste bedeuten ich müsste eine Übertragungsgeschwindigkeit von 12 Mbit/s realisieren können. Zykluszeiten beim Polling waren bisher so 100-1000 ms. Pro Lesevorgang werden immer 64KByte übertragen. Eigentlich müsste das ja ohne Probleme machbar sein. Daher denke ich, dass ich evtl die SIE1 (USB-Schnittstelle für Kommunikation zum PC) nicht richtig konfiguriert habe oder sonst irgend ein generelles Problem besteht. Falls es nötig ist mein Problem an einem bestimmten Punkt detailierter zu beschreiben, lasst es mich wissen. Oder evtl. kann mir jemand allgemeine Tips zur Vorgehensweise bei der Fehlersuche zur µC-Programmierung geben. Eigentlich wäre ich für jede Form der Hilfe dankbar, da ich bisher noch sehr Wenig Erfahrung auf diesem Gebiet gesammelt habe und dies mein erster Controller ist :D Danke schonmal für Antworten, Stefan
Habe leider keine Bearbeiten-Funktion gefunden, deshalb jetzt noch ein zweiter Post. Kurz noch die Initialisierung meiner USB-Schnittstelle: - Update der Bios Deskriptor Pointer - Initialisierung Endpoint Control Register (EP0, EP1, EP2) - USB EP (EP0, EP1 und EP2) Status Register Initialisierung - Initialisierung EP1 Count Result Register (64KByte pro Block) - SIE1 initialisieren (Full-Speed)
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.