Forum: Compiler & IDEs USB mit dem AT90usb1287


von michi (Gast)


Lesenswert?

Hallo zusammen

ich hoffe ihr könnt mir da weiter helfen :)

Ich hab jetzt ein ATMEL usbkey2 mit den controller AT90USB1287.

und würde gerne mit dem Controller ein paar zeichen an meine pc 
schicken.

aber ich hab keine ahnung mit der Initalisierung wie das funktioniert da 
gibt es so viele register und so.

das ist um einiges schwieriger als UART das ist ja einfach :)

So zu meiner frage kann mir jemand ein ganz einfaches programm geben mit 
einer initalisierung.

ich wäre euch sehr dankbar

weil im Web hab ich nicht wirklich was gefunden nur große die ich nicht 
verstehe.

danke für die mühe

von AVerr (Gast)


Lesenswert?

Die LUFA Bibliothek ( http://www.fourwalledcubicle.com/LUFA.php ) könnte 
dir helfen. Ist auch Kompatibel mit dem at90usb1287.
Es sind auch ein Haufen Beispiele dabei, damit der Einstieg leicht 
fällt.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Was dich insbesondere davon interessieren wird ist der sogeannte
"CDC" (communications device class), denn dafür haben die üblichen
Betriebssysteme einen Standardtreiber dabei.

von michi (Gast)


Lesenswert?

Die beispiel programme sind ja ganz nett.

aber die sind teilweise ja auch recht groß und mit jeder menge von 
header und source cods

am liebsten wäre mir eine wo nur eine usb.h eine usb.c und eine main 
code gibt wo "nur" die einzelen register geschaltet werden und zwei 
funktionen gibt wie zb. zeichen schicken und zeichen holen.

das ist leichter für das verständnis

gruß michi

von michi (Gast)


Lesenswert?

ich hab jetzt ein projekt ausprobiert in demos mit der Mouse aber mein 
compailer kann die Lufa bibliothken nicht wie #include 
<LUFA/Drivers/USB/USB.h>

gruß michi

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

michi schrieb:
> am liebsten wäre mir eine wo nur eine usb.h eine usb.c und eine main
> code gibt wo "nur" die einzelen register geschaltet werden und zwei
> funktionen gibt wie zb. zeichen schicken und zeichen holen.

So einfach ist USB leider nicht.

Praktisch ist es so, dass man die komplette Funktionalität eines
USB-Devices bereits fehlerfrei am Laufen haben muss, damit man nur
erst einmal hinter die sogenannte Enumeration seitens des Hosts
kommt.  Dieser Prozess fragt vom Device allerlei sogenannte
Descriptoren ab um herauszufinden, um was für eine Art Device es
sich handelt.  Für ein CDC schließt das auch solche Dinge ein, wie
das Aufteilen eines Transfers von mehr als 64 Bytes in zwei Pakete,
weil einer der Descriptoren zwangsweise so groß ist, dass er nicht
in 64 Byte hineinpasst.

Erst, nachdem das alles gelaufen ist, akzeptiert der Host das Device,
und dann kann man mit der eigentlichen Datenübertragung beginnen.  Die
Routinen dafür sind jedoch zu diesem Zeitpunkt bereits alle da, denn
die braucht man schon zum Übertragen der Descriptoren selbst.

Ich habe seinerzeit mal versucht, ein minimales Beispiel für ein CDC
zu schreiben, das ohne vielfälte Abstraktionsschichten arbeitet.  Das
kannst du im Rahmen des µracoli-Projekts finden.  Dieses Projekt ist
zwar eigentlich primär für die Ansteuerung der Atmel-Transceiver für
IEEE 802.15.4 gedacht, aber die USB-Funktionalität solltest du wohl
auch so benutzen können.

von michi (Gast)


Lesenswert?

Ok Ok jetzt wird mir langsamm alles klar das des mit den USB etwas 
größerer aufwand ist :(

naja da muss ich mich halt durch kämpfen

tut mir leid wenn ich jetzt so blöd frage aber wo finde ich das 
µracoli-Projekts

gruß

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

michi schrieb:
> aber wo finde ich das
> µracoli-Projekts

Erster Treffer bei Gugel:

http://www.nongnu.org/uracoli/

Die konkrete Implementierung für den AT90USB1287 ist in dieser
Datei:

http://cvs.savannah.gnu.org/viewvc/uracoli/Src/Lib/Ioutil/hif_at90usb.c?root=uracoli&view=markup

von Stefan (Gast)


Lesenswert?

Hallo,

noch ein kleiner Hinweis:

Schau mal bei "Teensy" (http://www.pjrc.com/teensy/)
dort gibt es in der Bibliothek kleine Beispielprojekte meist nur aus 2 
oder 3 Quellcodefiles die auch für den AT90usb1286 compilierbar sind und 
eventuell mit kleinen Änderungen für AT90USB1287.

Diese Files stammen teils aus LUFA oder haben dort Eingang gefunden.
Die "Projekte" sind gut erklärt und beinhalten auch Beispielprogramme, 
Treiber für den PC.

Gruss Stefan

von peter.m (Gast)


Lesenswert?

@Stefan danke
für den seiten Tipp.

Die Seite ist echt super da versteht man ganz einfach wie das mit dem 
USB funktioniert.

danke auch an alle anderen die mir geholfen haben

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.