Ich möchte gerne in die Welt des USB einsteigen. Dazu habe ich mir ein Beispiel der V-USB lib ausgesucht und umgesetzt. Leider erhalte ich ständig die Meldung "Unbekanntes USB Gerät". Ich besitze das Pollin Board und habe einen ATmega8 mit 16MHz darauf laufen. Geflasht wird mit AVR Lab. Als Pegel Konverter habe ich an den Leitungen D+/D- jeweils Z-Dioden 3,6V dran (siehe http://vusb.wdfiles.com/local--files/hardware/level-conversion-with-zener.gif). Da der ATmega nicht vom USB versorgt wird, habe ich lediglich die Massen von USB und dem ATmega verbunden. Ich hänge das gesamte AVR-Studio Projet inklusive der Fuse-Einstellungen in den Anhang. Ich hoffe es kann mir jemand helfen.
Hat denn schon mal jemand etwas mit V-USB von www.obdev.at gemacht und kann mir evtl. eine *.hex für einen ATmega8 mit 16MHz hochladen? Da könnte ich schon mal abklären, ob es an der Hardware oder an der Software liegt.
Also beim USBASP sind es 12 MHz, mit denen der Mega läuft. Und bei Windows is ja alles wofür Windows kein Treiber mitbringt ein "unbekanntes USB Gerät". Ist beim USBASP auch so. Und eigtl. will WIndows dann doch auch ein Treiber installieren... muss man ihm halt ein passenden geben. Da ein USB Gerät erkannt wird, geh ich einfach mal davon aus, dass der Mega das macht was er soll, da wenn ich mich nich irre, der sich ja bei dem USB Host regelmässig melden muss(oder verwechsel ich da jetzt was).
laut Website von V-USB: "Can be clocked with 12 Mhz, 15 MHz, 16 MHz or 20 MHz crystal or from a 12.8 MHz or 16.5 MHz internal RC oscillator." Der 16MHz Oscillator ist auch fest verlötet. Hab auch die defines und die Projekteinstellungen schon auf 16MHz angepasst. Sollte also gehen.
@Max: Als HID wurde eine Tastatur genommen. Dafür brauch ich eigentlich keine Treiber.
vusb schrieb: > @Max: > Als HID wurde eine Tastatur genommen. Dafür brauch ich eigentlich keine > Treiber. Klar brauchst du die. Aber die sind bei Windows schon dabei.
@Simon K. Ist mir schon klar, aber ich brauch keine zusätzlichen^^
Such dir mal nen einfachen USB device lister, z.B. USBView. Der dürfte auch ohne Treiber für deine Firmware funktionieren.
@ Martin Freund: Ich bin der Meinung ich benötige keinen extra Treiber. Es wird ja lediglich eine Tastatur simuliert. Es wird also sicherlich nicht am evtl. fehlenden Treiber liegen. Es wird ja auch keine automatische Treiberinstallation vorgenommen. Das Gerät wird einfach nicht erkannt und ich weiss nicht ob es an der Hard- oder Software liegt.
Deswegen sollst du ja mit USBView mal schaun, ob die Enumeration funktioniert. Gibt auch noch USB20CV, das testet alle Anforderungen an ein USB Gerät; gibts leider nur für x86 WinXP.
"DeviceFailedEnumeration" Funktioniert anscheinend nicht. Hab auch schon +D und -D getauscht. Habs also nicht verwechselt^^
Mit USBTrace kannst du mal schaun, wie weit die Enumeration kommt.
> Der 16MHz Oscillator ist auch fest verlötet. Hab auch die defines und > die Projekteinstellungen schon auf 16MHz angepasst. Sollte also gehen. Und die sogenannten "Fuses" hast Du auch korrekt gesetzt?
Du brauchst noch die "Device Class Decoders" damit USBTrace die Pakete dekodieren kann. Detect Hot-Plugging (Symbol mit dem Stecker) ist aktiviert?
>Und die sogenannten "Fuses" hast Du auch korrekt gesetzt? >>Ich hänge das gesamte AVR-Studio Projet inklusive der Fuse-Einstellungen >>in den Anhang. Hab ich extra als *.png mit in das Archiv gepackt. >Detect Hot-Plugging (Symbol mit dem Stecker) ist aktiviert? Ja
Hallo, die Leitungen, Widerstände, Z-Dioden und USB-Buchse sind auch halbwegs kurz verdrahtet? USN kann da schon ziemlich sensibel sein, speziell mit den Pegeln, die ja bei der AVR-Version nicht unbedingt normgerecht sind. Gruß aus Berlin Michael
>die Leitungen, Widerstände, Z-Dioden und USB-Buchse sind auch halbwegs >kurz verdrahtet? Ist alles auf einem Streifenraster angebracht und dann über kurze Drähte mit dem Pollin Board verbunden.
Meiner Meinung liegts an der "falschen" Frequenz von 16Mhz. In den neueren Versionen wird in der usbdrvasm.S am Schluß Code in Abhängigkeit der Taktfrequenz includiert. Dieser Abschnitt fehlt bei deinem Code leider völlig! Das einfachste wäre IMHO ins Pollinboard einen Präzisionsockel fürs Quarz zu löten und dann mal testhalber einen 12MHz Quarz ausprobieren. (Projekt dazu auch für 12Mhz compilieren) "Unbekanntes USB Gerät" kommt meiner Erfahrung nach fast eigentlich immer wenn Windows am D- einen High Pegel detektiert aber nicht mit dem Device kommunizieren kann. Ich spreche hier aus Erfahrung. Ich hab mal das CDC USB-RS232 Projekt mit 16Mhz zum laufen gebracht und bin dann dabei auf die zusätzliche Frequenzselektion in der .S Datei gestoßen. Dein Code entspricht auch eher dem Code aus der usbdrvasm12.inc (12Mhz) als dem aus usbdrvasm16.inc (16Mhz). Insbesonders bei den als timingrelevant gekennzeichneten Funktionen. Grüße kaffeetas
>Das einfachste wäre IMHO ins Pollinboard einen Präzisionsockel fürs >Quarz zu löten und dann mal testhalber einen 12MHz Quarz ausprobieren. >(Projekt dazu auch für 12Mhz compilieren) Hab ich jetzt gemacht und mit 12MHz funktionierts. THX
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.