Titelbild Game Hero
Diese Seite verwendet eigene Cookies und Cookies von Dritten damit wir die bestmögliche Bedienbarkeit und Funktionalität bieten können. Wenn Sie auf diesen Seiten surfen, stimmen Sie der Verwendung von Cookies zu. Mehr erfahren OK

Ein Arduino Mega mit SD2IEC-Funktion

Was wird benötigt?
Close
LoadingBild wird geladen...
Picture

Wer einen Arduino Mega 2560 besitzt, der kann diesen mit ein wenig Aufwand als SD2IEC-Laufwerk für den C64 nutzen. Dazu sind lediglich ein Arduino SD-Shield und ein paar kleinere Komponenten nötig. Die Software hingegen ist auf der Seite des Entwicklers dieses Projektes zu finden: github.com.

Bevor es los geht, noch ein paar Hinweise (Wichtig!)
- Kontrolliere ob die Verdrahtung korrekt ist. Eine falsche Verdrahtung kann den C64 oder den Arduino beschädigen.
- Vermeide statische Ladungen durch das Berühren eines geerdeten Objektes, wie beispielsweise einen Heizkörper. Oder verwende ein antistatisches Armband.
- Verbinde oder trenne die Verbindung mittels IEC-Kabel nur wenn der C64 ausgeschaltet ist.
- Erstelle ein Backup aller Daten bevor du mit diesen Projekt beginnst.
- Ich übernehme keine Verantwortung über Schäden die direkt oder indirekt durch diese Anleitung entstanden sind.

Die Komponenten

Es werden nur wenige Komponenten benötigt und einige davon sind optional:

Arduino Mega 2560 - Auch mit Arduino-Klone dürfte es keine Probleme geben. Ich verwende ein Arduino Mega 2560 R3 von Elegoo.

Arduino Mega 2560 R3
Klicke auf das Bild zum Vergrößern

Itead SD Card Shield V3.0 - Es werden zwar noch andere SD-Shields unterstützt, aber in dieser Anleitung geht es ausschließlich um dieses.

Arduino SD Card Shield
Klicke auf das Bild zum Vergrößern

DIN-Einbaukupplung 6-polig für PCB oder DIN-Kupplung, 6-polig.
Drahtbrücken
SD-Karte x1

Die folgenden Komponenten sind optional und werden nur benötigt wenn LED's und Taster verbaut werden sollen.

Widerstand 330Ω x2 - Auf Wunsch kann ein höherer Widerstandswert gewählt werden, damit die LED's nicht so stark leuchten.
LED, 5 mm, grün x1
LED, 5 mm, rot x1
Kurzhubtaster x2
Experimentier-Steckboard

Das SD-Shield

Das SD-Shield wird einfach auf den Arduino Mega 2560 aufgesteckt. Achte darauf, dass die ICSP-Pins des Arduino's mit den des SD-Shields übereinstimmen.

Arduino ICSP-Pins
Klicke auf das Bild zum Vergrößern

Den Spannungs-Selektor belassen wir auf 3,3V

SD Dhield 3,3V
Klicke auf das Bild zum Vergrößern

Und anschließend entfernen wir die drei Jumper, falls vorhanden.

SD Dhield Jumper
Klicke auf das Bild zum Vergrößern
Die DIN-Buchse

An der 6-poligen DIN-Einbaukupplung können eventuell Drahtbrücken angelötet werden. Ich habe Stifte angebracht, so können Drahtbrücken einfach aufgesteckt werden.

DIN Connector
Klicke auf das Bild zum Vergrößern

Schließe die Drahtbrücken nach folgenden Schema an:

DIN Connector
Klicke auf das Bild zum Vergrößern
Die Software vorbereiten

Die Software muss vorbereitet werden bevor diese auf den Arduino Mega geflasht werden kann. Linux eignet sich sehr gut für diese Arbeiten. Ich verwende die Linux-Distribution Ubuntu die kostenlos runtergeladen und auch in einer virtuellen Maschine verwendet werden kann, falls kein Linux-Rechner zur Verfügung stehen sollte.

Zuerst öffnen wir das Terminal wo wir die benötigten Programme installieren. Wir geben hierfür folgenden Befehl ein:

sudo apt-get -y install git avr-libc avrdude make nano

Install Software
Klicke auf das Bild zum Vergrößern

Als nächstes laden wir die Software runter die später auf den Arduino Mega kopiert wird. Dazu geben wir diesen Befehl ein:

git clone https://github.com/Larswad/sd2iec_mega2560

Install Software
Klicke auf das Bild zum Vergrößern

Im Verzeichnis in den wir uns momentan befinden, sollte nun der Ordner namens "sd2iec_mega2560" erstellt worden sein. Diesen Ordner öffnen wir nun:

cd sd2iec_mega2560

sd2iec_mega2560

Dann müssen einige Berechtigungen festgelegt werden da sonst die Scripts nicht ausgeführt werden können:

chmod -R a+x scripts

chmod sd2iec_mega2560

Und nun muss eine Option in der Make-Datei unkommentiert werden damit das SD-Shield verwendet werden kann. Dies geschieht mit den Editor Nano:

nano configs/config-arduino_mega2560

Es öffnet sich die Make-Datei in der wir die Zeile "#CONFIG_MEGA_SHIELD_ITEAD_V3=y" suchen. Die Raute (Doppelkreuz) am Anfang der Zeile muss entfernt werden. So wird die Option wirksam.

CONFIG_MEGA_SHIELD_ITEAD_V3

Die so editierte Datei wird mit der Tastenkombination STRG+O und dann mit ENTER gespeichert. Mit STRG + X wird der Editor verlassen.

Kompilieren und flashen

Und jetzt geht es zum Endspurt. Die Software wird mit den folgenden Befehl kompiliert:

make CONFIG=configs/config-arduino_mega2560

Wenn keine Fehler angezeigt werden, haben wir alles richtig gemacht. Außerdem sollte jetzt ein weiterer Ordner erstellt worden sein, mit den Namen "obj-m2560-arduino_mega2560", in den sich die kompilierte Firmware befindet. Diesen müssen wir aber nicht betreten.

Spätestens jetzt sollte der Arduino Mega per USB-Kabel an den Linux-Rechner angeschlossen werden. Wir müssen aber den Namen der seriellen Schnittstelle finden, unter den sich der Arduino angemeldet hat. Das dürfte in den meisten Fällen die Schnittstelle "ttyACM0" sein. Wer das genauer wissen möchte, der kann mit den Befehl "dmesg | grep -i tty" ermitteln, welche seriellen Schnittstellen am Rechner present sind.

Serial Port Arduino Mega

Jetzt haben wir alles was wir brauchen, damit die Daten auf den Arduino geflasht werden können. Mit den folgenden Befehl wird der Flashvorgang eingeleitet. Falls die Schnittstelle nicht "ttyACM0" sein sollte, muss diese hier entsprechend angepasst werden.

sudo avrdude -D -p m2560 -c stk500v2 -P /dev/ttyACM0 -b 115200 -F -U flash:w:obj-m2560-arduino_mega2560/sd2iec.hex

avrdude
Klicke auf das Bild zum Vergrößern

Das war's! Der Arduino kann nun mittels IEC-Kabel mit den C64 verbunden werden, muss aber weiterhin mit einer externen Spannungsquelle, wie USB oder Netzteil, versorgt werden. Am C64 sollten wir nun mit den üblichen Basic-Befehlen den Inhalt der Karte sehen:

LOAD"$",8
LIST

LOAD
Klicke auf das Bild zum Vergrößern

Die Navigation durch die Ordner und Images ist die selbe wie bei der originalen SD2IEC. Weitere Informationen bezüglich Verwendung der SD2IEC sind hier zu finden: Die SD2IEC im Detail.

Taster und LED's hinzufügen (Optional)

Taster und LED's sind zwar nicht zwingend erforderlich, können aber nützlich sein, wenn man wissen will wann auf die Karte zugegriffen wird, oder wenn Spiele verwendet werden die aus zwei oder mehreren Disketten bestehen. Da die Firmware der SD2IEC integriert ist, können auch dessen Funktionen, wie beispielsweise Swap-Disk, genutzt werden. Die entsprechenden Pins für Taster und LED's sind im Quellcode deaktiviert und deshalb muss die Datei "arch-config.h" im Ordner src/avr editiert werden. Ich gehe an dieser Stelle davon aus, dass wir uns noch im Ordner "sd2iec_mega2560" befinden. Dann editieren wir die besagte Datei mit Nano:

nano src/avr/arch-config.h

Hier scrollen wir so lange nach unten bis wir zu den Arduino Mega 2560 Optionen gelangen.

arch-config.h
Klicke auf das Bild zum Vergrößern

Wenn wir jetzt noch weiter scrollen, sollten wir zu einem Abschnitt kommen der wie in den folgenden Bild aussieht. Hier löschen wir die Slashs am Anfang der Zeile. Das sollte dann wie folgt aussehen:

arch-config.h LEDS
Klicke auf das Bild zum Vergrößern

Dann scrollen wir weiter runter zu den Button-Einstellungen. Die Slashes der folgenden Zeilen müssen gesetzt bzw. gelöscht werden damit das dann so aussieht wie im nächsten Bild.

arch-config.h Button
Klicke auf das Bild zum Vergrößern

Die so editierte Datei wird mit der Tastenkombination STRG+O und dann mit ENTER gespeichert. Mit STRG + X wird der Editor verlassen. Dann muss der Quellcode wie weiter oben bereits beschrieben, kompiliert und wieder auf den Arduino geflasht werden. Die Taster und LED's schließen wir nun an den Arduino Mega an. Siehe Schema. Das SD-Shield im folgenden Bild ist kein Itead SD Card Shield V3.0. Ich konnte leider kein geeignetes Bild dafür finden. Das macht aber nichts, denn die Pins und dessen Bezeichnungen sind identisch mit den Itead SD Card Shield.

LEDs and Switches
Klicke auf das Bild zum VergrößernLEDs and Switches
Klicke auf das Bild zum Vergrößern

Beide LED's sollten nach den Boot-Vorgang des Arduino's aufleuchten. Die grüne Aktivitäts-LED scheint aber invertiert zu sein. Das bedeutet, dass sie nur leuchtet wenn keine Aktivität vorliegt. Eine Möglichkeit dies zu ändern habe ich noch nicht gefunden.

Troubleshooting

Bei diesem Projekt kann so einiges schief gehen. Mit der folgenden Checkliste kann der Fehler eingegrenzt werden.

Der Kompiliervorgang bricht mit einem Fehler ab:
• Wurden die Berechtigungen der Scripts-Dateien gesetzt?

Der Arduino Mega lässt sich nicht flashen:
• Die Parameter von AVR-Dude sind falsch.
• Wird die richtige serielle Schnittstelle verwendet? Ermittle diese mit "dmesg | grep -i tty".

Auf die serielle Schnittstelle kann nicht zugegriffen werden (Permission denied):
• Probiere folgenden Befehl: sudo chmod a+rw /dev/ttyACM0

Die LED's oder Taster funktionieren nicht:
• Die Software muss neu kompiliert werden nachdem die Einstellungen der LED's oder Taster vorgenommen wurden.

Der C64 kann auf die SD Karte nicht zugreifen:
• Die DIN-Buchse wurde falsch verdrahtet. Siehe PIN-Belegung.
• Verwende eine andere SD-Karte.
• Wurden die Jumper des SD-Shields entfernt?
• Wurde das SD-Shield richtig aufgesetzt? Stimmen die ICSP-Pins des Arduino's mit den des SD-Shields überein?

Der C64 friert beim Versuch auf die Karte zuzugreifen ein:
• Wurde die Raute vor der Zeile "#CONFIG_MEGA_SHIELD_ITEAD_V3=y" entfernt?

Wenn alles nichts hilft, kontrolliere ob der Arduino über die Serielle Schnittstelle etwas ausgibt. Installiere dazu ein Terminal das diese Daten entgegen nehmen kann, z.B, "cu".

sudo apt-get install cu

Nach erfolgter Installation stellen wir eine Verbindung zum Arduino her.

sudo cu -l /dev/ttyACM0 -s 57600

Wenn auf die serielle Schnittstelle nicht zugegriffen werden kann (Permission denied), gib den Befehl "sudo chmod a+rw /dev/ttyACM0" ein und versuche erneut den cu-Befehl einzugeben.

Spätestens jetzt sollte als Antwort vom Arduino die Version der Firmware kommen.

Terminal
Klicke auf das Bild zum Vergrößern

Wenn auf die SD-Karte zugegriffen wird, sollten ausserdem weitere Daten angezeigt werden. Wenn das nicht passiert, dann stimmt etwas mit der Firmware nicht, oder der Arduino streikt.

Zurück
- Datenschutz Besucher total: 2084841 Heute: 27