Hello, Guest the thread was called1.8k times and contains 28 replays

last post from OlsenG at the

Tester für Amiga CD32 / Honeybee Joypads

  • Hallo Leute,


    ich könnte mal etwas Input von Euch brauchen. Ich probiere seit gestern, mir eine Schaltung für einen
    Joystick-tester zu überlegen.
    Das CD32 Joypad hat ja etliche Knöpfe, die über einen 74LS165 serialisiert werden.
    Ich bin mir nicht ganz sicher, wie das über "Potx" und "Poty" normalerweise von Paula angesteuert
    wird. Dazu findet man keine Informationen. Meistens werden diese Leitungen auch ganz anders
    verwendet.
    Ich möchte das serialisierte Signal letztendlich über einen 74LS595 wieder in ein 8bit Parallelmuster
    verwandeln und eine LED-Ausgabe machen.
    Ich jetzt erst einmal mit dem Oszilloskop zwischen Joypad und Konsole messen.
    Aber vielleicht hat ja jemand schon Erfahrung? Anbei Schematics von dem Pad ...


    Ich wäre wirklich froh über Tipps.


    LG

  • Ja, danke ... aber da sind natürlich keine Oszilloskopbilder / Erklärungen.
    Die reine Schematic eines CD32 habe ich schon :)


    Ich habe eben ein paar Messungen gemacht. Leider bekomme ich die mit dem Voltcraft VDO-2072A
    gemessenen Image mit dem Rechner nicht angezeigt.
    Ich glaube, der Stick war mit 16GB einfach zu groß :( .
    Ich versuche es gleich nochmal mit einem anderen Device ...


    LG

  • Desweiteren kann man hier sehen, was auf Pin9 passiert - dort kommt das serielle Signal raus ...


    Ich poste mal die Bilder von Pin9 mit den verschiedenen Knöpfen:

  • ... wenn einer von Euch Lust hat, mit mir an einer Lösung zu tüfteln, einen CD32 Joypad-Tester zu basteln - wäre cool!
    Ich weiß noch nicht, wie ich diese Clock mit einfachen TTL nachstellen soll und ob ein 74LS595 dann zum
    "entserialisieren" geeignet wäre.
    Schon einmal danke an alle, die meinen Thread überhaupt eines Blickes würdigen! :)


    LG

  • Hi Auspuff,


    ich hatte in diesem Thread einen Sourcecode gepostet, um ein CD32-Pad mit dem Arduino auszulesen. Damit hatte ich mir einen Joypad-Tester gebaut.


    NES Funk-Controller für den C64 :-)


    Bei mir liegt eine Kiste Honeybee-SNES-Controller, die ich auf CD32 umbauen möchte. Vielleicht können wir voneinander abschauen :)


    Interessant ist, dass vom Schieberegister 1 Bit mehr kommt als es Buttons gibt. Vermutlich, weil es kein entsprechendes Schieberegister gibt?


    Ich habe das Pad nicht mit dem LA oder Oszi untersucht, ich bin empirisch rangegangen und hab das Ding an einen Arduino gehängt und mit den Pins gewackelt. Aber es scheint zu passen ;)
    Da ist auch ein "Timing-Diagramm" dabei. Einigermaßen...

  • Hallo,


    danke - ich sehe da mal rein ...
    Die Kernfrage momentan - das muss doch möglich sein, das IC im Gamepad so "anzuclocken", wie Paula das
    tut, oder? um das Gamepad auszulesen, musstest Du das ja auch irgendwie zum Laufen bringen.
    Mit VCC und GND ist es ja nicht getan ...


    Und ich hätte gerne gewusst, was auf den Leitungen PotX und PotY üblicherweise erwartet wird -
    oder ist das nur für die Maus relevant und wird hier einfach anders gebraucht?


    LG

  • Pin 5 ist normalerweise HIGH. Wenn man ihn auf LOW zieht, wird Pin 6 zum Clock-Eingang des Schieberegisters und an Pin 9 werden die Bits ausgegeben.


    Wenn Pin 5 HIGH ist, ist Pin 6 FIRE und Pin 9 BLUE. Die anderen entsprechend dem Schema.


    Man muss (glaube ich) immer alle durchclocken, bevor man wieder den SHIFT-Status wechselt und Pin 5 loslässt.


    Anders ausgedrückt ist POTY der /CHIP_SELECT für den IC, /FIRE ist der CLOCK-Eingang des IC und POTX der Ausgang des IC.

  • Ach ja, noch was. Die maximale Frequenz hängt natürlich vom IC ab, eine minimale Frequenz gibt es nicht, der IC reagiert einfach auf eine steigende Flanke und gibt einen Button aus, bis alle 8 durch sind, dann geht's von vorne los. Um BLUE zu kriegen und FIRE, muss man den IC wieder kurz deaktivieren. Somit sind es insgesamt 10 Buttons, wovon 2 nicht verwendet werden (oder das sind für Paula Start/Stop-Bits oder so, weiß ich nicht).

  • Nein, ich meinte ich gehe in dieser Reihenfolge vor:


    der Normalzustand ist alle 3 Leitungen HIGH. Weil ja Taster diese nach GND schalten.
    Also ist das Register nicht aktiv und das Joypad verhält sich wie ein normaler Joystick mit 2 Feuerknöpfen.


    1. Ich lese den Status von FIRE und BLUE.
    2. Jetzt ziehe ich SHIFT und FIRE auf Low. (CD32 ON)
    3. FIRE auf High. RED einlesen. FIRE auf Low.
    4. FIRE auf High. YELLOW einlesen. FIRE auf Low.
    5. FIRE auf High. GREEN einlesen. FIRE auf Low.
    (...usw...)
    Dann SHIFT auf HIGH (CD32 OFF) und es geht wieder bei 1 los.


    Mit "kurz" meinte ich nur um 2 Signale einzulesen. Ohne Zeitrelevanz. Es gibt kein Timing beim Joypad, nur eine feste Reihenfolge.

  • So sieht übrigens die SNES-Variante des Honeybee aus:



    Identisch zur CD32-Variante nur weiß statt schwarz und der CD32-Schriftzug fehlt. Gibt es regelmäßig für schmales Geld (5-15 Euro) bei ebay UK, dort hat der sich offenbar gut verkauft.

  • Anders ausgedrückt ist POTY der /CHIP_SELECT für den IC, /FIRE ist der CLOCK-Eingang des IC und POTX der Ausgang des IC.

    klasse, das ist richtig gut erklärt.
    Ich habe nur noch Probleme, meine Oszilloskopbilder mit Deinem Signaldiagramm übereinanderzubringen.
    Ich lese das momentan so:


    /RED: 10000000
    /YEL: 01000000
    /GRN: 00100000
    /RSH: 00010000
    /LSH: 00001000
    /PAU: 00000100
    ...
    vielleicht stehe ich ja auf dem Schlauch gerade ?(
    Dort sind stets 2 "LOW-Impulse" zu sehen.
    Der erste ist wohl der Zeitpunkt, wenn SHIFT und FIRE nach LOW gezogen werden.
    Aber der zweite passt nicht zu Deinem Signaldiagramm, finde ich.


    DANKE, dass Du Dich überhaupt damit befasst :)


    LG

  • Nach /PAU kommen die von mir so bezeichneten
    /RE1: 00000010
    /RE2: 00000001
    RE für Reserve, denn die sind tatsächlich keinem Button zugeordnet. Die liest man aus und ignoriert sie einfach. Eventuell sind die auch dafür gedacht, den Anfang zu finden? Man weiß ja nicht, an welcher Stelle das Register grad steht, oder gibt es einen Reset?


    Ich weiß nicht, ob das mit SHIFT+FIRE gleichzeitig auf LOW auch von Paula gemacht wird. Ich mache das, weil ich ja gleich danach eine steigende Flanke auf FIRE brauche.
    Außerdem weiß ich nur, wie man die Bits aus dem Joypad "rausclockt". Wie die Bits in das Register kommen (auf Joypad-Seite) weiß ich noch nicht. Hab das CD32 Honeybee noch nicht aufgeschraubt, ist in irgendeiner Kiste in Luftpolsterfolie verstaut... später mal rauskramen.

  • Außerdem weiß ich nur, wie man die Bits aus dem Joypad "rausclockt"

    Oh je, habe ich jetzt auch versucht - allerdings bin ich am verzweifeln, was den Pegel angeht.
    Habe einen ATMega8 genommen und das Clock-Signal aus meinem ersten Oszilloskopbild
    fast perfekt nachgestellt. Das Problem ist nur, dass man ohne großen Pulldown auf dem Ausgang
    nur einen 200mV peak bekommt. Mit einem 180k (!) gegen Masse, sind die mal gerade 2,5V.


    Schließt man das Joypad an, bricht das Ganze fast zusammen und die Flanken werden unten rund.
    Ich weiß ehrlich nicht, was ich da gerade falsch mache ... warum macht der ATMega8 so kleine, empfindliche
    Flanken ?(X(


    Ich programmiere übrigens in C mit AVR Studio 4 ... vielleicht musst Du mir so einen Prozessor mal programmieren.
    Gibt es zu Deiner Schaltung eine Schematic?


    verzweifelte LG


    Andre

  • Ich vermute, dass Du an einer Stelle vergisst, den Pin von Ausgang auf Eingang zu wechseln oder sowas. Ich habe keine extra Widerstände benutzt, nur die internen Pullups des ATmega.


    Ich kann Dir gerne meinen Code entsprechend anpassen, hab nur AVR Studio lang nicht mehr benutzt und hab die Befehle nicht im Kopf.


    Bin ja eh viel zu früh wach heute, werd in paar Minuten nochmal was posten ;) Erstmal Kaffee

  • Nachdem ich jetzt versucht habe das Ganze nochmal als Pseudo-Code aufzubereiten, dachte ich, das ist doch unnötige Arbeit. Schick mal, was Du bis jetzt hast und ich helf Dir, das zum Laufen zu kriegen, direkt mit Deiner Pinbelegung, Deinen Variablennamen usw. Sonst müssen wir da jedesmal um 3 Ecken denken.