Forum: Mikrocontroller und Digitale Elektronik ATTiny als HID-USB-Device mit VUSB-Example


von SevenEleven (Gast)


Lesenswert?

Hi,

ich versuche auf einem ATTiny 2313 das HID-Data-Example aus dem 
VUSB-Paket zum laufen zu bekommen.

Im Makefile habe ich den Controllertyp und die Taktfrequenz angepasst. 
Im USBConfig-Header ich die Pins für USB Data+ und Data- auf die 
passenden Werte gesetzt. Das ganze compiliert und lässt sich mit

avrdude -b 1200 -c usbtiny -P usb  -p attiny2313 -U flash:w:main.hex:i 
-U
hfuse:w:0xdf:m -U lfuse:w:0xff:m

auch erfolgreich flashen.

Wenn ich das Gerät aber anschließend per USB verbinde, wird es nicht 
erkannt.

Hat jemand eine Idee, was ich noch übersehen haben könnte?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

SevenEleven schrieb:
> Hat jemand eine Idee, was ich noch übersehen haben könnte?

Da hilft ein Schaltplan. Wenn du den 1k5 von USB Data- gegen Vcc 
geschaltet hast, sollte zumindest die Präsenz eines USB Gerätes vom 
Rechner gemeldet werden.
Liegt USB Data- auf einem Interrupt-fähigen Pin? Schwingt der Quarz? 
Welche Frequenz hast du gewählt? Welche Dataleitung Lösung hast du 
gewählt (entweder den Tiny mit 3V3 powern oder Zenerdioden in den USB 
Leitungen)

von SevenEleven (Gast)


Lesenswert?

Die Hardware halte ich für unverdächtig, da die nicht von mir ist: 
http://dokuwiki.ehajo.de/_media/bausaetze:usba-isp.pdf

Mein Verdacht ist her, dass ich softwareseitig noch irgendwas vergeigt 
habe, was eine USB-Kommunikation verhindert?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Matthias Sch. schrieb:
> Da hilft ein Schaltplan. Wenn du den 1k5 von USB Data- gegen Vcc
> geschaltet hast, sollte zumindest die Präsenz eines USB Gerätes vom
> Rechner gemeldet werden.

Und? Wird da was gemeldet?
R3 ist mit 2k2 eigentlich ausserhalb der Specs. Wird PD4 von dir auch 
High angesteuert? (Software USB-Reset)

von c-hater (Gast)


Lesenswert?

Matthias Sch. schrieb:

> R3 ist mit 2k2 eigentlich ausserhalb der Specs.

Wie die ganze Konstruktion, denn LowSpeed-Geräte haben eigentlich mit 
3.3V zu laufen. Die Dimensionierung des Widerstands ist nur die logische 
Konsequenz aus dem 5V-Betrieb.

Kurzfassung: Das paßt schon so wie angegeben.

von c-hater (Gast)


Lesenswert?

SevenEleven schrieb:

> Mein Verdacht ist her, dass ich softwareseitig noch irgendwas vergeigt
> habe, was eine USB-Kommunikation verhindert?

Das ist natürlich möglich, aber du solltest trotzdem am Computer die 
Meldung bekommen, daß ein neues USB-Gerät entdeckt wurde. Passiert das 
nicht, fehlt definitiv mindestens die Ansteuerung des Pins, an dem der 
2.2k-Widerstand hängt.

Also entweder paßt die reale Pin-Belegung nicht zu der im Programm 
deklarierten oder das Program läuft erst garnicht oder da ist eine Macke 
in der Verdrahtung.

von SevenEleven (Gast)


Lesenswert?

Die Pinbelegung sollte eigentlich passen, da habe ich 2 und 3 angegeben, 
was lt. Schaltplan auch richtig ist.

Ob das Programm läuft, weiß ich nicht mit Sicherheit, aber was mir noch 
eingefallen ist: ich habe in der USB-Config USB_CFG_VENDOR_NAME und 
USB_CFG_DEVICE_NAME geändert. USB_CFG_VENDOR_NAME_LEN und 
USB_CFG_DEVICE_NAME_LEN habe ich angepasst, die sind jetzt aber länger 
als 8 Zeichen - kann das Probleme machen?

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Dir wurde das jetzt schon mehrmals gesgat, aber das ignorierste ja 
fleißig:
Schaltest du PD4 auf Ausgang und HIGH?

Sind die Fuses auch auf das externe 12MHz Quarz eingestellt?

Zudem probiert man Code erstmal unverändert aus um zu prüfen ob die 
Hardware läuft, dann kann man an dne IDs fummeln.

von Εrnst B. (ernst)


Lesenswert?

Matthias Sch. schrieb:
> R3 ist mit 2k2 eigentlich ausserhalb der Specs.

Der Detection-Widerstand soll 1k5 gegen *3.3V* haben.
Der AVR in der Schaltung läuft direkt mit Vusb, also so 4…5V.
die 2k2 sind deshalb näher an der Spec als es 1k5 wären...

Alles in allem läuft VUSB aber oft recht unzuverlässig.
Versuch mal einen Hub dazwischezuschalten, oder die beiden D+/D- 
Z-Dioden einzusparen, gffs. dann den AVR mit weniger Spannung betreiben.
So ist zwar der AVR selber aus seiner Spec (leicht übertaktet), dafür 
aber das USB-Interface näher an seiner...

: Bearbeitet durch User
von SevenEleven (Gast)


Lesenswert?

Martin Wende schrieb:
> Dir wurde das jetzt schon mehrmals gesgat, aber das ignorierste ja
> fleißig:
> Schaltest du PD4 auf Ausgang und HIGH?

Nö, ich hab's schlichweg überlesen - sorry!

Ehrliche Antwort: keine Ahnung. Ich verwende exakt den Code von 
https://github.com/obdev/v-usb/blob/master/examples/hid-data/firmware/main.c 
und gehe einfach mal davon aus, dass der passt!?

> Sind die Fuses auch auf das externe 12MHz Quarz eingestellt?

Mit "-U hfuse:w:0xdf:m -U lfuse:w:0xff:m" so weit ich das sehe: ja.

> Zudem probiert man Code erstmal unverändert aus um zu prüfen ob die
> Hardware läuft, dann kann man an dne IDs fummeln.

Ja, ich weiß schäm

Ich habe die IDs halt für unkritischen Pipifax gehalten :-]

von SevenEleven (Gast)


Lesenswert?

Εrnst B✶ schrieb:
> Versuch mal einen Hub dazwischezuschalten, oder die beiden D+/D-
> Z-Dioden einzusparen, gffs. dann den AVR mit weniger Spannung betreiben.
> So ist zwar der AVR selber aus seiner Spec (leicht übertaktet), dafür
> aber das USB-Interface näher an seiner...

Eine Lösung mit Änderungen an der Hardware kommt leider nicht in Frage, 
da die laut Vorgabe unverändert bleiben muss...

von c-hater (Gast)


Lesenswert?

Εrnst B✶ schrieb:

> Alles in allem läuft VUSB aber oft recht unzuverlässig.

Nur die Sparlösung mit 12MHz. Ab 18MHz ist eine vollständige Prüfung 
aller prüfbaren Sachen möglich. Und dann lauft das Ding auch bei 
schlechter Kabelage und miesen Hubs stabil.

> So ist zwar der AVR selber aus seiner Spec (leicht übertaktet)

Leicht? 50%! Das ist nicht "leicht".

von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

c-hater schrieb:
> Leicht? 50%! Das ist nicht "leicht".

Wie kommst du auf 50% ?

Der ATtiny2313 läuft laut Datenblatt-Übersicht ab 2.7V mit 10MHz.
12 statt 10 MHz ist "leicht übertaktet". Vor allem da wir mit so 3.3 … 
3.6V ja noch ein gutes Stück von den 2.7V weg sind.

Laut dem VCC vs Freq. Diagramm schaut das sogar völlig "legal" aus.
Genau kann man's da aber nicht ablesen, wirkt aber so, als könnte man 
linear zw. 2.7V und 4.5V interpolieren.

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.