MC mit USB Schnittstelle wie als USB Client für Spielkonsol

Gast #153325
Lesenswert?

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
Gast #153326
Lesenswert?

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?
Gast #153327
Lesenswert?

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
Gast #153328
Lesenswert?

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.
Gast #153329
Lesenswert?

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
Gast #153330
Lesenswert?

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
Gast #153331
Lesenswert?

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
Gast #153332
Lesenswert?

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
Gast #153333
Lesenswert?

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
Gast #153334
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren