PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmel Mega 8 / USB Firmware von Igor Cesko / Probleme



cupid
30.05.2005, 23:04
Hallo Forum,

Hat es schon mal jemand geschafft mehr als ein HID-Interface mit Igro Ceskos USB Firmware // gemodded von Mindaugas Milasauskas auszulesen?

Ich möchte gern mit einem Chip 4 Gamepads und eine Tastatur simulieren.

Ich weiß, ich bin nicht im richtigen Forum (mein Projekt hat Nichts mit Robotern zu tun), allerdings habe ich hier die einzigen Hinweise zur Cesko USB Firmware gefunden.

Egal, was ich auch in die descriptoren eintrage, es will einfach nicht. Ich bekomme das Ding nicht mal so weit, dass ich etwas im USBSnoopy erkennen kann.

Vielleicht kann mir ja auch einer von Euch eine einfachere Alternative vorschlagen um obige Devices zu simulieren.

Viele Grüße

Andreas

Marco78
31.05.2005, 21:46
Ich habe mich auch schon gefragt, was passiert wenn man Igor's USB zweimal am PC anschliesst. Jetzt hab ich wenigstens eine Antwort und kann mir die Arbeit ersparen ;)

Aber was ist denn bitte die Version von Mindaugas Milasauskas?

Kann man in der FW nicht eine ID ändern damit quasi ein anderes Gerät erkannt wird?

cupid
01.06.2005, 10:59
Hallo Marco,

den Igor kann man durchaus zweimal anschließen. das ist kein Problem. Zur not kann man die Vendor ID auf zwei verschiedene Werte ändern (z.B. 0 und 1). Dann gibts gar keine Probleme.

Die Version von Mindaugas Milasauskas findest Du hier: http://www.mindaugas.com/projects/MJoy/index.php

Min... hat aus der Igor USB Programmierung ein HID (Joystick) Interface gemacht. Das funktionirt wunderbar, auch zweimal an einem PC. (selbst getestet)

Das Ding ist aber, dass ich nicht mehrere Chips anschließen wollte, sondern mit einem Chip mehrere Interfaces (im Config-Descriptor) definieren wollte, die sich dann nach und nach als HID anmelden.

Ich lese im Moment Fleißig die USB 2.0 und Hid 1.1 Spezifikationen und lerne jeden Tag dazu. Es scheint mir mittlerweile möglich zu sein, das Ganze mit Igors/Mindaus... Vorarbeit umzustellen. Nur, falls das schonmal jemand hinbekommen hat und das vielleicht auch dokumentiert hat, dann müsste ich nicht wie ein Verrückter die Spezifikationen lesen. Die sind nämlich echt ein wenig durcheinander und kaum selektiv (also einzelen Kapitel) lesbar, da immer alles aus den vorigen Kapiteln vorausgesetzt wird und z.T. überhauptnicht mehr erwähnt wird. Wer sich mal Igors Code anschaut, weiß was ich meine (Bitstuffing, NRZI encoding, etc...)

viele Grüße Andreas

Marco78
01.06.2005, 20:21
Igor Code hab ich mir mal angeschaut. Danach hatte ich noch viel mehr Respekt vor seiner Arbeit!

Die Minda....-Variante sieht sehr interessant aus. Ich hab jetzt nur mal kurz reingeschaut. Läuft das ganze nur als HID oder kann man Sache auch noch anders nutzen? (Ohne viel Ahnung von USB und HID-Anbindung zu haben).

Helfen kann ich dir aber leider auch nicht so wirklich. Ich habe auch noch nicht so ganz verstanden, was du vor hast...
Einen AVR nehmen, der dann 3 HIDs darstellt? Was ist denn der eigentliche Zweck deines Versuchs?
Ich kann mir auch nicht vorstellen, wie das gehen soll. Woher weiss die Software (egal ob Firmwar oder PC) um welches Device es sich grade handeln soll?

cupid
02.06.2005, 17:39
Hallo,

zum Projekt: Ich möchte gern einen Babelfisch (Universalübersetzer) für Gamepads und Joysticks entwicklen.

Also: Ausgang: USB,
Eingang: Alle möglichen Gamepads und Joysticks (je vier gleichzeitig). Also Atari 2600, NES, SNES, Playstation GC, N64, Neo Geo, etc. etc. Je mit einem Adapter auf ein DB25 Stecker (oder direkt verlötet, wenn das Pad billig ist)...

Jetzt gibt es zwei Möglichkeiten: Ich benutze Midalg... HId-Interface und versuche die möglichen Gamepads je zu Konvertieren. Naja... Dafür bräuchte ich dann wohl 8 Mega8 Chips... Weil ja neben USB evtl. nicht mehr viel Zeit bleibt zum dekodieren... Und die neueren Gamepads auch unterhalten werden müssen... Die mögen es gar nicht, wenn sich mal der Host nicht mehr meldet, nur weil der grad besseres (USB) zu tun hat... Also je zwei Seriell verbundene Mega 8 oder 16 oder 32 mit 12 MHZ.

Naja, jetzt gibt es aber Spiele / Emulatoren, die nicht mit Joysticks umgehen können, sondern Tastatureingaben verlangen...

Also müsste ich theoretisch noch 4 Mega8 nehmen, um je eine Tastatur zu emulieren.

Dann gibts da noch die Paddles oder Spinner (Deutsch: Drehgeber). Die lassen sich mal wieder nur mit einer Maus emulieren... kommen also noch ein paar Chips dazu...

Wenn ich jetzt aber einen Mega 8 dazu bekomme als 4 Joysticks, eine Tastatur und ein, zwei Mäuse aufzutreten, dann klappts auch mit 5 Mega 8 und ich kann mehr programmieren als löten (was nicht so meine Stärke ist).

Aber: Z.B. könnte ich mit dem rechten AnalogStick eines Gamepads auch den Mauszeiger bewegen lassen... etc. Geilo, oder?
Makros Programmieren...
Dauerefeuer...

Das mit den mehreren Devices geht auch... Siehe Tastaturen mit eingebautem Trackball, die ohne Treiber auskommen und nur einen USB-Anschluss haben. Oder meinen Memory Stick, der sich gleichzeitig als zwei Festplatten anmeldet (auf der einen ist ein security Programm mit der man die Verschlüsselung der anderen FP ausstellen kann).

Pro USB"Device" kannst Du mehrere USB"Interfaces" definieren.
Microsoft sagt dazu:
If you're designing a USB device that includes some HID-like functionality, don't forget that you can make it a composite device by defining several interfaces. The generic parent driver will separate the functions of your device so that the system will load the standard Microsoft drivers for the HID function.

Das Problem ist nur, dass Igor da nicht so dran gedacht hat, und MId... schon gar nicht, da der ja nur einen! Joystick bauen wollte, den er hart verdrahtet...

Ich bin übrigens wesentlich weiter in der USB-Spec gekommen und denke, dass ich mittlerweile das auch ganz gut verstanden habe... vielleicht klappts ja am Wochenende erstmals als zwei Joysticks mit einem Chip aufzutreten ;-)

Mittlerweile ist auf meinem Ausdruck der Midalg... Routine mehr handschriftlicher Kommentar als alles Andere... ;-)

Naja...

Ich krieg's schon hin...

Andreas

Marco78
02.06.2005, 20:23
Die Unterscheidung mehrerer Joysticks bezog sich dadrauf, das du nur einen µC verwenden wolltest.
Ich konnte nicht nachvollziehen, wie nur ein Mega8 wo eh schon alle Anschlüsse belegt sind 4 Joysticks darstellen soll. Die Firmware ist ja nur für eine Interface ausgelegt. Auch wenn der AVR das Device ist, muss es intern ja auf die anderen Interfaces umgestellt werden.

Auf das Ergebnis bin ich gespannt (Nicht das ich es dir nicht zutraue. Es interessiert mich wirklich.)

Ich denke mal Plan B kommt nicht in Frage ;)
Alles über ein FT232 in USB umwandeln. Aber da ist ja das Problem, das du da keine HIDs hast.
Es gibt von Atmel 89Sxxxx mit USB. Vll ist da ja was passendes bei?!
Jedoch fehlt da auch wieder das Bastelspaß!

cupid
02.06.2005, 20:53
Ich habe bisher noch keinen MC gesehen, der DIL und USB hat... aber vielleicht hab ich noch nicht richtig gesucht...

Ursprünglcih wollte ich tatsächlich 8 Mega 8s einbauen... Aber jetzt probier ich das erstmal so. Da war auch ein Datenbus in Planung, der dann alle verbinden sollte... UIUIUI... Also irgendwie werde ichs hinbekommen und wenn ich für jeden controller einen MC kaufe...

Mit der genialen Vorarbeit von Igor, bin ich ja schonmal auf 5cm vor dem Ziel... Das hätte ich ja schonmal nie so hinbekommen.

Also kann ich ja jetzt mal probieren meine 50ct dazuzugeben...

Der Spielspaß an meinem Arcadeautomat ;-) wird's mir dann danken...

Nicht nur Off Topic... Off Forum... :-)

CU Andreas