Forum: Mikrocontroller und Digitale Elektronik ATTINY 85 V-Usb


von Josh W. (joshua_p)


Lesenswert?

Hallo,
ich habe mich mal mit dem Thema v-usb mit einem Attiny 85/45 und der 
Arduino IDE mit der v-usb Library befasst :
http://blog.petrockblock.com/2012/05/19/usb-keyboard-with-arduino-and-v-usb-library-an-example/ 
hier mit Atmega 328
http://fabiobaltieri.com/2011/10/19/fun-with-attiny-and-v-usb/ hier 
wurde zwar nicht mit der Arduino IDE programmiert aber das Software 
technische ist egal.

Gibt es eine Möglichkeit ohne Dioden zu arbeiten? ich habe die passenden 
Zener Dioden im Moment nicht da. Brauch ich unbedingt einen 
Spannungsteiler?
Am liebsten würde ich nur mit Widerständen arbeiten.

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


Lesenswert?

Du könntest den Tiny direkt mit 3,3V speisen, das erspart dir sowohl die 
Zenerdioden als auch etwaige Spannungsteiler, lediglich die normalen RFI 
Dämpfungswiderstände (33-68R) oder eine stromkompensierte Drossel in den 
Datenleitungen.
Das Problem dabei ist, das du bei 3,3V hart an der Grenze der 'Safe 
Operating Area' bist (Fig.21-2 im Datenblatt), vor allem, wenn du mit 
16MHz taktest. Die Erfahrung zeigt, das es so gut wie immer 
funktioniert, aber man sollte es im Hinterkopf behalten. Die '-V' 
Ausführungen der MC sind ungeeignet.

Noch ein Tipp: Am besten funktioniert V-USB, wenn du den Tiny von einem 
Quarz bzw. Quarzoszillator taktest. Die 'selbst-kalibrierenden' 
Ausführungen sind zwar nicht soo schlecht, sind aber ein weiterer 
Unsicherheitsfaktor.

von Josh W. (joshua_p)


Lesenswert?

Ok,
danke ich werde es ausprobieren. Ich warte noch bis der Attiny 85
ankommt, habe nur die -v Ausführung

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


Lesenswert?

Josh P. schrieb:
> Ich warte noch bis der Attiny 85
> ankommt, habe nur die -v Ausführung

Ich hoffe, du hast dir dann gleich ein paar der Z-Dioden mitbestellt, 
oder 3,3V Lowdrop Regler.

von Josh W. (joshua_p)


Lesenswert?

Ja, das habe ich im Zuge dessen auch gemacht, als Notlösung, aber ich 
will mit so wenigen Teilen wie möglich arbeiten, um Platz zu sparen.

von Tim  . (cpldcpu)


Lesenswert?

Matthias Sch. schrieb:
> Noch ein Tipp: Am besten funktioniert V-USB, wenn du den Tiny von einem
> Quarz bzw. Quarzoszillator taktest. Die 'selbst-kalibrierenden'
> Ausführungen sind zwar nicht soo schlecht, sind aber ein weiterer
> Unsicherheitsfaktor.

Mich würden dazu mal Zahlen, Daten, Fakten interessieren. Bisher habe 
ich keine Probleme beobachtet, die sich auf Probleme mit dem 
RC-Oscillator zurückzuführen sind. Wenn man das USB-Device länger mit 
dem Computer verbunden lassen will, empfielt sich allerdings eine 
Automatische Rekalibrierung.

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Tim    schrieb:
> Wenn man das USB-Device länger mit
> dem Computer verbunden lassen will, empfielt sich allerdings eine
> Automatische Rekalibrierung.

Und genau das ist der Grund. Meine V-USB Geräte sollen beliebig lange am 
Rechner sein ohne Rekalibrierung und ich habe mit externem 
Quarzoszillator dabei die besten Erfahrungen gemacht. Es handelt sich 
bei mir z.B. um ein Tablet Konverter, der den seriellen Datenstrom auf 
ein HID Device umsetzt und z.B. für CAD als Eingabe benutzt wird. (Tiny 
45/85)
Keine der selbstkalibierenden Lösungen lief bei mir zuverlässig.
Zahlen, Daten, Fakten?
Fehlanzeige, ich habe mir nie die Mühe gemacht, eine der RC Lösungen zum 
laufen zu bringen und darüber auch noch zu bloggen. Warum auch? 
Quarzoszillatoren habe ich jede Menge.

von Tim  . (cpldcpu)


Lesenswert?

Matthias Sch. schrieb:
> Und genau das ist der Grund. Meine V-USB Geräte sollen beliebig lange am
> Rechner sein ohne Rekalibrierung und ich habe mit externem

Das geht alles automatisch durch den Keepalive Pulse, der einmal pro ms. 
auf den Bus gegeben wird. STM bringt gerade Cortex-M0 Controller heraus, 
die nach dem gleichen Prinzip funktionieren. Es handelt sich als nicht 
um eine prinzipbedingt minderwertige Lösung.

> Quarzoszillator dabei die besten Erfahrungen gemacht. Es handelt sich
> bei mir z.B. um ein Tablet Konverter, der den seriellen Datenstrom auf
> ein HID Device umsetzt und z.B. für CAD als Eingabe benutzt wird. (Tiny
> 45/85)

> Keine der selbstkalibierenden Lösungen lief bei mir zuverlässig.

> Zahlen, Daten, Fakten?
> Fehlanzeige, ich habe mir nie die Mühe gemacht, eine der RC Lösungen zum

Ja, hast Du sie denn jetzt getestet oder nicht?

> laufen zu bringen und darüber auch noch zu bloggen. Warum auch?
> Quarzoszillatoren habe ich jede Menge.

Nun ja, das ist aber kein Grund anderen von Vorneherein von der 
quarzlosen Lösung abzuraten. Insbesondere, da ein Quarz am ATtiny85 kaum 
noch Pins freilasst.

Edit: Ich möchte hier keinen Glaubensstreit vom Zaun brechen, sondern 
bin auf der Suche nach tatsächlich aufgetretenen Problemen, um diese 
beseitigen zu können.

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Tim    schrieb:
> Ja, hast Du sie denn jetzt getestet oder nicht?

Ja natürlich. Ich wollte beim Tiny ja mir auch den einen Pin für den 
Oszillator sparen. Sie hat sich aber beim Anmelden des Devices immer 
recht zickig verhalten, deswegen ist es gerade für einen V-USB Neuling 
sinnvoll, sich diese Fehlerquelle zu sparen.
Ich schliesse übrigens wirklich keinen Quarz an, sondern einen 
Oszillator, das braucht nur einen Pin.
In meinem Projekt musste auch die serielle Baudrate gut stimmen.

> STM bringt gerade Cortex-M0 Controller heraus,
> die nach dem gleichen Prinzip funktionieren. Es handelt sich als nicht
> um eine prinzipbedingt minderwertige Lösung.

Ein Tiny ist aber nun mal kein M0. Es gibt auch im USB I/F Markt viele 
quarzlose Lösungen, das hilft dem Tiny Nutzer aber auch nicht wirklich. 
Also, als Fortgeschrittener probiers ruhig aus, als Anfänger sollte man 
es lassen.

von Tim  . (cpldcpu)


Lesenswert?

Matthias Sch. schrieb:
> Tim    schrieb:
>> Ja, hast Du sie denn jetzt getestet oder nicht?
>
> Ja natürlich. Ich wollte beim Tiny ja mir auch den einen Pin für den
> Oszillator sparen. Sie hat sich aber beim Anmelden des Devices immer
> recht zickig verhalten, deswegen ist es gerade für einen V-USB Neuling

Ok, schade. Ich hatte gehofft Du hättest konkretere Hinweise.

>> STM bringt gerade Cortex-M0 Controller heraus,
>> die nach dem gleichen Prinzip funktionieren. Es handelt sich als nicht
>> um eine prinzipbedingt minderwertige Lösung.
>
> Ein Tiny ist aber nun mal kein M0. Es gibt auch im USB I/F Markt viele
> quarzlose Lösungen, das hilft dem Tiny Nutzer aber auch nicht wirklich.

Der Prozessorkern hat aber nix mit dem Funktionsprinzip zu tun.

> Also, als Fortgeschrittener probiers ruhig aus, als Anfänger sollte man
> es lassen.

So drastisch würde ich es nicht formulieren. Ich habe, wie gesagt, noch 
nie ein Problem gehabt. Generell ist es natürlich schon sinnvoll erst 
einmal mit der sicheren Variante anzufangen. Ich würde aber trotzdem 
niemandem davon abraten die quarzlose Variante zu nutzen, wenn es für 
ihn Vorteile bringen könnte.

von Josh W. (joshua_p)


Lesenswert?

Ich hab es jetz mal hier aufgebaut mit der -v Variante ohnr externen 
Quarz, es klappt super.Unter Linux gibt es keine Probleme, dafür wäre 
mein Problem dann gelöst, ich habe übrigens den Attiny mit Widerständen 
an den Usbport verbunden. Läuft alles auf 3,3v.
Schaltplan kann ich im Moment nicht anfertigen

Gruß Joshua

von Henrik Haftmann (Gast)


Lesenswert?

Ich hatte gleich, nachdem obdev.at das V-USB als quarzlose Variante mit 
dem Kalibriervorgang am Beginn herausbrachte, eine 
Permanent-Kalibrierroutine geschrieben, die sogar noch ein paar Bytes 
weniger Flash braucht. Diese Variante ist bei obdev auch dokumentiert, 
aber nicht allzu sehr unterstützt, weil in diesem Fall D- den Interrupt 
auslösen muss und nicht D+ wie sonst.

Interrupt an D- weckt den Controller bei jedem SOF alle 1 ms, an D+ nur 
bei Datenpaketen. Zudem ermöglicht Interrupt an D- den korrekten 
USB-Schlaf mit weniger als 500 µA Stromaufnahme, da dann die Interrupts 
ausbleiben. Ich habe das mit dem Strom schlafenden Watchdog-Timer 
erschlagen, mit dem Nachteil, dass das Schlafengehen nicht USB-konform 
2-3 ms dauerte, sondern das Watchdog-Minimum von 16 ms.

Laut obdev.at ist jedoch der kalibrierte RC-Oszillator des ATtiny45 sehr 
langzeit- und temperaturstabil und benötigte seiner Meinung nach keine 
Nachkalibrierung über Tage am Fenster.

Zur ursprünglichen Frage: 2 Seriendioden in der 
Mikrocontroller-Speisespannung lassen den Controller mit 
(unstabilisierter) 3,4 V laufen und ersparen die Z-Dioden und - bei 
Leitungslängen unter 30 cm - die Serienwiderstände. Der Querstrom dieses 
"Spannungsreglers" ist Null - ideal für den Schlafmodus.

An den meisten USB-Anschlüssen funktioniert auch ein mit 5 V betriebener 
Mikrocontroller ohne Z-Dioden, aber eben nicht an allen. Daher: Bei 5 
V braucht man Z-Dioden. Ein weiterer Nachteil von 5 V ist, dass die 
nicht sauber auf High liegenden USB-Anschlüsse merklich CMOS-typischen 
Querstrom verursachen, der dafür sorgt, dass die Stromaufnahme im 
Schlafmodus nicht datenblattmäßige 0,1 µA ist, sondern eher 100 µA. Der 
Strom durch den USB-Pullup kommt ohnehin noch dazu.

Der Betrieb mit unstabilisierten 3,4 V ist nicht empfehlenswert, wenn 
der eingebaute A/D-Wandler im Spiel ist oder ohnehin andere 
3,3-V-Hardware stabilisierte Spannungen erfordert, wie bspw. alle 
DCF77-Funkuhr-Empfangsmodule. Ein preiswerter Low-Drop-Regler mit 
geringem Querstrom im bastelfreundlichen TO-92-Gehäuse ist der 
LP2950ACZ-3.3.

Der Betrieb des ATtiny mit 3,3 V (oder 3,4 V) verbietet den direkten 
Anschluss von 5-V-TTL-Technik, da dafür der Controller nicht 
spezifiziert ist und (was noch schlimmer ist) eine Aufstockung der 
Versorgungsspannung "durch die Hintertür" bis hinauf zu 5 V erfolgen 
kann, mit allen Konsequenzen für den Betrieb oder Nicht-Betrieb des 
USB-Interfaces (siehe oben). Gerade im Schlafmodus ist der 
Eigenstromverbrauch des Mikrocontrollers so gering, dass Ableitströme 
durch die Eingangsschutzdioden durch niemanden verbraucht werden. Kein 
Spannungsregler leitet Überspannung (nach Masse) ab.

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.