CJoy

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Platine mit USB-Kabel, Joystickanschluss und Programmieranschluss

CJoy ist ein Interface, mit dem man alte Digital-Joysticks auf USB umrüsten kann. Somit lassen sich alte C64-Joysticks auch im Emulator auf neueren PCs nutzen.

Eigenschaften des CJoy[Bearbeiten | Quelltext bearbeiten]

  • Zwei Achsen (hoch/runter, links/rechts), bis zu 4 Feuerknöpfe
  • Entspricht USB 1.1 Low Speed (kompatibel zu USB 2.0-Anschlüssen)
  • Benötigt keinen speziellen Treiber (benutzt den Standard-HID-Treiber)
  • Stromverbrauch unter 65mA
  • 200 Abfragen pro Sekunde durch HID-Descriptor-"Tuning"
  • Mehrere Interfaces gleichzeitig an einem PC möglich
  • Verwendet den weit verbreiteten Microcontroller ATmega8-16PI
  • Integriertes Programmiergerät für den Microcontroller (kompatibel zur Programmiersoftware Pony Prog 2000 (Freeware), benötigt einen PC mit Druckerschnittstelle)
  • Firmware ist Freeware (unterliegt der GPL)
  • Lässt sich auf einer normalen Punkt/Streifen-Rasterplatine (Rastermaß 2,54) aufbauen (Beispielaufbau verwendet "Lötpunkte in Dreierketten")
  • Bauzeit ca. 2 Stunden (ca. 100 Lötstellen)
  • Materialkosten ca. 7€

Bilder und Schaltplan[Bearbeiten | Quelltext bearbeiten]

Im Schaltplan wird die DIL-Version des ATmega8 gezeigt (wie im Beispielaufbau). Die TQFP- und MLF-Versionen haben eine abweichende Pinbelegung!

Stückliste[Bearbeiten | Quelltext bearbeiten]

Stk Artikel Bestnr. Preis/Stk. (€)
1 Sub-D-Stecker, 25-polig, Lötkelche D-SUB ST 25 0,22
1 Sub-D-Stecker, 9-polig, Lötkelche D-SUB ST 09 0,10
2 Widerstände 82Ω METALL 82,0 0,082
4 Widerstände 330Ω METALL 330 0,082
1 Widerstand 2,2kΩ METALL 2,20K 0,082
1 Widerstand 4,7kΩ METALL 4,70K 0,082
2 Z-Dioden 3,3V (0,5W) ZF 3,3 0,05
1 Quarz 12MHz 12,0000-HC49U-S 0,18
2 Keramikkondensatoren 33pF KERKO 33P 0,06
1 Tantal-Elektrolytkondensator 10µF, 16V TANTAL 10/16 0,17
1 ATmega8-16PI ATMEGA 8-16 DIP 2,05
1 IC-Sockel 28-polig schmal GS 28P-S 0,42
1 USB2.0-Kabel, A-Stecker auf A-Stecker AK 670/2-2,0 0,75
1 Lochrasterplatine (empfohlen: 3er Lötpunktketten) H25PS050 0,81
1-2m Draht (Litze) LITZE BL 0,74

Eine Lochrasterplatine der Größe 100mm x 50mm reicht für zwei Schaltungen. Das USB-Kabel reicht ebenfalls für zwei Schaltungen (es wird in der Mitte durchtrennt). Ein 10m-Ring Litze reicht für 5-10 Schaltungen, je nachdem, wie lang man die Verbindungen zwischen den Sub-D-Steckern und der Platine haben will (die Schätzung geht von ca. 7-15cm aus). Wer die Schaltung mehrmals baut (und das IC sockelt), kommt eventuell auch mit einem Programmierteil hin (die 4 Widerstände 330Ω und der Sub-D-Stecker 25-polig).

Im Gehäuse TEKO 10007

Der Microcontroller besitzt ein 28-poliges DIL-Gehäuse in schmaler Bauform. Passende 28-polige schmale Sockel sind selten (üblicherweise findet man nur die breite Bauform). Man kann natürlich auch einen breiten Sockel umbauen, zwei 14-polige Sockel verwenden oder komplett auf den Sockel verzichten.

Rechts in der Stückliste stehen zur Orientierung die für den Beispielaufbau verwendeten Bauteile (Bestellnummern und Gesamtpreise bei Reichelt, Stand 28. März 2012). Bitte dabei auf die exakte Schreibweise achten! Die Suchfunktion bei Reichelt ist manchmal etwas "kreativ" und verwandelt die angegebenen 0,4W-Widerstände in 2W-Widerstände. Oder den Tantalelko in Tropfenform in ein SMD. Wichtig ist auch das Komma bei der Z-Diode ZF 3,3! Ein abweichender Wert passt weder hinsichtlich Spannung noch Kapazität!

Die Stückliste enthält noch kein Gehäuse! Ich verwende ein TEKO 10007 (1,90€ bei Reichelt), welches nur durch einen Schnappverschluss zusammen gehalten wird (keine besondere mechnische Stabilität, aber dafür im Wartungsfalle einfach zu öffnen). Der Programmieranschluss lässt sich im Inneren des Gehäuses verstecken. Mit einem Klecks Heißkleber kann man die Platine fixieren.

Programmieren des Microcontrollers[Bearbeiten | Quelltext bearbeiten]

Für die Firmware besitzt der ATmega8 einen Flash-Speicher, der sich etwa 10.000 mal neu programmieren lässt. Somit sind nach der Erstprogrammierung auch Firmware-Updates kein Problem.

  1. Rechner herunterfahren und ausschalten.
  2. Den ICP-Anschluss (25-poliger Sub-D-Stecker) an die Druckerschnittstelle des Rechner anschließen.
  3. Interface per USB an den Rechner anschließen (während der Programmierung wird USB bloss für die Spannungsversorgung benötigt - theoretisch kann man sich also auch den Strom von einem zweiten Rechner holen).
  4. Rechner einschalten.
  5. Pony Prog 2000 herunterladen und installieren (falls nicht schon passiert).
  6. Pony Prog starten und die Dialoge bestätigen.
  7. Falls man Pony Prog das erste Mal auf dem Rechner startet, muss es erstmal kalibriert werden. Das geht über des Menüeintrag Setup/Calibration (Screenshot).
  8. Danach wählt man die Art des Programmiergeräts aus, und wo es angeschlossen ist. Den dazu passenden Dialog ("Interface Setup...") findet man im Menü direkt über dem Eintrag zur Kalibrierung. In unserem Falle ist das Programmiergerät ein "AVR ISP I/O" an der parallelen Schnittstelle:
    CJoy - Pony Prog Step 2.png
  9. Als nächstes wird der Typ des zu programmierenden Microcontrollers ausgewählt: Device/AVR micro/ATmega8 (Screenshot)
  10. So, jetzt laden wir die Datei mit der Firmware (nicht der Source Code, sondern die Datei, die auf *.hex endet) per File/Open Program (FLASH) File (Screenshot).
  11. Wer will, kann jetzt noch den Brown-Out-Detector des Microcontrollers aktivieren (ist aber nicht unbedingt nötig); die dazu passende Einstellung im Dialog "Configuration and Security bits" (zu finden im "Command"-Menü) sieht so aus:
    CJoy - Pony Prog Step 5.png
    Andere Häkchen sollten nicht gesetzt sein! Sonst kann es sein, dass später gar nichts funktioniert.
  12. Endlich. Wir schreiten zur eigentlichen Programmierung per Command/Write Program (FLASH) (Screenshot).
    Die dann noch folgenden Sicherheitsabfragen bestätigen und warten, bis der Upload beendet ist. Wer will, kann natürlich noch ein "Verify Program" (Vergleich des Programms im Flash-Speicher des Microcontrollers mit der Datei) durchführen.
  13. Rechner herunterfahren und ausschalten.
  14. Den ICP-Anschluss (25-poliger Sub-D-Stecker) wieder entfernen.
  15. Fertig. (Wer mehrere Interfaces gebaut hat und nur eines davon mit dem ICP-Anschluss ausgestattet hat, darf jetzt das programmierte IC gegen ein unprogrammiertes austauschen und von vorne anfangen).

Versionshistorie[Bearbeiten | Quelltext bearbeiten]

0.03 (05.11.2005)
Bugfix: pull-up für den dritten Feuerknopf war nicht aktiviert
0.02 (04.11.2005)
Erste freigegebene Version
Tuning: Polling Interval im HID Descriptor auf 5ms geändert (= 200Hz)
0.01 (02.11.2005)
Interne erste Version (Beginn der Softwareentwicklung)

Downloads[Bearbeiten | Quelltext bearbeiten]

  • CJoy_0.03.zip enthalt: Firmware, "programmierfertig" as hex-Datei, Quellcode als asm-Datei, Schaltplan als Eagle-Datei (Eagle 4.15, Freeware-Lizenz)

Ähnliche Themen[Bearbeiten | Quelltext bearbeiten]

  • USB-Joystick-Adapter von Greg, dem CJoy recht ähnlich, aber 2x Digitaljoystick auf USB mit ATtiny2313-Mikrocontroller