Forum: Mikrocontroller und Digitale Elektronik tiny85 und v-usb Referenz Projekt


von Hans Müller (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe mir einmal das Referenzprojekt von

https://www.obdev.at/products/vusb/easylogger.html

aufgebaut. Die Schaltung ist ja auch sehr einfach und hoffentlich nicht 
so fehlerträchtig. Die gängigen Fehler sind vermieden (UB sauber und 
kurz mit 220nF terminiert, alle Verbindungen kurz). Einzige Änderung am 
AD Wandler hängt ein lm335 zur Temperaturmessung. Der liefert sinnvolle 
Spannungen.

Ein kleines Testprogramm tut auf der Hardware problemlos und läßt die 
LED blinken. Nun flugs das Referenzprojekt angepaßt (tiny45 -> tiny85, 
Programmer ist anders), make - alles Ok, make flash, alles Ok.
Beim Anstecken an den USB Bus bekomme ich aber leider keine Funktion 
sondern
diese Fehler (Linux):
Jan 31 22:34:29 hans kernel: usb 4-1.6: device descriptor read/64, error 
-32
Jan 31 22:34:30 hans kernel: usb 4-1.6: device descriptor read/64, error 
-32
Jan 31 22:34:30 hans kernel: usb 4-1.6: new full-speed USB device number 
6 using ehci-pci
Jan 31 22:34:30 hans kernel: usb 4-1.6: device descriptor read/64, error 
-32
Jan 31 22:34:30 hans kernel: usb 4-1.6: device descriptor read/64, error 
-32
Jan 31 22:34:30 hans kernel: usb 4-1.6: new full-speed USB device number 
7 using ehci-pci
Jan 31 22:34:31 hans kernel: usb 4-1.6: device not accepting address 7, 
error -32
Jan 31 22:34:31 hans kernel: usb 4-1.6: new full-speed USB device number 
8 using ehci-pci
Jan 31 22:34:31 hans kernel: usb 4-1.6: device not accepting address 8, 
error -32
Jan 31 22:34:31 hans kernel: usb 4-1-port6: unable to enumerate USB 
device


Beim drücken des Tasters geht die LED an, aber es kommen keine 
Tastaturdaten. Die HW ist so simpel, da kann doch nichts schiefgehen ?
Einzige Unbekannte ist das USB Kabel, das mußte eine alte USB Maus 
spenden und ist ca. 80cm lang und ungeschirmt.

Im Forum hatte ich ein paar ähnliche Beiträge gefunden wo es kritisch zu 
sein scheint mit dem Takt, der im Beispielcode automatisch kalibriert 
wird.
Ich habe diese Routine einmal entfernt und den Takt der CPU mit einem 
Fregquenzzähler (Testrogramm LED an, LED aus, 6 Taktzyklen) genau auf 
16,50x MHz abgeglichen - kein Erfolg, gleiches Verhalten.

Hat jemand eine Idee was das sein kann ?
Ich bin recht ratlos.
Der Treiber sollte wohl recht gut "abgehangen" sein und keine Bugs 
enthalten.

Bei den Bildern ist der Abblockkondensator im IC Sockel und nicht 
sichtbar.

von flo (Gast)


Lesenswert?

D+ und D- vertauscht?

von Karl M. (Gast)


Lesenswert?

ist ein CLC Filter am USB Vdd verbaut ?

von Easylogger-Stick (Gast)


Lesenswert?

Mach mal die frei rumhängenden USB-Adern (ohne Schirmung) kürzer. Das 
hat bei mir nie gut funktioniert wenn die so rumschlackern.

Ich bin dann dazu übergegangen die V-USB Teile (damals noch tinyUSB) 
direkt mit Stecker zu bauen, wie ein USB-Stick eben.

Ich sehe auch in deiner Schaltung nicht wo da der Kerko direkt am Vcc 
vom Tiny sein soll - der ist wichtig. Ich werd jetzt nicht deine 
Schaltung aus dem Board reversen, ich kann aber sagen, dass diese 
Schaltung bei mir immer einwandfrei funktioniert hat - so krude sie auch 
sein mag!

https://www.obdev.at/Images/vusb/circuit-zoomed.gif

von Hans Müller (Gast)


Lesenswert?

Nein, ein probeweises Tauschen bring gar keine Meldung.
Muß also richtig sein und stimmt auch mit dem Schaltplan.

von Hans Müller (Gast)


Lesenswert?

Ja, das Kabel habe ich auch in Verdacht, ich werde es einmal kürzen und 
berichte.
-
Der Kerko ist direkt unter dem IC (kurze Leitungen).
Test Softwas läuft ja auch problemlos.

Allen schon mal vielen Dank!

von Easylogger-Stick (Gast)


Lesenswert?

Und ja, die funktioniert auch mit dem tiny45 - es geht mir um die Vcc 
aus USB über 2 Dioden und USB D+/- ohne Z-Dioden nor mit Widerständen 
auf Int1/2.

von Easylogger-Stick (Gast)


Lesenswert?

Die Z-Dioden machen nämlich auch oft mal probleme - nimm die im Zweiffel 
einfach mal raus. Angswiderstände sind ja da...

von Easylogger-Stick (Gast)


Lesenswert?

Liegt an der Kapazität der Z's - die SMD-Z's sind da meist ok, mit 
bedrahtet hatte ich Probleme.

von Hans Müller (Gast)


Lesenswert?

Ich vergaß zu erwähnen, daß das Verhalten ohne Z-Dioden mit 3,3V UB das
gleiche, Falsche ist.

Jedoch wir der Controller bei 3,3V und 16,5 MHz ein wenig außerhalb der 
Specs betrieben (geht aber, nur Serienfertigung sollte man sicherlich 
nicht so machen).

Hat eigentlich jemand mal einen Tiny mit externem Takt hochgejagt ?
Ich vermute bei 5V wird es mit einzelnen Exemplaren auch noch mit 40MHz 
gehen (aber ohne den Segen von Atmel) ?

von Easylogger-Stick (Gast)


Lesenswert?

Nana, das ist doch hier kein Overclocker-Forum.

Die Z's hängen an den USB-D+/- um den Pegel zu begrenzen wenn der Chip 
nur mit 3,xV läuft. Denn die AVR's dürfen an den Digitalpins ja nur was 
- Vcc+0,?V bekommen? Ist schon etwas her das Datenblatt.

Mit den zwei 1n4148 in der 5V-Leitung vom USB lief mein Tiny45 immer so 
mit ca. 3,6V. Klar sind die 16MHz für 3,3V und auch 3,6V außer Spec. 
aber das ist kein Problem gewesen. Lief trotzdem immer. Die Mega8 im 
USBasp laufen ja auch bei 3,3V noch problemlos. Bisher hab ich noch 
keinen AVR gefunden der nicht bei 3,3V trotzdem mit seinem für 5V 
garantierten Takt lief. Ist halt eben nur nicht von Atmel garantiert...

von Easylogger-Stick (Gast)


Lesenswert?

Warte mal, ich hab mir gerade doch noch mal dein Aufbau angesehen. Der 
Tiny läuft doch mit 5V und du ziehst die D+/- Signale auf Z-Spannung 
runter. DAS hat nie zuverlässig funktioniert meiner Erfahrung nach.

Lass den Tiny auf 3,?V laufen - dann wird alles gut. 2x 4148 in die USB 
5V oder ein 3V3 Regler. Z-Stabilisierung würde vieleicht auch gehen, hab 
ich aber nie gesehen.

Viel Erfolg - Zeit fürs Bett!

von Jim M. (turboj)


Lesenswert?

Hans Müller schrieb:
> Jan 31 22:34:30 hans kernel: usb 4-1.6: new full-speed USB device number
> 6 using ehci-pci

Man beachte das "full-speed" bei der Meldung. VUSB ist nur Low-Speed, 
und die unterscheiden sich daran dass der Pullup bei Low Speed an D- 
gehängt wird.

Du hast also mit fast 100%iger Sicherheit irgendwo D+ und D- vertauscht. 
Das kann so nicht tut.

von Hans Müller (Gast)


Lesenswert?

Es ist mir schon fast peinlich. D+ und D- waren tatsächlich vertauscht.
Nun spielt es wie es soll!

Herzlichen Dank an alle!

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Gibt es diese vUSB-Routinen auch als ASM?
Fand bis jetzt nur C-Files und damit kann ich nicht so :/
(Klar kann ich die HEX zerpflücken, aber so richtig glücklich werde ich 
damit wohl auch nicht werden)

MfG

von c-hater (Gast)


Lesenswert?

Patrick J. schrieb:

> Gibt es diese vUSB-Routinen auch als ASM?

Es gibt sogar deutlich besseres als das. Nur leider nicht öffentlich 
verfügbar.

Der eigentliche Trick von V-USB ist allerdings auch bei V-USB selber 
NATÜRLICH direkt in Assembler geschrieben. Weil: Es gibt schließlich 
nix, was besser ist, wenn es um exaktes Timing geht und es gibt auch nix 
besseres, wenn es um maximale Performance geht.

Sprich: Du musst einfach mal in die Tiefen der Verzeichnistruktur der 
Quelltexte schauen, dann findest du auch reichlich Assembler. Vermutlich 
sogar deutlich mehr als du jemals sehen wolltest und verstehen kannst...

> Fand bis jetzt nur C-Files und damit kann ich nicht so :/
> (Klar kann ich die HEX zerpflücken, aber so richtig glücklich werde ich
> damit wohl auch nicht werden)

Du könntest statt dessen auch einfach die USB-Specs lesen. Das bissel 
recht triviales Zeug, was V-USB in C implementiert, kann man (deutlich 
effizenter) recht leicht auch in Asm umsetzen. Wenn man denn Assembler 
wirklich kann und obendrein weiss, was man da eigentlich programmieren 
will. Für letzteres muss man halt die USB-Specs gelesen und verstanden 
haben.

So einfach ist das eigentlich...

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi c-hater

Von mir ist die '-1' nicht anmerk

Werde mich dann Mal, ... wenn Zeit ... Lust ... Kleingeld ... weitere 
Ausreden hier einfügen ... daran machen, dem Zeug 'unter den Rock' zu 
schauen.
Bei den ganzen Spezifikationen bin ich mit meinen minimalistischen 
Englisch-Kenntnissen (wurde schon versucht, Diese aufzupäppeln ...) wohl 
eher Außen vor - aber auch Das wird mich nicht aufhalten!

Eigentlich hast Du ja Recht, man muß ja 'nur' schauen, daß der 
USB-Controller Das bekommt, was Er haben will - wird aber trotzdem noch 
einiges an Zeit brauchen - bin da noch etwas feucht hinter den Ohren, 
gelobe aber Besserung :)

MfG

von Frank K. (fchk)


Lesenswert?

Patrick J. schrieb:

> Eigentlich hast Du ja Recht, man muß ja 'nur' schauen, daß der
> USB-Controller Das bekommt, was Er haben will - wird aber trotzdem noch
> einiges an Zeit brauchen - bin da noch etwas feucht hinter den Ohren,
> gelobe aber Besserung :)

Warum der Stress? Es gibt schließlich Controller wie den PIC16F1454, die 
nicht/kaum teurer sind, auch in DIL erhältlich und USB 2.0 Full Speed 
in Hardware eingebaut haben, welches auch ohne Quarz auskommt. Natürlich 
alles 100% standardkonform und zertifiziert.

fchk

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.