Forum: Mikrocontroller und Digitale Elektronik XMega - ASF mit USB on-board.


von Bassti (Gast)


Angehängte Dateien:

Lesenswert?

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

von Bassti (Gast)


Lesenswert?

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

von Michael C. (Gast)


Lesenswert?

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

von Bassti (Gast)


Angehängte Dateien:

Lesenswert?

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

von Bassti (Gast)


Lesenswert?

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

von Michael C. (Gast)


Lesenswert?

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?

von Basti (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.