MMC2IEC/PeterSieg-Platine
Allgemein[Bearbeiten | Quelltext bearbeiten]
Das MMC2IEC ist ein Floppyersatz, das wie eine Floppy am IEC-Bus angeschlossen wird, und als Speichermedium statt einer Diskette dann SD-MMC-Speicherkarten nutzt. Die Schaltpläne der Hardware und die Mikrocontroller Firmware sind als Open Source verfügbar. Es wird allerdings nur das Commodore DOS emuliert und nicht die Floppy Hardware wie bei der 1541 Ultimate.
Peter Sieg entwickelte eine MMC2IEC-Platine, welche sich am MMC2IEC Layout des Entwicklers Lars Pontoppidan orientiert. Diese wird mit konventionellen (bedrahteten) Bauteilen statt mit SMD-Bauteilen bestückt, und eignet sich daher gut für den weniger geübten Bastler zum Nachbau. Er führte diverse Sammelbestellungen durch und bot die Platine zusammen mit dem passenden SD Speicherkarten-Sockel für 10 Euro an. Es wurden mehrere Chargen der Platine gefertigt, die sich durch die Farbe des Lötstopplacks unterscheiden (z.B. blau, weiß, schwarz, gelb, rot). Das Herzstück ist ein ATmega Mikrocontroller, der mit der sd2iec-Firmware betrieben werden kann.
Entwicklungsfeatures[Bearbeiten | Quelltext bearbeiten]
- Es wurden keine SMD-Bauteile, sondern auch für weniger geübte Bastler handhabbare DIL- und bedrahtete Bauteile verwendet.
- Entspricht dem Aufbau/Layout von Lars Pontoppidan, damit sollte sowohl Unseens sd2iec, als auch die originale Firmware nutzbar sein.
- Im Layout ist ursprünglich ein ATmega32 vorgesehen, da aber der ATmega644 Pin-Kompatibel ist, kann dieser hier ebenfalls eingesetzt werden. Das ist zu empfehlen, da die Firmware auf Basis des ATmega32 nicht mehr weiterentwickelt wird.
- Keine Programmiermöglichkeit auf der Platine vorgesehen, der AVR muss außerhalb geflasht (programmiert) werden. Nach einmaliger Programmierung kann allerdings die Firmware über die SD-Karte aktualisiert werden.
- Die Spannungsversorung ist +5V, auf der Platine ist ein 3,3V Spannungsregler vorgesehen, um die SD-Karte zu betreiben.
- SD Card Detect und SD Write Protect sind korrekt am SD-Slot angeschlossen, so dass der Controller beide Signale auswerten kann.
- Der IEC-Anschluss besteht aus drei einzelnen Adern, also den 3 Leitungen CLK, DATA und ATN.
- Es sind Jumper (Brücken) für die Gerätenummern 8/9 und 10/11 vorgesehen.
- 2 Taster für das Vor- und Zurückblättern von Disk-Images (Disk up = Next, Disk down = Last)
- Lötpunkte für eine Status-LED und eine Fehler-LED vorhanden.
- SD Slot von ALPS mit Push Mechanik. Typ: SCDA5A0201 oder SCDA6A0101 passen
- Platinen ab Mitte 2011 zusätzliche Lötpunkte, um einen Kassettenportstecker direkt auf die Platine auflöten zu können.
Bauteilliste[Bearbeiten | Quelltext bearbeiten]
Grundbestückung
- IC1 = ATMega644-20PU, ATMega644P, ATmega1284P oder ATMega32 (veraltete Version, funktionsfähig, wird aber nicht weiterentwickelt)
- C3 = 100nF (X7R-2,5 100N)
- R1, R2, R3 = 3k3 Ω (1/4W 3,3K)
- R4, R5, R6 = 1k8 Ω (1/4W 1,8K)
Spannungsversorgung:
- IC2 = 3,0 bis 3,3V Spannungsregler, Bauform TO92 Gehäuse (LP 2950 CZ3,0 oder 78L33)
- Alternativ könnte man diesen aber auch weglassen und 2 Si-Dioden (z.B. 1N4001) zur Spannungsreduktion einsetzen. Über Nachteile wurde im Forum 64 schon diskutiert. (Siehe Link unten)
- Laut Peter Sieg hat die Spannungsreduktion über 2 Si-Dioden noch nie zu Problemen geführt.
- C4 = 2u2 bis 4u7 Tantal/ELKO (TANTAL 2,2/16)
Optional (für Anzeigen über LED's zu empfehlen):
- R7, R8 = 560 Ω (1/4W 560)
- LED1 = Grün (Standard LED 20-30mA)
- LED2 = Rot (Standard LED 20-30mA)
Optional (für Fastloader ist ein Quarz ein Muss):
- C1, C2 = 22pF bis 33pF (KERKO 33P)
- Q1 = 8MHz Quartz (8,0000-HC49U-S)
Optional:
- 40pin IC-Sockel (GS 40) oder Präzisionssockel (GS 40P) - besser immer sockeln!
- 2 Taster für DiskChange 1 und DiskChange 2 (T 250A SW und T 250A WS)
- 2 Schalter für LW8/9 und LW10/11 (kann man auch Jumper nehmen)
- Datasetten-Tape-Stecker für die +5V Spannungsversorgung vom Datasetten-/Kassettenport des VC20/C64/C128 => www.Conrad.de => Artikel-Nr.: 523950 - 62
Es hilft, wenn man bei www.reichelt.de den seriellen Stecker kauft (MAS 60), dazu Kabelverbinder mit Steckleisten für den IEC-Anschluss (PS 25/3G WS) bzw. Strom und Diskchange (PS 25/2G WS), sowie eine zweireihige Siftleiste, um die Laufwerksnummer-Jumper setzen zu können (SL 2X40G 2,54).
Aufbauhinweise[Bearbeiten | Quelltext bearbeiten]
SD-Slot
Das Verlöten des SD-Slots geht leichter, wenn man vorher auf der Platine einen dünnen Film Löthonig (Kolophonium) aufgetragen hat. Es empfiehlt sich, dünnes Lötzinn mit 0,5 mm und eine Lötspitze in Bleistiftform mit 1 mm zu verwenden.
Die Anschlüsse des SD-Slots müssen vor dem Verlöten nicht verzinnt werden, sondern es ist besser, den SD-Slot einfach direkt auf der Platine zu plazieren und auszurichten. Dazu hat der SD-Slot links und rechts der Anschlussreihe zwei Nasen, die in zwei Löcher auf der Platine eingesteckt werden. Dann wird die Anschlussreihe und die Anschlüsse vorne verlötet. Nachdem der SD-Slot verlötet ist, sollten die Anschlüsse überprüft werden.
Kontrollmessungen: Mit einem Multimeter kann folgendes im stromlosen Zustand nachgemessen werden:
- Vorne, also dort wo man die SD-Karte einsteckt, links und rechts am Slot muss Masse anliegen.
- Der Kontakt WP (Write Protect) auf der rechten Seite etwas weiter dahinter ist mit Masse verbunden, wenn eine Karte eingesteckt ist und kein Schreibschutz aktiviert ist.
- Der Anschluss 10 (Card Detect) ganz außen muss auch Masse haben.
- Der Anschluss 11 (GND) daneben muss Masse haben, wenn eine Karte eingesteckt ist.
Hinweis: Anschluss 10 und 11 sind vertauscht, das hat aber keinen Einfluss auf die Funktion.
Für die folgenden Messungen müssen zuvor die 1,8k und 3,3k Widerstände eingelötet werden. Die Anschlüsse am SD-Slot sind wie in der Abbildung dargestellt und die Pins entsprechend von rechts gezählt:
- Zwischen Anschluss 1 des SD-Slot (2ter Pin von rechts) und Pin 5 des AVR: 1,8k Ohm (=Card Select)
- Zwischen Anschluss 2 des SD-Slot (3ter Pin von rechts) und Pin 6 des AVR: 1,8k Ohm (=Data In)
- Zwischen Anschluss 5 des SD-Slot (8ter Pin von rechts) und Pin 8 des AVR: 1,8k Ohm (=Clock)
- Zwischen Anschluss 1, 2 und 5 des SD-Slot und Masse jeweils 3,3k Ohm.
- Zwischen Anschluss 7 des SD-Slot (10ter Pin von rechts) und Pin 7 des AVR: 0 Ohm (=Data Out)
Mit Spannungsregler, unter Spannung, ohne SD-Karte:
Prüfen, ob +3,3V an Anschluss 4 des SD-Slot (7ter Pin von rechts) anliegt. Hinweis: Der 6te Pin von rechts ist auch für die 3,3V Versorgung der SD-Karte, aber die Verbindung fehlt im Layout. Man kann hier eine Verbindung mit Lötzinn herstellen, ist aber nicht zwingend notwendig.
Gepolte Bauteile:
Die Anoden (langes Bein) beider LEDs zeigen zum SD Slot.
Kondensator (Elko oder Tantal) Minus-Pol zum 3-poligen Spannungsregler.
Bei der IC Fassung auf die Kerbe/Markierung achten (zu den LEDs).
Die beiden Dioden werden nicht bestückt, wenn ein Spannungsregler eingebaut wird. Sonst hier ebenfalls auf die Kennzeichnung der Kathode (Markierung durch einen Ring) achten.
IEC Stecker:
Die 3 IEC Leitungen einfach mit den entsprechenden PINs eines IEC Steckers verbinden (ATN/DATA/CLK). Pin 3, 4, 5 eines IEC Steckers. Die Belegung der Buchse am C64 ist im Artikel "Serielle Schnittstelle" zu finden. Die anderen Leitungen sind unbenutzt und kann man frei lassen. Aber es empfiehlt sich, noch GND (Masse) mit der Platine zu verbinden, damit das mmc2iec und der C64 das gleiche Massepotential haben. Das ist zwingend erforderlich bei Verwendung einer externen Stromversorgung. Bei Versorgung über den Kassettenport besteht darüber eine Masseverbindung.
Spannungsversorgungsstecker SV2
Auf der Platinenunterseite sind die drei Pins mit 0, 5, und 3 beschriftet, das entspricht 0 = GND, 5 = +5 Volt, 3 = +3,3 Volt. Die Versorgung bitte an GND (0) und +5V (5) einspeisen. An Pin 3 wird nichts eingespeist, hier kann man dann die +3,3V Spannung für die SD-Karte kontrollieren.
Programmierung des ATmega[Bearbeiten | Quelltext bearbeiten]
Mindestens einmalig muss der ATmega programmiert werden. Bei Verwendung des Bootloaders kann dann die Firmware über die SD-Karte aktualisiert werden.
Fuses
Der ATmega verfügt über zwei sogenannte Fuse-Bytes. Das Fuse High-Byte und Fuse Low-Byte. Beim ATmega 644 und 1284 zusätzlich noch das Extended-Byte. Durch Programmierung der einzelnen Bits in diesen Bytes wird die interne Funktionsweise des ATmega beeinflusst. Je nach verwendetem Programmiergerät bzw. Programmiersoftware (AVR Studio, PonyProg, AVRDUDE, usw.) ist die Darstellung und Einstellung der Fuses in der Bedienoberfläche unterschiedlich. Manchmal genügt es ein entsprechendes Häckchen in der Bedienoberfläche zu machen, bei AVRDUDE muss man die entsprechenden Bytes in der Kommandozeile angeben.
Fusebits | |||
Bit | Low | High | Extended |
7 | CKDIV8 - Divide clock by 8 | OCDEN - Enable OCD | - |
6 | CKOUT - Clock output | JTAGEN - Enable JTAG | - |
5 | SUT1 - Select start-up time | SPIEN - Enable Serial programming and Data Downloading | - |
4 | SUT0 - Select start-up time | WDTON - Watchdog timer always on | - |
3 | CKSEL3 - Select Clock Source | EESAVE - EEPROM memory is preserved through chip erase | - |
2 | CKSEL2 - Select Clock Source | BOOTSZ1 - Select Boot Size | BODLEVEL2 - Brown-out Detector trigger level |
1 | CKSEL1 - Select Clock Source | BOOTSZ0 - Select Boot Size | BODLEVEL1 - Brown-out Detector trigger level |
0 | CKSEL0 - Select Clock Source | BOOTRST - Select Reset Vector | BODLEVEL0 - Brown-out Detector trigger level |
Eine Funktion gilt dann als programmiert, wenn das entsprechende Bit "0" ist, damit ergeben sich je nach Konfiguration folgende Bytes:
Fuse-Bytes | |||||
ATmega | Quarz | Bootloader | Low | High | Extended |
ATmega 32 | ohne | ohne | 0xE4 | 0xD9 | - |
ATmega 32 | mit | ohne | 0xAF | 0xD9 | - |
ATmega 644 | mit | ohne | 0xEE | 0xDA | 0xFD |
ATmega 644 | mit | mit | 0xE7 | 0xDA | 0xFD |
ATmega 1248 | mit | mit | 0xEF | 0xD2 | 0xFD |
Beispiel mit PonyProg und ATmega 32:
Beispiel mit AVRDUDE und ATmega 1248:
-U lfuse:w:0xef:m -U hfuse:w:0xd2:m -U efuse:w:0xfd:m
Firmwareversion abfragen[Bearbeiten | Quelltext bearbeiten]
Nur direkt nach dem Einschalten kann die Firmwareversion abgefragt werden.
10 OPEN 15,8,15:INPUT#15,A$,B$,C$,D$ 20 CLOSE 15 30 PRINT A$,B$,C$,D$
RUN
LCD Erweiterung[Bearbeiten | Quelltext bearbeiten]
Sascha Bader hat die Firmware-Versionen v0.6.6 und v0.8.0 um Routinen zur Ansteuerung eines LCD-Displays (HD 44780 kompatibel) erweitert. Die daraus entstandenen Versionen v0.6d bzw. v0.8d stehen auf seiner Homepage zum Download bereit.
Auf dem Display können folgende Informationen dargestellt werden:
- aktueller Pfad (D:<pfad>)
- aktuelles D64 image (D:<Image.d64>)
- Dateizugriff (L/S/R:<file>)
- Fehlermeldungen (E:<error>)
- Benutzerdefinierte Texte
- Bootscreen
Weblinks[Bearbeiten | Quelltext bearbeiten]
- MMC2IEC auf der Webseite von Peter Sieg
- Dokumentation und Platinenlayout bei pitsch.de (AntaBaka)
- Thema: mmc2iec simpel LarsP Eagle Dateien auf Forum64.de