hack-hro wiki:

Info

Beschreibung
SNES Controller nach C64 Joystick Adapter
Kategorie
Basteln
Beteiligte

DaMicha, Peter

Status
Abgeschlossen
Start-Datum
2016-05
Letzte Aktivität
2016-11

Anleitung

Vorneweg - die Anleitung.

Der SNES2MD Adapter ermöglicht es das Anschließen eines SNES Controllers an den C64.

Wie immer, der Adapter darf nur an einem ausgeschalteten C64 angeschlossen oder entfernt werden. Das Gleiche gilt für die SNES Controller, die an den SNES Adapter angeschlossen werden. Der Adapter selbst funktioniert ohne weiteres zutun. Jedoch lässt sich über den SNES Controller die Autofire-Funktion aktivieren und konfigurieren.

Button Belegung:

Gerade bei der Start Taste muss man ein wenig aufpassen, dass man nicht aus Versehen das Autofire aktiviert.

Projekthintergrund/Motivation

Einfaches Mikrocontrollerprojekt um einen SNES Controller am C64 (oder Amiga) anschließen zu können.

Ziele

SNES Controller zu C64 SubD9 Adpater

snes2md:

Links:

Kaufversion:

Die SNES Controller

Wir haben 2 gebrauche gekauft (ebay: je 15 Euro). Der Zustand ist akzeptabel und kann noch durch etwas Pflege verbessert werden.

Dazu besitzen wir jetzt noch 2 Verlängerungskabel (je 4 Euro), die wir zerschneiden können um die Controller an den Adapter anschließen zu können. So haben wir auf der SNES-Controller Seite ein vorkonfektionierte Lösung.

Atmega auf nem Breadboard

Bevor es richtig los geht ein Blinky Projekt auf einem Arduino machen. Das ist das standard Arduino-Beispiel. Damit hätten wir schon einmal ein Programm in einen Atmega geflasht.

Als zweiten Schritt nutzen wir das selbe Program auf einem Atmega328p. Hierfür betreiben wir den Atmega in der Grundbeschaltung mit einem 16MHz Oszillator. Von dem Arduino übernehmen wir die LED an Pin 13. Dazu benutzen wir einen tinyUSB als Programmierhardware. Und schon haben wir Atmega für unser Projekt am Start.

Der nächste Schritt ist der Aufbau des snes2md Adapters auf einem Breadboard.

Und hier das Ergebnis:

C64-SNES2MD-Adapter-Breadboardaufbau-1280x720.jpg

Auf dem Breadboard ist der Atmega in der Grundschaltung aufgebaut und der Programmier Adapter ist verbunden. Neben der Programmierung des Mikrocontrollers, dient er hier noch dessen Spannungsversorgung. Über Jumpwires sind ein SNES Controller und das Oszilloskop angeschlossen. Es zeigt sehr schön die Signale Clock (Gelb, 16 Takte) und Chip-Select (Türkis), beide generiert vom Atmega, und das Datensignal (Violett), gesendet vom Controller, an. Am Controller ist die Knopf "A" gedrückt, was im Datensignal als Low-Pegel in der hinteren Hälfte zu sehen ist.

Atmega Programmieren

Das Atmega Model ist Atmega8a. Programmiert haben wir folgendermaßen:

Ersteinmal den Zustand des Atmegas abfragen:

avrdude -n -p m8 -P usb -c usbtiny -v

Wir brauchen folgende Fusebits: high_byte=0xc9, low_byte=0x9f

Fuses setzen (-B setzt den Bit Clock in mikroseconds):

avrdude -p m8 -P usb -c usbtiny -v -Uhfuse:w:0xc9:m -Ulfuse:w:0x9f:m -B 20.0

Hiernach muss der Atmega mit dem Oszillator zusammen betrieben werden.

Firmware flashen:

avrdude -p m8 -P usb -c usbtiny -v -Uflash:w:snes2md.hex

Schon fertig :-)

Lochrasterplatinenlayout

Das Layout haben wir mit Fritzing erstellt. Ist nicht schön geworden, sollte aber so stimmen.

C64-SNES2MD-Breadboardlayout-1280x576.jpg

Die Kabel haben wir folgendermaßen an den Steckern belegt:

SNES Kabel Belegung. Die Farben sind die von unserem Kabel:

  Pin Nr    Kabel Farbe     Bezeichnung
  -------------------------------------
  1          grün           5V
  2          gelb           Clock
  3          weiß           Latch
  4          rot            Data
  5                         nc
  6                         nc
  7          schwarz        Ground

SNES Kabel Kontakte am uC - J2:

Header Pin  Signal name        AVR pin name     Farbe
-----------------------------------------------------------
5           CLOCK              PB5              gelb
4           DATA               PB4              rot
3           LATCH              PB3              weiß
2           VCC                VCC              grün
1           GND                GND              schwarz

Atari/commodore wiring Kabel und Kontakte - J3 und SubD 9 Stecker

Header Pin  DB9 Pin     Signal name   AVR pin name  Kabel Farbe
--------------------------------------------------------------------
8           1           UP            PC5           schwarz
7           2           DN            PC4           braun
6           3           LF            PC3           rot
5           4           RT            PC2           orange
4           6           Fire          PC1           grün
3           9           Fire 2        PC0           weiß
2           8           GND           GND           grau
1           7           VCC           VCC           blau
            5           nc                          gelb

Unklare Pin Konfigurationen

Es gab noch ein paar unklare Pinbelegung die wir geklärt haben:

PB1: muss nach GND um Atari-Mode (ist C64 kompatibel) zu aktivieren.

PD2: SELECT (input): um die Geschwindingkeit des Dauerfeuers zu ändern. Benutzen wir nicht. Ist mit pull-up konfiguriert und der Pin muss nicht belegt werden.

PD4: einfach von Außen auf VCC gesetzt. Hat keine Funktion. Ist aus Layoutgründen im Original mit VCC verbunden. Haben wir so übernommen

Zusammenlöten des Adapters

Wir bauen 2 Versionen. Eine, bei der die Adern des SNES- und SubD-Kabels auf Stecker gekrimpt werden und eine, bei der die Adern aufgelötet sind. Mal schaun, was besser funktioniert.

Hier die Lochrasterplatine mit den aufgelöteten Kabeln:

C64-SNES2MD-Adapter-Leiterplatte-1280x456.jpg

Die Schaltung hat nach dem Zusammenlöten erstaunlicherweise sofort funktioniert :-).

Und der Adapter im Gehäuse:

C64-SNES2MD-Adapter-Gehäuse-1280x720.jpg


KategorieProjekt

hack-hro wiki: Projekte/C64/SNES2MD (zuletzt geändert am 2016-11-28 19:28:38 durch damicha)