USB Stack für AT90USB162

Gast #2237181
Lesenswert?

Hallo,
gibt es einen fertigen USB-Stack (in C) für den AT90USB162?
Hab schon gesucht und auch ein paar Sachen ausprobiert aber ich musste 
feststellen das alles für  AT90USBxxx7 und AT90USBxxx6 ausgelegt ist. Da 
ich nur erst mal "schnell" ausprobieren wollte wie sich mit der USB 
Schnittstelle arbeiten lässt suche ich möglichst was fertiges damit ich 
nicht erst selber die Anpassungen vornehmen muss.

Gruß
wuka-rudi
#2237332
Lesenswert?

Danke für die schnelle Antwort.
auf LUFA bin ich bei meiner Suche auch schon gestoßen.
Ich sehe nur bei dem Wust an Dateien nicht ganz durch welche die 
richtigen sind. Am liebsten hätte ich ein Beispielprojekt wo man nur die 
Dateien dabei hat die nötig sind. Ich arbeite mit dem AVR-Studio5 und 
habe die "AVR Entwicklungsplatine AT90USB162" hier aus dem shop.
#2248303
Lesenswert?

Danke Klaus für den "Teensy" Tip.

Hat jemand damit schon Erfahrungen gesammelt? Soweit kann ich alles 
Kompilieren und die Software läuft auch. Nur unter Windows wird statt 
dem von mir erhofften HID Gerät nur ein unbekanntes Gerät angezeigt.
Ich benutze das Beispiel RAW-HID.
Die Funktion
1
usb_init();
 wird noch durchlaufen.
Aus der Schleife while
1
(!usb_configured()) /* wait */ ;
 kommt er dann nicht mehr raus. Was wohl darauf zurück zu führen ist das 
die Kommunikation mit dem Rechner nicht richtig hin haut. Aber warum das 
weiß ich leider nicht.
Ich benutze das AVR Studio5 auf einer XP Maschine.
Anbei mein Quellcode evt. hab ihr ja ne Idee waran es liegen könnte.
Ach ja ich habe einen Teil des originalen Codes gelöscht da ich die 
ganze Sache mit dem ADC nicht brauche.
Angehängte Dateien:
#2251450
Lesenswert?

ich glaube ich hab den Grund gefunden warum er hier
1
(!usb_configured())
 nicht weiter kommt. weil er nie den
1
USB_COM_vect
 anspringt. Die Interrupts sind Global freigegeben und funktionieren 
auch. Aber ich weiß nicht genau ob und wo dieser Interrupt freigeben 
wird. Komischerweise heißt der im Datenblatt auch "USB Endpoint 
Interrupt request" was ja nicht stört wenn hinter beidem die Gleiche 
Adresse liegt.
Hat da wer ne Ahnung?
#2251516
Lesenswert?

In "USB General Interrupt" kommt das Programm auch rein, dort wird dann 
im UEIENX Register das RXSTPE (Received SETUP Interrupt Enable Flag) 
gesetzt.
Wenn ich das richtig verstehe sollte doch damit Software seitig alles so 
sein das der Interrupt ausgelöst werden sollte so bald der Pc versucht 
das Device zu installieren oder?
Moderator Persönliche Seite #2251558
Lesenswert?

Tobias Pfundt schrieb:
> Wenn ich das richtig verstehe sollte doch damit Software seitig alles so
> sein das der Interrupt ausgelöst werden sollte so bald der Pc versucht
> das Device zu installieren oder?

Keine Ahnung, ohne in den Code reinzugucken.  All die Abläufe sind
ziemlich komplex, und man kann das praktisch nur stückweise
debuggen.  In dem Moment, da dein Debugger einen Breakpoint erreicht,
rennt die ganze Prozedur seitens des USB-Hosts sofort in einen
Timeout, und das Gerät wird danach im Host-USB-Stack "abgeschrieben".

Die ganze Abfolge der verschiedenen Setup-Sequenzen ist der
schwierigste Schritt, den man meistern muss, um so einen USB-Controller
an einen Host ranzubekommen.  Während man das in Betrieb nimmt, nimmt
man zwangsläufig auch all die Dinge in Betrieb, die man später für
den eigentlichen Datentransfer braucht.
#2251560
Lesenswert?

Bin wieder einen Schritt weiter. Jetzt wird das Board vom Rechner 
erkannt.
Denke das Problem lag im PLLCSR-Register dort wird ja der Takt für die 
USB-Anbindung erzeugt. Die Teensy-Sticks verfügen über einen 16Mhz Quarz 
weswegen der Vorteiler auf 2 gesetzt war( (16Mhz/2)*6=48Mhz ). Da die 
"AVR Entwicklungsplatine AT90USB162" nur über einen 8Mhz Quarz verfügt 
muss kein Vorteiler gesetzt werden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren