Forum: Mikrocontroller und Digitale Elektronik Einfache Datenübertragung mit XMega über USB?


von Markus P. (Gast)


Lesenswert?

Hallo,

ich habe mir ein Board gebaut, dass über den ADC des xMega Werte 
einliest und diese auf einem Display anzeigt. Beim Design hatte ich 
zusätzlich einen USb Anschluss vorgesehen, um die Daten zusätzlich am PC 
auswerten zu können und um auf eine extra Spannungsversorgung verzichten 
zu können. Deswegen auch kein UART...

Der verwendete xMega ist ein ATXMEGA32A4U.

Grundsätzlich habe ich den USB Anschluss nach der Atmel AppNote 
angeschlossen. Stromversorgung funktioniert. Allerdings bin ich vorher 
davon ausgegangen, dass das ganze etwas trivialer ist.

Ist es grundsätzlich möglich über diesen USB Anschluss einfache 
Sensordaten zu übertragen? Ich habe schon nach Beispielprojekten 
gesucht, aber das geht ja weit über meine Bedürfnisse hinaus (Audio, 
Maus, tastatur, usw).

Die ASF Examples in AtmelStudio 6.0 bin ich auch schon einmal 
durchgegangen, aber ich kann nichts für meine Bedürfnisse finden.

Kann mir jemand ein einfaches Beispielprojekt zeigen oder die 
grundsätzlichen Schritte nennen, um USB zum laufen zu bekommen?

Ich möchte USB in Low Speed betreiben. System Clock ist 2MHz, habe das 
auch als Quelle für die PLL ausgewähltund über Faktor 3 komme ich auf 
die geforderten 6MHz für Low Speed USB (in der Theoreie) zumindest.
Die USB Register habe ich mir auch genauer angeschaut und genau hier 
komme ich ins Stocken... Ich hatte gehofft hier einfach 2 Byte Register 
zu haben in die ich meine Daten reinschieben kann und irgendein Flag 
zeigt mir dann an, wenn es fertig ist. Ist aber nicht so, richtig?

Über jede Art von Hilfe wäre ich euch dankbar.

Beste Grüße, Markus

von Uwe (Gast)


Lesenswert?

> Ist aber nicht so, richtig?
Ja ist nicht so !
Aber wenn du es konfiguriert hast brauchst du eigentlich nur in den 
richtigen Endpoint reinzuschreiben oder herauszulesen.
Auf der PC Seite eigentlich auch, aberdort wird dir der Direkte Zugriff 
vom Betriebssysztem blockiert und wenn man sich keinen Treiber schreiben 
will benutzt man Device Classes für die Windows schon Treiber hat und in 
denen auch die Endpoints usw. definiert sind. Dann mußt du "nur" auf der 
µC Seite den USB Controller entsprechend konfigurieren.

von Peter D. (peda)


Lesenswert?

USB und "einfach" schließen sich gegenseitig aus.
Deshalb sieht man es sehr oft, daß USB als COM-Port getunnelt wird.
Ich hatte mal nen Surf-Stick, der hat beim Einstecken erstmal 4 COMs 
aufgemacht.
Auch viele andere USB-Geräte lassen im Gerätemanager ne neue COM 
erscheinen.
Den USB als COM zu tunneln, scheint wohl auf PC-Seite das einfachste zu 
sein.

von Tarek T. (tarek_t)


Lesenswert?

Einen virtuellen COM Port einzurichten ist in der Tat einfacher. 
Zumindest was die PC Seite angeht. Möchtest Du jedoch wirklich USB 
nutzen (was ich eigentlich sehr gerne mache), dann schau dir mal libusb 
an.

von Gerd (Gast)


Lesenswert?

Markus P. schrieb:
> Ist es grundsätzlich möglich über diesen USB Anschluss einfache
> Sensordaten zu übertragen?

Am einfachsten ist es, wenn Du Dein USB-Gerät als HID Klasse 
implementierst.

Auf der PC-Seite gibt es dafür sehr gute und einfach zu nutzende 
Treiber. Eine Übersicht findest Du in der Artikelsammlung:

http://www.mikrocontroller.net/articles/USB_HID_Host_Treiber

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.