Hallo, ich hätte folgendes Problem. Ich möchte mir gerne einen digitalen Joystick für die Xbox bauen. Da die XBox Joypadeingänge USB Ports sind, geht das natürlich nicht so einfach. Ich dachte da an einen MC mit USB Schnittstelle an den ich auf der einen Seite die Taster für Steuerung und Buttons anschließe und auf der anderen Seite ein Xbox USB Kabel. Die Frage ist nun wie kann man einen MC so programmieren, dass er als USB Client der XBox funktioniert (Joystick), ich kann ja quasi nirgens Treiber installieren. Außerdem hat die XBox wohl eine eigene USB-Klasse. Die XBOX muss den MC ja als ein XBox Pad erkennen. Welchen MC kann man da empfehlen. Ich hab mich ein wenig mit AVRs und den PICs beschäftigt und mal einen Pic18F2455 bestellt, der ja eine USB Schnittstelle hat. Cypress soll es wohl auch einige MC geben, hab mich mit diesen Typen noch nicht beschäftigt. Wie gesagt ich weiß jetzt nicht wie ich den MC eine eigen USB-Klasse beibringe und seine ID ändere. Gibt es da spezielle Programme oder wird das alles in der jeweiligen Programmiersprache direkt in der IDE mit entworfen?? Ich steh da im Moment noch ein wenig auf dem Schlauch. Gruß Mario
Wenn ein XBox-PAD ein HID ist (das ist eine Standarddeviceklasse für Mäuse, Tastaturen, Graphiktabletts und eben auch Joysticks), dann sollte so ein Teil einerseits ohne spezielle Devicetreiber am PC laufen als auch ein normales USB-HID widerum an der XBox funktionieren. Für HIDs der verschiedensten Arten gibt es Musterapplikationen von fast jedem Hersteller von Controllern mit USB-Deviceinterface. Wenn hingegen eine andere Deviceklasse als HID verwendet wird, dann musst Du Dir eine Dokumentation des von XBox-Controllern verwendeten Protokolls organisieren und dieses Protokoll auf dem von Dir gewählten Controller implementieren. Wie das im einzelnen zu geschehen hat, hängt stark von der jeweiligen Unterstützung durch die zum Controller gehörenden Entwicklungssysteme ab; manchmal kann man sich an Musterapplikationen bzw. Application Notes orientieren, manchmal muss man das Rad selbst neu erfinden. Was für eine Deviceklasse verwenden denn diese XBox-Pads und wenn die nicht HID ist, hast Du eine Dokumentation derselben?
Dank dir für deine Antwort Also das einzige was ich zur Beschreibung eines XBOX Pads gefunden habe ist das http://euc.jp/periphs/xbox-controller.ja.html Das Problem ist, dass ich noch nicht weiß was das alles zu bedeuten (z.B Descriptors, HID descriptor, HID report descriptor) hat und wie ich das den MC beibringen soll. Hab mich zwar schon hier: http://www.f1.fhtw-berlin.de/labor/adk/vcs/versuche-programmierung/usb/html/csun.html mal schlau gemacht, aber so richtig schlau bin ich dann doch noch nicht. Gruß Mario
Ich denke, daß Du Dir die Application Notes und sonstige Entwicklungsunterstützung ansehen solltest, die es zum von Dir gewählten Controller gibt - die sind oft gar nicht so sonderlich schlecht. Wenn ich mir den ersten von Dir zitierten Link ansehe, dann scheinen aber doch sehr ausführliche Lücken in der Dokumentation eines dieser XBox-Pads zu bestehen. Der Autor weist darauf hin, daß die Teile sich nicht HID-konform verhalten und wohl auch auf bestimmte erforderliche USB-Protokollkomponenten verzichten. Um so etwas nachzuempfinden, müsstest Du wohl doch einiges an "reverse engineering" betreiben, sprich einen USB-Protokollanalysator zwischen XBox und Pad hängen und obendrein herausfinden, was die zusätzliche Leitung an der Schnittstelle so anstellt. Damit wäre für mich das Projekt gestorben, da ein USB-Protokollanalysator nichts ist, was man so eben 'rumstehen hat oder gar selbst bauen kann; zumindest kenne ich kein derartiges Projekt. Vielleicht hilft Dir aber beispielsweise das hier http://sourceforge.net/projects/xboxhid/, das ist ein Treiber, um einen XBox-Controller am PC zu betreiben. Eventuell ist darin dessen vergurktes HID-Protokoll dokumentiert. Hier http://www.llamma.com/xbox/Archive/xbcd.htm gibt es sowas wohl auch; keine Ahnung, ob da Sourcen dabei sind. Zu dem Thema spuckt Google mit dem Suchbegriffen "xbox controller usb hid" verdammt viele Links aus, scheint ein beliebtes Spiel zu sein.
Hm, das klingt ja alles ganz schön pessimistisch. Was fehlt denn z.B da so alles? Die Klasse wird ja, soweit ich das überblicke, beschrieben. Ich denke das wird noch ein Stück Arbeit geben:-( Mir ist da einfach noch zu viel unklar. Wie ist z.B der Zusammenhang zwischen der USB Klasse, Descriptors, HID descriptor, HID report descriptor (was ist das?) und einem MC? Gruß Mario
Hallo Mario, vielleicht sind meine Tipps zu spät aber trotzdem einpaar Hinweise. Also ganz am Anfang solltest du dich mit der Enumeration beschäftigen. Wenn das funktioniert hast du eine große Hürde überwunden. Dann verstehst du auch was die Descriptoren zu bedeuten haben. Siehe USB Spec. Gruß Kürsat
Hi was spricht den dagegen einen XBox Controller zu zerlegen und die Elektronik mit anderer Mechanik weiterzuverwenden. Das sollte die schnellste und u.U. sogar die billigste Möglichkeit (XBox Controller <= 10) sein. Matthias
Also ich hatte leider noch keine Zeit mich in die USB specs einzuarbeiten. Was dagegen spricht ist,dass die Buttons vom XBox Controller alle analog arbeiten ich aber digital arbeitende Buttons gegen Masse brauche. Gruß Mario
Hi Aus einem analogen Button läßt sich problemlos ein digitaler machen. Ein bischen Schaltungstechnik ist evtl. nötig um die Pegel entsprend anzupassen aber das dürfte alles bedeutend einfacher sein als sich das USB-Protokoll der XBox-Controller aus einem Quelltext und lückenhaften Dokumentationen selber zusammenzureimen und dieses dann auch noch auf einem µC zu implementieren. Matthias
Nimm doch einfach das Steuerkreuz des XBOX Controllers als Basis für deinen Joystick. Das ist schließlich schon digital und "theoretisch" sollte es reichen einfach ein paar Kabel anzulöten und mit den Kontakten des Joysticks zu verbinden.
In der Codesammlung habe ich schonmal den MJoy erwähnt. Das ist ein Mega8, der mit dem USB-Code von Igor einen HID-kompatiblem Joystick nachbildet. http://www.mindaugas.com/projects/MJoy/ ciao, Stefan.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.