Hallo, hat sich schon mal jemand an die neuen XMega getraut? Hab ne kleine Platine mit nem Flash und nem GPS, zwei Button + zwei LED gemacht und hab nun etwas C Source unter dem Studio 6 geschrieben. Die SPI Daten werden über die ASF cdc Klasse auf den PC übertragen, dass funktioniert auch ganz prima: 1,1 MB in 1,5 Sekunden... nur leider Funktioniert es nicht immer und erst recht gar nicht unter Windows XP... Ich weiß nicht genau woran es liegen soll. Ich verwende den Befehl: udi_cdc_write_buf und dieser prüft laut Source Code (die ASF Docu kann man ja vergessen) ob USB angemeldet ist und ob Zeichen gesendet werden können. Nun verstrickt sich die Sache ab und an und von System zu System und mal mehr und mal weniger in eine Endlosschleife. Weiß nicht genau was ich falsch gemacht haben soll... Vielleicht hab ich auch die Treiber inf zu stark angepasst und es gibt nun deswegen Probleme. Vielleicht weiß ja jemand Rat, der selbiges schon probiert hat? Gibts funktionsfähigen Beispielcode? Die ASF Beispiele mit der USB UART Bridge sind nicht wirklich aufschlussreich. Hab die Inf Datei mal angehangen. MfG Basti
Ach schon schade, dass sich noch keiner mit den XMega auseinander gesetzt hat, bezüglich USB. Ich hab auch das Gefühl, dass ich eher auf einen 32 Bitter mit ARM Kern hätte umsteigen sollen. Die bieten doch noch mehr Leistung für schmaleres Geld... Wie einfach ist eine USB Schnittstelle von einem ARM Prozessor ansprechbar? Gibts da auch schon fertige CDC Driver? Kenn mich in der Beziehung nicht aus, hab aber noch ein paar Boards von der Embedded World hinter mir und werd mich wohl demnächst damit beschäftigen (müssen)... Dann muss ich kein "Randgruppen Controller" auf eigene Faust programmieren =) Aber da das aktuelle Design Hardwareseitig auf anhieb komplett funktionsfähig ist, wäre es schade wenn's nur an der Software scheitert, dass es ein Erfolg wird :-/ MfG Basti
Kannst Du nicht mal ein fertiges Projekt posten? Welchen Xmega genau benutzt Du? Wo genau hängt es sich in einer Schleife auf? Wie hast Du es getestet? Wie ist die Beschaltung? Kannst Du ein Minimalprojekt erstellen welches das Problem reproduzierbar macht? Eventuell portiert auf ein Xplain Kit so dass jem. hier auch ohne Deinem Hardware Setup das Problem nachvollziehen kann. Welche ASF Version nutzt Du? Ohne diese Angaben brauchst Du Dich über mangelnde Resonanz nicht wundern, oder hast Du nur eine Antwort auf "hat sich schon mal jemand an die neuen XMega getraut?" erwartet? Grüße Michael P.s. der Xmega USB Modus im MultiPaket Modus ist eine feine Sache, trotz max. Speed bleibt der Core weitestgehend unausgelastet
Hallo Michael... wie schon beschrieben wirkt sich das Problem sehr unterschiedlich auf unterschiedlichen Betriebssystemen aus, daher dachte ich es könnte der Treiber sein... den hab ich ja angehangen... Benutzte die ASF 3.0.1 Die Projekt Dateien mit den Debug Dateien sind jetzt sehr riesig, aber gut ich hab sie alle mal Angehangen... Hab einen JTagICE II Debugger und dort seh ich, dass immer in den USB Treibern schleifen gedreht werden... (mit oder ohne Debuggereingriff) Benutzte den ATXMega32A4U unter 3,3 V und USB Anschaltung ohne Zusatzhardware... (kein ESD Schutz zum Schirm) Wenn VUSB erkannt wird, mach ich folgendes: udc_start(); //startup USB + USB clock delay_ms(500); udc_attach(); und irgendwann will ich meine struct schicken und meine Pages aus dem Dataflash:
1 | udi_cdc_write_buf(&eeprom_val,sizeof(eeprom_val)); |
2 | |
3 | df_sleep(DF_WAKEUP); |
4 | for(uint16_t i=0;i<4096;i++) { |
5 | df_read_page(i,0); |
6 | }
|
7 | df_sleep(DF_SLEEP); |
Selbst wenn ich ab dem ersten cdc alles ausklammer, kommt der Fehler schon bei WinXP unter Windows 7 eher nicht... oder viel viel seltener Vielleicht können wir es auch anders rum machen, du könntest mir deinen Testcode den du ja anscheinend schon mal geschrieben hast hochladen und ich lern daraus vielleicht den Fehler?! MfG Basti
Weiß keiner weiter? Bis auf ne Mängelrüge kam ja noch nix rüber :-/ Hat einer nen Source für mich ? Irgendwie mal dem Explainboard erfolgreich gespielt? Würde mir evtl schon reichen.... vielleicht hab ich nur was Grundlegendes vergessen ?! Danke, MfG Basti
ich hab ein standard CDC BSp vom ASF damals genommen und die WriteBuf Funktion verwendet, hab jetzt kein simples Bsp mehr für Dich und auch keine Zeit jetzt mein Firmenprj. abzuspecken. Bevor Du eigen inf erzeugst, nimm doch mal das vorhandene, und versuchs damit. Wenns damit immer noch nicht läuft, dann poste bitte das lauffähige Prj hier damit ich es auf meinem xplained (atxmega256a3bu) testen kann. trotzdem versteh ich noch nicht ganz was und wo genau was hängt, was für ein Fehler kommt bei winxp oder win7 eher nicht?
Hallo, hab heute wieder nen bissel rumprobieren können und hab das Problem gefunden... Wie zu erwarten, war ich natürlich dran Schuld... Hab zuerst herausgefunden das mehr als 2 Zeichen 0xFF den USB zum absturz bringen und andere Zeichen gar nicht... Dann dachte ich an die Interen Oszillator Kalibrierung mit Start of Frame und da war ich auf dem richtigem Weg...
1 | #define CONFIG_OSC_AUTOCAL OSC_ID_RC32MHZ
|
2 | #define CONFIG_OSC_AUTOCAL_REF_OSC OSC_ID_USBSOF
|
Hab hier die oberste Zeile auskomentiert gehabt (warscheinlich ausversehen beim hin und her probieren)... kA was dann die ASF versucht zu kalibrieren... warscheinlich den 2MHz Oszilator... Jedenfalls gab es dadurch sporadische Fehler auf unterschiedlichen Betriebssystemen... aber nun rennt das USB wie hanne ;) Ein hoch auf den neuen XMega mit USB =) MfG Basti P.S. @ Michael C. danke das du dir Zeit genommen hast...
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.