Forum: Mikrocontroller und Digitale Elektronik SD-Card an sehr altem Rechner mit 6502 CPU (@1 Mhz) ?


von Michael (Gast)


Lesenswert?

Ich haette mal eine etwas aussergewoehnliche Frage. Ich moechte eine 
SD-Card an einem sehr alten Rechner nutzen. Es handelt sich dabei um 
einen (Commodore) CBM 3001 (1Mhz Takt).
Dieser verfuegt ueber eine frei programmierbare 8bit-Schnittstelle mit 2 
Steuerleitungen.
Diese nennt sich wie z.B. beim alten Commodore 64 ebenfalls Userport und 
ist im Prinzip ein halber 6522 ( 
http://6502.org/documents/datasheets/mos/mos_6522.pdf ).

Ich moechte nun eine SD-Card moeglichst ohne zusaetzlichen Controller 
anklemmen. Wird das im "4 bit-mode" funktionieren ?
Geschwindigkeit ist in diesem Fall nicht so relevant, da diese sehr 
alten Computer-Veteranen sowieso nicht mehr als 32 kB Hauptspeicher 
haben. FAT16-Treiber oder ein natives Filesystem schreibe ich mit einem 
6502-Cross-ASM.

Michael

von Obelix (Gast)


Lesenswert?

Möglich ist das auf jeden Fall im SPI-Modus. Wenn du dir die Infos für 
den 4-Bit-Modus besorgst, sollte das auch möglich sein. Denn der CBM3001 
ist auch nichts anderes als ein µC in groß.

Ich verstehe immer die Fragestellung von vielen Leuten nicht die so 
lauten "Funktioniert dies oder das ...". Es ist halt fast alles möglich, 
es kommt eben immer auf die Fähigkeiten des einzelnen an.

von Michael (Gast)


Lesenswert?

Die Card-Reader mit diesen µC arbeiten oft mit 8 Mhz. So ein alter 
6502-Rechner, ist z.B. gegen einen relativ aktuellen Atmel, eine echte 
Schnecke.
Das Lesen der Karte wird sich imo irgendwo im kHz-Bereich bewegen. Daher 
mache ich mir Gedanken ueber das Timing, da das Shiften der Bytes 
zusaetzlich viel Rechenzeit kostet.

Werde vorab ein paar Experimente machen.

Danke fuer die Antwort.

Michael

von Benedikt K. (benedikt)


Lesenswert?

Michael wrote:
> Die Card-Reader mit diesen µC arbeiten oft mit 8 Mhz.

Wie kommst du da drauf ? Viele der Kartenleser nutzen PLLs um mindestens 
mal 48MHz für USB zu erzeugen, und eventuell auch für den uC. Außerdem 
nutzen die uC auch DMA, nur so sind die USB Highspeed Geschwindigkeiten 
erst möglich. Die Datenrate bei SD und MMC Karten liegt im MHz Bereich. 
Ich schätze mal bei 1MHz Prozessortakt wird die Nutzdatenrate wird 
irgendwo im einstelligen kByte/s Bereich sein.

von Michael U. (Gast)


Lesenswert?

Hallo,

hast Du die komplette Belegung des Userports?

Ist das Schieberegistr des 6522 mit rausgeführt?

Sonst häng einen kleinen AVR dazwischen als "CardReader". Karte per SPI 
ran und zwischen AVR und Userport 8-Bit Parallel. Mußt Dir eben mit den 
restlichen Leitungen ein Mini-Protokoll für die 
Datenrichtungsumschaltung ausdenken.

Gruß aus Berlin
Michael

von Michael (Gast)


Lesenswert?

@benedikt: Ich meinte verschiedene von mir gefundene Bastelloesungen auf 
PIC oder ATMEL-Basis. Zudem gibt es einen Card-Reader fuer den C64 : 
MMC64, der mit 8Mhz arbeitet.

@Michael U.: Die Belegung des Userport und weitere Unterlagen habe ich .

http://www.cbmhardware.de/cbmpet/cbm2001.php?Lang=&from=petmodel#userport
http://www.cbmhardware.de/mosic/daten/cbmhardware_via.txt

Das mit dem Shift-Register muss ich mal testen. Der 6522 hatte einen Bug 
in diesem Bereich. Ich kann mich im Moment aber nicht an Details 
erinnern.

Das mit dem Atmel ist sicher technisch die geschickteste Loesung, leider 
dann aber auch mit etwas Aufwand im Nachbau verbunden. Ich hatte 
eigentlich eine sehr spartanische Hardware-Loesung gesucht. Sollte 
moeglichst jeder mit ein paar "Draehten" anklemmen koennen.

Ein paralleles Protokoll sollte kein zu grosses Problem sein. Etwas 
aehnliches habe ich schonmal gemacht ( 
http://www.cbmhardware.de/crossload/ ).

Danke fuer Eure Hilfe. Ich werde mal verschiedene Ansaetze versuchen. 
Vieleicht ergibt sich dann eine Loesung.

Michael





von Sven B. (mainframeosx)


Lesenswert?

Warum dieser aufwand! Gibt es doch schon, nennt sich C1541-III, ist eine 
MMC/SD Laufwerk was am I2C-Bus angeschlossen wird.

Gugst du Hier:

http://jderogee.tripod.com/project1541.htm

Gruss Sven

von Gast (Gast)


Lesenswert?

Der Commodore hatte schon einen I2C Bus ?

von Sven B. (mainframeosx)


Lesenswert?

Ja natürlich, da war die Floppy Disk dran. Such mal mit Google den C64, 
da findeste 1000 von seiten. Ausgestorben ist der Computer noch lange 
nicht. Ich habe mir erst einen C64DTV zugelegt, zudem habe ich habe noch 
einen C128 , C64 II , Atari 800XL und einen Amiga 500 und Amiga 4000T.
Unter www.svenschwiecker.de ist mein Gemoddeter C64DTV zu besichtigen.

Sven

von Otto (Gast)


Lesenswert?

Hallo,

der "CBM3001" ist aber kein "C64", sondern ein "aufgepeppter" PET2001 - 
der 3001 hat eine große Tastatur und dafür keinen Cassettenrecorder. Die 
Floppy des PET / CBM wurde "damals" über GPIB (IEExxx) und NICHT seriell 
angesteuert.

Gruß Otto

von Sven B. (mainframeosx)


Lesenswert?

Ok. Habs auch schon gelesen. Dann ist wohl eine Parallelport lösung das 
beste.

von Michael (Gast)


Lesenswert?

Nur mal so zum Stand der Dinge: Ich habe mich mal wegen dem 6522 und 
Shift-Register erkundigt. Das kann man besser schnell wieder vergessen.

Ich habe mich nun fuer eine 4bit-Loesung mit ATMEGA8 (da vorhanden) 
entschieden. 8 Bit geht leider nicht, da mir sonst eine Steuerleitung 
beim CBM fehlt.
Zwei werden fuer die Koordination des Datenflusses und ein dritte 
Leitung zum Signalisieren der Richtung verwendet.
Letztlich waere ich dann mit 4-5kB/s nicht unzufrieden. Aber bis dahin 
ist es noch ein Stueck Arbeit.

Michael




von Otto (Gast)


Lesenswert?

Hallo Michael,

wenn Du schon einen Controller nimmst, könntest
Du auch das IEE488 Interface verwenden und die
Karte dann über die "Floppy-Befehle" des CBM
ansprechen.

Gruß Otto

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.