Mit V-USB von Objective Development ist es mit ein paar Dioden und Widerständen möglich, mit einem AVR Mikrocontroller ein USB-Gerät low-speed Verbindung aufzubauen. Diese reicht meistens für viele Anwendungen. Die Homepage von V-USB enthält viele Anwendungs Beispiele.
Als Beispiel wird das SET9, 8x8 Matrix nun direkt vom PC aus angesteuert.
Für das USB Kabel nimmt man eine alte Tastatur, Maus oder was sonst rumliegt, abschneiden und auf ein Stück Lochraster mit Kabelbinder fixieren und verlöten.
Für den Anschluss USB -> MCU gibt es verschiedene Methoden. Siehe hier. Alle Varianten haben Vor- und Nachteile, in unserem Beispiel wurde die Zener Diode gewählt. Einfach und bis jetzt immer funktioniert.
Gegenüber dem SET9, verschieben wir nur die 3 Anschlussleitungen des MAX7219 nach PD4-6. So werden PD0 + PD2 für den USB frei.
Für die Ansteuerung gibt es wieder zwei Varianten. Verbindung mittels USB Treiber (libusb) oder die sogenannte HID Verbindung mit Windows eigenen Treiber. Hier wird die einfache Variante mit den libusb Treiber verwendet. Der Beispielcode wurde für meine einfache Anwendung gekürtz. Bei heiklen und störsicheren Betrieb den Watchdog übernehmen! Die Original V-USB Lib für den Atmega gibt es hier.Die wichtigsten Punkte MCU seitig sind
In der usbFunctionSetup(uchar data[8]) werden die Daten vom USB Anschluss eingelesen.
Für den PC wurde hier ein WinAPI mit Dev-C++ gebastelt. Nicht mehr das neuste Tool, vorallem seit 2005 nicht mehr gewartet. Man kann auch CodeBlocks oder andere Lösungen nutzen. Die Buttons sehen nicht Windows Typisch aus, aber das wollte ich so. Nehme auch gerne Korrekturen an meinem schrecklichen API Code entgegen.Beispiele in anderen Programmiersprachen finden Sie auf der Seite von VUSB.