www.mikrocontroller.net

Forum: Compiler & IDEs Unbekanntes Gerät bei V-USB (www.obdev.at)


Autor: vusb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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/leve...). 
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.

Autor: vusb (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
nach der Vorschau war der Anhang weg, sry

Autor: vusb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Sachich Nich (dude) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sollten es nicht 12MHZ sein?

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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).

Autor: vusb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: vusb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Max:
Als HID wurde eine Tastatur genommen. Dafür brauch ich eigentlich keine 
Treiber.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: vusb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Simon K.
Ist mir schon klar, aber ich brauch keine zusätzlichen^^

Autor: Martin Freund (martinf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Such dir mal nen einfachen USB device lister, z.B. USBView. Der dürfte 
auch ohne Treiber für deine Firmware funktionieren.

Autor: vusb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ 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.

Autor: Martin Freund (martinf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: vusb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"DeviceFailedEnumeration"
Funktioniert anscheinend nicht. Hab auch schon +D und -D getauscht. Habs 
also nicht verwechselt^^

Autor: Martin Freund (martinf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit USBTrace kannst du mal schaun, wie weit die Enumeration kommt.

Autor: vusb (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ergebnis, siehe Anhang

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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?

Autor: Martin Freund (martinf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du brauchst noch die "Device Class Decoders" damit USBTrace die Pakete 
dekodieren kann. Detect Hot-Plugging (Symbol mit dem Stecker) ist 
aktiviert?

Autor: vusb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: vusb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: kaffeetas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: vsub (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.