Irgendwann kommt man nicht mehr um USB herum. Spätestens als ich meine Parallel-Drucker-I/O-Karte unter Windows 7 nur noch mit Tricks ansteuern konnte, war es soweit.

Vorher hatte ich schon viele Projekte bestaunt, die ein Software-USB-Interface auf einem AVR (ATtiny) realisieren. Einige habe ich nachgebaut. Aber jede Modifikation führte ausschließlich dazu, dass nichts mehr funktionierte. Dokumentationen, Tutorials, Bücher zu USB sind (gefühlt) entweder lückenhaft oder sehr umfangreich. So ein Mittelding, mit dem man in die Materie einsteigen, kann habe ich nicht wirklich gefunden. Auch die Beispiele, die man findet, sind in der Regel sehr speziell. Außerdem nutzen sie leider alle unterschiedliche Varianten der USB-Kommunikation. Es gibt viele beindruckende Applikationen darunter. Doch so richtig klar, was –und vor allem wie es– vor sich geht, wird es selten.

Eine einfache generische Variante, mit der man einfach anfangen kann und die leicht abzuändern oder zu erweitern ist, stelle ich hier vor.

Zunächst ist zum Experimentieren ist ein Steckbrett gut geeignet. Am besten man baut gleich einen Adapter, der eine USB-Buchse "steckbrettkompatibel" macht. Da i.d.R. die Takfrequenz über einen Quarz stabilisiert werden muss, ist ein Quarz-Adapter für das Steckbrett ebenfalls ganz praktisch.

Dan braucht man Treiber bzw. Vorlagen für die Steuerungssoftware. Hier die Eigenschaften des Treibers auf dem AVR:

Das AVR-Interface in Form eines AVR-Studio-Projekts für AVR-gcc zum download (für Puristen: im Verzeichnis "default" befindet sich eine makefile mit der man das Projekt auch ohne die IDE übersetzen kann). Für eine konkrete Applikation müssen folgende Stellen angepasst werden:

Auf der PC-Seite sind (zumindest unter Windows 7) keine speziellen Treiber erforderlich. Wegen der Auslegung als HID-Device reicht das Standard-Windows-API aus. Um die Handhabung ein wenig zu vereinfachen, habe ich die notwendigen Funktionen in eine Library gepackt (Binary, Source).

Eine kurze Einführung in die Nutzung findet man hier. Ansonsten sei auf die Hilfedatei verwiesen.

Ein Beispiel-Applikation ist das USB-12-Bit-IO-Modul, das ich mit diesem Baukasten erstellt habe.

Hilfreiche Werkzeuge

USB View   USBView (Universal Serial Bus Viewer, Usbview.exe) von Microsoft ist eine grafische Benutzeroberflächen-Anwendung, mit der die USB-Controller und die angeschlossenen USB-Geräte durchsucht werden können.
USB View   USB Device Tree Viewer von Uwe Sieber ist eine Erweiterung dieses Programms.
USB View   Nir Sofer stellt neben vielen weiteren Freeware Utilities das Tool USBDeview zur Verfügung. USBDeview zeigt auch nicht angeschlossene Geräte an und lässt z.B. deren Deinstallation zu.