lupo
17-10-2009, 19:43
Hier findet ihr alle Infos über unseren Mame Panel Controller zum Nachbauen,
Weiterentwickeln, Verbessern etc. :cool:
Nachdem wir uns mit erstklassigen Arcadecontrols wie Seimitsu Joysticks
und Arcade Buttons eingedeckt hatten, wurde die fehlende
Anschlussmöglichkeit am PC zur Qual. Daher haben wir uns auf die Suche
nach einem kostengünstigen USB-Controller für Arcadecontrols gemacht.
Herausgekommen ist eine Eigenbaulösung, die auf einen AVR Atmega
Mikrocontroller und den V-USB SW-Stack basiert. Die kleine Version
verwendet den Atmega8(A) im PDIP-28 Gehäuse, die große den Atmega32(A)
im PDIP-40 Gehäuse.
Die Atmega Serie gibt es zwar auch mit HW-USB Unterstützung, allerdings
sind diese schwer erhältlich und es gibt keine Ausführungen im PDIP Gehäuse.
Daher haben wir uns für die reine SW-Umsetzung mit V-USB entschieden.
Die Kosten für den uC belaufen sich beim Händler um die Ecke auf € 1,95
für den Atmega8 bzw. € 3,80 für den Atmega32. Neben ein paar
Widerständen und Kondensatoren benötigt man noch einen 12.0000MHz
Quarz, einen 3.3V Spannungsregler, Schraubklemmen und eine
Lochrasterplatine. Mit etwas Bastelaufwand kommt man also auf eine sehr
günstige Lösung.
Die Software wurde von Andi auf Basis von V-USB entwickelt. Der Controller
meldet sich beim PC als HID Gerät und benötigt keine zusätzlichen Treiber.
Die SW unterstützt zur Zeit folgende Features:
- HID Keyboard Device
- HID Joystick Device
- HID Mouse Device (Spinner/Trackball)
- HID Consumer Control Device (Lautstärkeregelung)
- Shiftkey
Der uC verfügt auch über 6 bzw. 8 10Bit-Analog-Digital-Umsetzer. Es wäre
also auch die Unterstützung von analogen Eingabegeräten denkbar.
Shiftkey:
Damit kann jedem Switch eine zweite Funktion zugeordnet werden.
z.B. Joystick 1, switch up
shiftkey nicht gedrückt -> HID Joystick, Joystick 1 UP
shiftkey gedrückt -> HID Keyboard, Cursortaste oben
HID Consumer Device:
Dadurch könne 2 switches für die Lautstärkeregelung verwendet werden.
Getestet mit Windows XP SP3 und MacBook.
z.B. in Verbindung mit dem Shiftkey und Joystick 2 links/rechts
shiftkey nicht gedrückt -> HID Joystick, Joystick 2 LEFT/RIGHT
shiftkey gedrückt -> Summenlautstärke leiser/lauter
HID Maus:
Support für einen Spinner oder Trackball. Der uC wertet direkt die Signale
der Gabellichtschranken aus (Quadraturdecoder). Folgende Einschränkung
muss beachtet werden! Der uC wird mit 3.3V betrieben und die Eingänge
sind nicht 5V-tolerant. Daher sollte auch der Spinner/Trackball anstatt mit
5V mit 3.3V versorgt werden.
Ausgemessen und getestet mit einem original Arkanoid Spinner.
HID Joystick:
Unterstützung für Standard Joysticks und Buttons. Theoretisch könnten die
Joysticks auch über das Keyboard Interface angebunden werden, dies hat
aber bei Low-Speed USB Geräten einen gravierenden Nachteil (siehe HID
Keyboard).
HID Keyboard:
Unterstützung für Standard Keys wie Coin-In, 1-Player Start, Pause etc.
Folgende Limitierung sollte beachtet werden. V-USB unterstützt nur
LOW-Speed USB Geräte. Laut USB-Spezifikation darf ein Frame bei einem
LOW-Speed Device nur 8 Byte groß sein. Da jeder Key ein Byte benötigt
und ein Byte für die Report-Id sowie ein Byte für die Modifier Bits benötigt
werden, können maximal 6 Keys gleichzeitig reportet werden d.h. es können
auch nur 6 Keys gleichzeitig gedrückt werden! Um dieses Limit umgehen zu
können, sollten die Joysticks über HID Joystick Devices angebunden werden.
Weiterentwickeln, Verbessern etc. :cool:
Nachdem wir uns mit erstklassigen Arcadecontrols wie Seimitsu Joysticks
und Arcade Buttons eingedeckt hatten, wurde die fehlende
Anschlussmöglichkeit am PC zur Qual. Daher haben wir uns auf die Suche
nach einem kostengünstigen USB-Controller für Arcadecontrols gemacht.
Herausgekommen ist eine Eigenbaulösung, die auf einen AVR Atmega
Mikrocontroller und den V-USB SW-Stack basiert. Die kleine Version
verwendet den Atmega8(A) im PDIP-28 Gehäuse, die große den Atmega32(A)
im PDIP-40 Gehäuse.
Die Atmega Serie gibt es zwar auch mit HW-USB Unterstützung, allerdings
sind diese schwer erhältlich und es gibt keine Ausführungen im PDIP Gehäuse.
Daher haben wir uns für die reine SW-Umsetzung mit V-USB entschieden.
Die Kosten für den uC belaufen sich beim Händler um die Ecke auf € 1,95
für den Atmega8 bzw. € 3,80 für den Atmega32. Neben ein paar
Widerständen und Kondensatoren benötigt man noch einen 12.0000MHz
Quarz, einen 3.3V Spannungsregler, Schraubklemmen und eine
Lochrasterplatine. Mit etwas Bastelaufwand kommt man also auf eine sehr
günstige Lösung.
Die Software wurde von Andi auf Basis von V-USB entwickelt. Der Controller
meldet sich beim PC als HID Gerät und benötigt keine zusätzlichen Treiber.
Die SW unterstützt zur Zeit folgende Features:
- HID Keyboard Device
- HID Joystick Device
- HID Mouse Device (Spinner/Trackball)
- HID Consumer Control Device (Lautstärkeregelung)
- Shiftkey
Der uC verfügt auch über 6 bzw. 8 10Bit-Analog-Digital-Umsetzer. Es wäre
also auch die Unterstützung von analogen Eingabegeräten denkbar.
Shiftkey:
Damit kann jedem Switch eine zweite Funktion zugeordnet werden.
z.B. Joystick 1, switch up
shiftkey nicht gedrückt -> HID Joystick, Joystick 1 UP
shiftkey gedrückt -> HID Keyboard, Cursortaste oben
HID Consumer Device:
Dadurch könne 2 switches für die Lautstärkeregelung verwendet werden.
Getestet mit Windows XP SP3 und MacBook.
z.B. in Verbindung mit dem Shiftkey und Joystick 2 links/rechts
shiftkey nicht gedrückt -> HID Joystick, Joystick 2 LEFT/RIGHT
shiftkey gedrückt -> Summenlautstärke leiser/lauter
HID Maus:
Support für einen Spinner oder Trackball. Der uC wertet direkt die Signale
der Gabellichtschranken aus (Quadraturdecoder). Folgende Einschränkung
muss beachtet werden! Der uC wird mit 3.3V betrieben und die Eingänge
sind nicht 5V-tolerant. Daher sollte auch der Spinner/Trackball anstatt mit
5V mit 3.3V versorgt werden.
Ausgemessen und getestet mit einem original Arkanoid Spinner.
HID Joystick:
Unterstützung für Standard Joysticks und Buttons. Theoretisch könnten die
Joysticks auch über das Keyboard Interface angebunden werden, dies hat
aber bei Low-Speed USB Geräten einen gravierenden Nachteil (siehe HID
Keyboard).
HID Keyboard:
Unterstützung für Standard Keys wie Coin-In, 1-Player Start, Pause etc.
Folgende Limitierung sollte beachtet werden. V-USB unterstützt nur
LOW-Speed USB Geräte. Laut USB-Spezifikation darf ein Frame bei einem
LOW-Speed Device nur 8 Byte groß sein. Da jeder Key ein Byte benötigt
und ein Byte für die Report-Id sowie ein Byte für die Modifier Bits benötigt
werden, können maximal 6 Keys gleichzeitig reportet werden d.h. es können
auch nur 6 Keys gleichzeitig gedrückt werden! Um dieses Limit umgehen zu
können, sollten die Joysticks über HID Joystick Devices angebunden werden.