Mit V-USB von Objective Development ist es ohne weitere Hardware möglich, mit einem AVR Mikrocontroller ein USB-Gerät aufzubauen.
Inhaltsverzeichnis
Hardware Vorraussetzungen des AVRs
Spannungspegel-Problem
Da der AVR mit anderen Spannungen als die des USB-Standarts arbeitet, müssen diese Angepasst werden. Der Computer und der AVR-Mikrocontroller haben beide bestimmte Anforderungen an die Spannung für einen High- bzw. Low-Pegel. Da wir die Computerseite nicht verändern können, müssen die Anpassungen am AVR statfinden. Vom PC wird ein Low-Pegel als 0V, ein High-Pegel als 3,3V übertragen. Jedoch ist die kein Problem, da die AVR-Mikrcontroller selbst bei 5V diesen Pegel sicher als High erkennen. Die andere Richtung ist ein größreres Problem. Der Computer erwartet als Low-Pegel eine Spannung von 0V - 0,8V und 2V - 3,6V als High. Um diese Vorraussetzungen zu erfüllen, muss entweder der AVR mit einer Spannung von 2V - 3,6V betreiben werden oder die Pegel müssen an D+ und D- des AVRs angepasst werden.
Lösung A: Verringern der Betreibsspannug des AVRs
Für diese Lösung wird die Betriebsspannung des AVRs auf 3,3V - 3,6V heruntergesetzt. Dies ist mit einem 3,3V-Spannungsregler (LE33CZ) möglich. Schaltplan
Vorteile
- Saubere Lösung. Schnelle Übergänge auf D+ und D-
- Gute Störfestigkeit am Signaleingang
Nachteile
- 3,3V-Spannungsregler sind oft teuer und schwer zu beschaffen
- Viele AVRs funktionieren nicht sicher bei den Angeforderten Taktraten
- Hohe Stromaufnahme durch den Spannungsregler (überschreiten maximale Stromaufnahme von 500mA)
Ebenso ist es möglich, die Spannung mit Glechrichterdioden zu reduzieren. Hierfür werden einfach zwei oder drei Gleichrichterdioden in Reihe vor VCC des AVRs geschaltet. Schaltplan
Zusätzliche Vorteile
- Niedrige kosten / Bauteile sind leicht zu bekommen.
- kein Ruhestrom --> USB-Konformer Standby-Modus
Zusätzliche Nachteile
- Keine Spannungsregelung --> Spannung kann bei hoher Last einbrechen
- Die unregulierte Spannung ist problemtisch für Analoge Schaltungen (ADC,...)
Lösung B: Anpassen der Sapnnung an D+ und D-
Ebenso kann man die Spannung an den Datenleitungen (D+ und D-) mit Zenerdioden verringern. Es werden 3,6V Low-Power Zernerdioden (wie 1N4148, 500mW oder weniger) empfohlen, da diese eine geringe Kapazität haben und somit weniger Störungen auf den Datenleitungen verursachen. Schaltplan
Wenn diese Lösung verwendet wird, stellen sie vor benutzung sicher, dass die Spannungspegel mit den geforderten Pegeln(LOW:0V-0,8V HIGH:2V-3,6V) überinstimmen.
Vorteile
- Niedrige kosten
- Leicht zu bekommen
- Ganze Schaltung kann mit 5V betrieben werden --> Hohe Taktraten möglich
Nachteile
- Keine saubere Lösung: Es muss ein Kompromiss zwischen allen Möglichkeiten gefunden werden.
- Zener-Dioden kommen mit einem breiten Spektrum an Merkmalen. Deshalb könnten die Ergebnisse nicht reproduzierbar sein.
- Hohe Ströme beim Senden von High-Leveln
Allgemeine Anmerkungen zur Hardware
Es wird bei jeder der oben genannten Schaltungen ein PullUp-Widerstand (1,5k - 10k) von D- nach Vcc benötigt. Ebenso muss zwischen AVR und Die Datenleitungen ein Widerstand von je 68 Ohm.
Welche Taktraten können verwendet werden?
Momentan unterstützt V-USB Taktraten von 12 MHz, 12.8 MHz, 15 MHz, 16 MHz, 16.5 MHz, 18 MHz und 20 MHz. Diese Taktraten sind prezise, dies bedeutet, dass ein Quarz mit 11.9 MHz nicht funktionieren würde. Nur bei den 16.5 und 12.8 MHz Varianten ist eine Toleranz von 1%.16.5 Mhz kann z.B. mit dem internen RC Oszillator von AVRs wie dem ATTiny25/45/85 oder dem ATTiny26 erreicht werden. Entscheidungshilfe
- Möchten sie den internen OC Oszillator benutzen? Dann nehmen sie die 16.5MHz-Variante.
- Ist sehr wenig Speicher vorhanden? Verwenden sie am besten die 16MHz oder 20Mhz Variante.
- Wird der AVR mit einer niedrigen Spannung betrieben? Dann verwenden sie die 12MHz-Variante.
- Wollen sie CRC-Prüfsummen verwenden? Benutzen sie die 18Mhz-Variante.
Anschluss an den AVR
Die Datenleitung D+ muss über den 68 Ohm-Widerstand mit dem Port INT0 des AVRs verbunden werden. D- kann an einen beliebigen Port. Diese Ports müssen dann in der "usbconfig.h" angepasst werden.
Software des AVR: Die Firmware
Als erstes muss man sich die neueste Version von V-USB von folgender Seite herunterladen: [1] [noch in Arbeit]