Forum: Mikrocontroller und Digitale Elektronik ATtiny45 + VUSB -> unable to enumerate USB device


von Marek S. (kfreak)


Angehängte Dateien:

Lesenswert?

Hallo,

versuche einen USB-UART Umsetzer mit einem Attiny85 ohne Kristall zu 
realisieren.

Nach langem herumprobieren ohne Reaktion auf dem Computer habe ich 
diesen Thread gefunden:
Beitrag "ATtiny45 + VUSB -> gerät wird nicht erkannt"

Habe dann die Schaltung nachgebaut, die dort als Schematic gepostet ist, 
und die dortige Software kompiliert (scriptkiddy hat ja festgestellt, 
dass eine Zeile in usbconfig.h einkommentiert werden muss; usbdrvasm.S 
habe ich nicht veraendert).

Geflasht, und der Aufbau ruft jetzt wenigstens eine Reaktion am Computer 
hervor. Allerdings bekomme ich so etwas:
1
$ dmesg 
2
[20736.888061] usb 5-1: new low speed USB device number 31 using ohci_hcd
3
[20737.028065] usb 5-1: device descriptor read/64, error -62
4
[20737.272097] usb 5-1: device descriptor read/64, error -62
5
[20737.512081] usb 5-1: new low speed USB device number 32 using ohci_hcd
6
[20737.652206] usb 5-1: device descriptor read/64, error -62
7
[20737.900072] usb 5-1: device descriptor read/64, error -62
8
[20738.140113] usb 5-1: new low speed USB device number 33 using ohci_hcd
9
[20738.548047] usb 5-1: device not accepting address 33, error -62
10
[20738.604087] hub 5-0:1.0: unable to enumerate USB device on port 1

Kann jemand an dem Aufbau einen Fehler erkennen? Kabel ist nur ~10 cm 
kurz. Windows funktioniert das Geraet auch nicht. Habe drei verschiedene 
Computer versucht.

von Simon K. (simon) Benutzerseite


Lesenswert?

USB auf dem Steckbrett mit THT Bauteilen, die 1cm überm Board hängen? Na 
dann Good Luck!

von Marek S. (kfreak)


Angehängte Dateien:

Lesenswert?

Gleicher Fehler... Koennte aber wirklich ein Signalqualitaetsproblem 
sein... Habe woanders gelesen, dass Leute Elko's benutzt haben, um VCC 
zu stabilisieren. Hat bei mir nicht gebracht (6u8, 100u, 1000u)

Aber bevor es auf dem Steckbrett tut werde ich das nicht zusammenloeten.

von Herman (Gast)


Lesenswert?

Marek S. schrieb:
> Koennte aber wirklich ein Signalqualitaetsproblem
> sein...
mit einem Scope verfiziert?

von Der Weise (Gast)


Lesenswert?

Ohne Quarz? Bei ner ollen UART-Übertragung klappt das ja schon nicht, 
und bei V-Usb? oje :D

von Herman (Gast)


Lesenswert?

Der Weise schrieb:
> Ohne Quarz? Bei ner ollen UART-Übertragung klappt das ja schon nicht,
> und bei V-Usb? oje :D
Lies doch erst mal den alten Thread:
Beitrag "ATtiny45 + VUSB -> gerät wird nicht erkannt"

von Johannes O. (jojo_2)


Lesenswert?

Der 2*1N4148 "Spannungsregler" trägt bestimmt auch nicht zur Stabilität 
der Schaltung bei...

von USB eye (Gast)


Lesenswert?

Das Scope-Bild sollte schon so aussehen:
http://www.lecroy.com/images/serialdata/usb_eye_sm.jpg

von Marek S. (kfreak)


Lesenswert?

Herman schrieb:
> Marek S. schrieb:
>> Koennte aber wirklich ein Signalqualitaetsproblem
>> sein...
> mit einem Scope verfiziert?

Ich koennte fuer kurze Zeit an ein Oszi, aber nach was soll ich schauen? 
Es besteht ja keine stabile Verbindung. Schickt der Computer einen 
konstanten Datenstrom ueber die Leitungen egal was dranhaengt?
Oder hoch frequente Stoerung auf VCC?

von USB eye (Gast)


Lesenswert?

Mir sind zwei Tools für Windows bekannt, mit denen du den Trafik 
kontrollieren könntest: USBlyzer und USBTrace. Vielleicht kannst du 
damit herausfinden, wo es klemmt.

von Simon K. (simon) Benutzerseite


Lesenswert?

Der Weise schrieb:
> Ohne Quarz? Bei ner ollen UART-Übertragung klappt das ja schon nicht,
> und bei V-Usb? oje :D

Bei V-USB gibt es AFAIK eine Art Auto-Konfiguration des internen 
Oszillators über USB.

von Andreas B. (andreasb)


Lesenswert?

Was für ein Clock hast du gewählt?

Bei V-USB den gleichen Clock eingestellt?

Lass mal eine LED blinken, dann siehst du ob du nicht doch ein Problem 
mit dem Clock hast.

Pullup hast du korrekt angehängt, sonst würde "new low speed USB device 
number 31 using ohci_hcd" nicht erscheinen.




mfg Andreas

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


Lesenswert?

Marek S. schrieb:
> [20738.140113] usb 5-1: new low speed USB device number 33 using ohci_hcd

Wie schon mal erwähnt, bedeutet das nur, das der 1k5 pullup Widerstand 
am USB gefunden wurde.
Wenn du wirklich die Quarzlose Version von V-USB zum Laufen bekommen 
willst, musst du zwingend die 16,5 Mhz Variante wählen und auch den 
Autocalibration Code in dein Projekt einbauen und starten.
Ich habe mich wirklich viel mit V-USB beschäftigt und dabei für mich 
hearausgefunden, das die ohne-Quarz Variante nicht wirklich zuverlässig 
funktioniert, vor allem, wenn dann auch noch die 2-Dioden 
Spannungsversorgung benutzt wird. Mal gings, aber meistens nicht. 
Deswegen benutze ich für meine Tinys einen externen 16Mhz Oszillator und 
damit läufts richtig gut und zuverlässig. Externen Oszillator, weil ich 
damit nur einen Pin verbrate. Wenn beide Portpins noch frei sind, 
kannste auch einen normalen Quarz nehmen. Übrigens sind 16,5 Mhz und 3,3 
Volt Versorgung bei den meisten AVRs im grenzwertigen Bereich.

von Marek S. (kfreak)


Lesenswert?

Andreas B. schrieb:
> Was für ein Clock hast du gewählt?
16,5 MHz
> Bei V-USB den gleichen Clock eingestellt?
Im Makefile steht "-DF_CPU=16500000UL" (genau der gleiche Makefile, wie 
in dem .zip aus dem am Anfang erwaehnten Thread)
http://www.mikrocontroller.net/attachment/103732/USB-Controll.zip


Matthias Sch. schrieb:
> Übrigens sind 16,5 Mhz und 3,3
> Volt Versorgung bei den meisten AVRs im grenzwertigen Bereich.
Sind 3,3V (2 Dioden) und ein externer 16MHz Quartz (+2x 22pF) auch 
grenzwertig? Oder stabil?

von Herman (Gast)


Lesenswert?

Marek S. schrieb:
> und ein externer 16MHz Quartz (+2x 22pF) auch
> grenzwertig? Oder stabil?
USB benötigt ein exaktes timing. Vergiss es.

von Marek S. (kfreak)


Lesenswert?

Jetzt wo ich darueber nachdenke: Fuer was steht eigentlich das UL im 
Makefile nach der Frequenz? Muss man das vielleicht weglassen?

von Andreas B. (andreasb)


Lesenswert?

Marek S. schrieb:
> Jetzt wo ich darueber nachdenke: Fuer was steht eigentlich das UL im
> Makefile nach der Frequenz? Muss man das vielleicht weglassen?

Unsigned Long?

Ich kenne nur das L für Long...



mfg Andreas

von Opfer (Gast)


Lesenswert?

Andreas B. schrieb:
> Ich kenne nur das L für Long...
traurig...

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


Lesenswert?

Marek S. schrieb:
> Sind 3,3V (2 Dioden) und ein externer 16MHz Quartz (+2x 22pF) auch
> grenzwertig? Oder stabil?

Es geht um die Grafik 'Safe Operating Area' auf Seite 168 des 
ATTiny25/45/85 Datenblattes . Die Grafik ist nicht wirklich genau, aber 
man kann sehen , das 20Mhz erst ab 4,5 Volt Vcc 'Safe' sind. 16,5 Mhz 
und 3,3 Volt muss man mal abmessen, sind aber hart an der Grenze der 
'Safe Operation'

Ob Quarz oder PLL spielt dabei erstmal keine Rolle, mit ein bisschen 
Pech arbeitet die PLL aber nicht genau genug. Quarz ist auf jeden Fall 
die beste Lösung für ein USB Device, vor allem, wenns an mehreren 
Rechnern laufen soll. Meine Projekte jedenfalls laufen an diversen Macs, 
Windoof Grotten und Linuxboxen.
http://www.schoeldgen.de/avr/
Und ja, UL steht für unsigned long und ist da richtig.

von Marek S. (kfreak)


Lesenswert?

Ich koennte den uC mit 5 Volt betreiben, aber ich habe keine 3,6 oder 
3,3 V Z-Dioden hier (um die Datenleitungen runterzuziehen).

http://www.rn-wissen.de/index.php/V-USB:_Ein_Firmware_USB-Treiber_für_AVR
Pullup sollte dann 2k2 sein.

In dem verlinkten Wiki steht "Es werden 3,6V Low-Power Zenerdioden (wie 
1N4148, 500mW oder weniger) empfohlen, ...".
Aber 1N4148 ist doch keine 3,6 V Zenerdiode?

von Opfer (Gast)


Lesenswert?

Marek S. schrieb:
> Aber 1N4148 ist doch keine 3,6 V Zenerdiode?
Mir scheint, dir fehlen die Grundlagen.

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


Lesenswert?

Nein Opfer, es gibt nur unterschiedliche Methoden bei V-USB, um die für 
USB notwendigen 3,3 Volt auf den Datenleitungen zu erzeugen. Beide 
werden bei obdev.at beschrieben.
Die eine Methode ist, den MC über zwei Si-Dioden aus den 5Volt des USB 
zu betreiben, gibt, wie du weisst, so ca 3,4-3,6 Volt. In dem Fall 
werden die USB Datenleitungen direkt an den MC angeschlossen.
Die andere Methode ist, den MC direkt mit den 5 Volt zu speisen und die 
Datenleitungen per Widerstand und 3,6 Volt Zenerdioden auf den Pegel zu 
drücken.

von spess53 (Gast)


Lesenswert?

Hi

>> Aber 1N4148 ist doch keine 3,6 V Zenerdiode?
>Mir scheint, dir fehlen die Grundlagen.

Ihm oder dir? Wenigstens hat er bemerkt das dort Müll steht.

MfG Spess

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


Lesenswert?

Das im Wiki ist natürlich Blödsinn, das ist doch wohl jedem klar. 
Vertrau nie dem Internet.

von Heinz (Gast)


Lesenswert?

spess53 schrieb:
> Ihm oder dir? Wenigstens hat er bemerkt das dort Müll steht.
Es steht ausser Frage, dass er es bemerkt hat, aber das öffentlich in 
Frage zu stellen, zeugt auch nicht von Erfahrung.

von Marek S. (kfreak)


Lesenswert?

Werde das mal ruhen lassen bis ich mir irgendwo 3,6 V Zenerdioden 
besorgt habe. Und probiere das ganze dann mit +5V.

Alternative waere ein AtMega32u2 mit integriertem USB. 3,40 Euro bei R. 
Dann haette ich das Interface, das auf den Arduino's realisiert ist. 
Aber Tiny ist eigentlich genug fuer mich.

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


Lesenswert?

Marek S. schrieb:
> Werde das mal ruhen lassen bis ich mir irgendwo 3,6 V Zenerdioden
> besorgt habe. Und probiere das ganze dann mit +5V.

Die dritte lösung ist übrigens vermutlich die beste: Speise den Tiny mit 
einem 3,3 Volt LowDrop Regler, dann ist er stabil und braucht gar kein 
Gedöns in den USB Leitungen. Allerdings ist er immer noch am Rande der 
'Safe Operating Area'. Da die Arduinos aber genauso laufen, stellt das 
vermutlich das kleinere Problem dar.

von Marek S. (kfreak)


Lesenswert?

Matthias Sch. schrieb:
> Die dritte lösung ist übrigens vermutlich die beste: Speise den Tiny mit
> einem 3,3 Volt LowDrop Regler, dann ist er stabil und braucht gar kein
> Gedöns in den USB Leitungen.
Was die Schaltung aber auch nicht kompakter macht... Ich werde es mal 
mit einem Labornetzteil versuchen, oder LM317.

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


Lesenswert?

Die meisten Dreibein Regler ( und der LM317 ist da keine Ausnahme) 
benötigen allerdings eine grössere Spannung zwischen Ein- und Ausgang 
als 5 Volt auf 3,3 Volt, deswegen mein Rat mit dem LowDrop Regler. Die 
gibt es übrigens auch als SMD...
Labornetzteil geht natürlich, nur speise die 5 Volt nicht in den Rechner 
zurück, hehehe.

von Marek S. (kfreak)


Lesenswert?

Hilft nicht.
Habe mit einem Labornetzteil 3,3 und 3,6 V versucht (VCC vom USB nicht 
angeschlossen), aber wird immer noch nicht erkannt.
Mit einem Oszi sehe ich, dass ueber die Leitungen Digitalsignale 
versendet werden mit ~3,5V Amplitude (alle 10 sekunden).
VCC pendelt um die 50 mV.

Hat jemand ein fertig kompiliertes .hex und einen dazugehoerigen 
Schaltplan rumliegen, das mit einem Attiny85 funktioniert?

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.