Re: 3.5" Diskettenlaufwerk an 8051?

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From German to

Threaded View
|> Aber wie kommt man an den Source-Code? Hat das schon mal
|> jemand auf 8051 programmiert?

8051-Sourcen sind mir jetzt auf Anhieb keine geläufig, aber wenn
es Dir um FAT12 ("DOS-Format") geht, gibt es dazu zumindest zig
Codebeispiele für z.B. AVR, meist allerdings in C.

Den Low-Level-Kram, d.h. das Ansprechen des auf der "billigen PC-Karte"
vorhandenen 765-Derivates, mußt Du allerdings zu Fuß erledigen. Aber
da ist das 82077-Datenblatt von Intel eine gute Hilfe.

Rainer

Re: 3.5" Diskettenlaufwerk an 8051?

 >ich möchte ein 3.5" Diskettenlaufwerk an einen 8051 (oder
 >schnelleren Kompatiblen) anschliessen. Die Hardware ist kein
 >grosses Problem wenn man z.B. eine billige PC-Karte dafür
 >missbraucht.

Na dann viel Glueck. :-]

 >Aber wie kommt man an den Source-Code? Hat das schon mal
 >jemand auf 8051 programmiert?

Ich glaub nicht. Die werden sich alle die Kugel gegeben haben.

 >Es geht im wesentlichen darum, eine Datei im DOS-Format auf
 >eine leere (aber bereits formatierte) Diskette zu schreiben.

Auch noch das Filesystem. Das wird ja immer besser. <BG>

Es gab in der C't mal einen Artikel wie man an einem Apple][+ ein
8Zoll Laufwerk anschliesst. Und das bereits mit einem sehr modernen
(damals) Controller (IMHO WD297???) 8Zoll und 5 1/4/3.5 ist ziemlich
aehnlich. Solltest du also mal lesen.

Die CPU ist da BESTENS beschaeftigt. Du musst diesen Controllern
naemlich nicht einen Datenblock liefern und den Rest machen die dann
schon (vgl: CF,MMC,SM) sondern die Bytes wirklich einzeln und schnell
genug ranschaffen.

DAnn willst du noch ein Dateisystem nutzen. Du brauchst dafuer, selbst
fuer das schreiben einzelner Blocks, mehr Ram als ein MCS51 hat. Dann
sind defekte Sektoren auf eine Diskette keine Seltenheit. Du musst
dich also wirklich auch darum kuemmern!

Sowas wuerde ich mir freiwillig nicht antun. Benutze lieber eine
aktuelle Speicherkarte.

Olaf

--
D.i.e.s.S. (K.)

Re: 3.5" Diskettenlaufwerk an 8051?

Quoted text here. Click to load it

Vorsicht. Der Floppycontroller ist das letzte Gerät im PC, das den alten
ISA-DMA-Controller braucht. In Deiner Schaltung wird DMA wohl einen deutlich
erhöhten Aufwand bedeuten.

Idee: Sofern es nur um Einzelstückzahlen geht, nimm ein LS-120 Laufwerk. Das hat
IDE. Den Rest kannst Du Dir von Projekten holen, die CF-Karten lesen und
schreiben, denn CF wird meist auch als IDE-Gerät benutzt, und FAT ist es auch
(wenn auch FAT32 bei den großen Karten und nicht FAT12 wie bei Disketten).

Mit freundlichen Grüßen

Dipl.-Ing. Frank-Christian Krügel

Re: 3.5" Diskettenlaufwerk an 8051?
Quoted text here. Click to load it
Siehe
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de /
F.7.6. Massenspeicher an Mikrocontrollern
Ein FDC-Controller (hast du offenbar schon),
Code steht im BIOS deines Rechners (hast du also auch)
DOS ist zwar nicht schwierig (es gibt reihenweise DOSse
umsonst, z.B. C-DOS) aber gross.
Die einfachere Variante (festes Format schreiben) wird
daher in der FAQ vorgeschlagen, bist du offenbar selbst
drauf gekommen.
--
Manfred Winterhoff, reply-to invalid, use mawin at gmx.net
homepage: http://www.geocities.com/mwinterhoff /
We've slightly trimmed the long signature. Click to see the full one.
Re: 3.5" Diskettenlaufwerk an 8051?

 >Vorsicht. Der Floppycontroller ist das letzte Gerät im PC, das den alten
 >ISA-DMA-Controller braucht. In Deiner Schaltung wird DMA wohl einen deutlich
 >erhöhten Aufwand bedeuten.

Naja, unbedingt brauchen wuerde ein moderne PC den DMA dafuer wohl
nicht. Das ist wohl eher eine Frage der kompatibilitaet.

Aber man darf natuerlich fragen wieso das beim PC mit 4.77Mhz so
gemacht wurde. Und die Antwort ist wohl das er sonst nicht schnell
genug war. Von daher wuerde ich den Source der das nur mit einem MCS51
macht gerne mal sehen.

Olaf


--
D.i.e.s.S. (K.)

Re: 3.5" Diskettenlaufwerk an 8051?
Olaf Kaluza schrieb:

Quoted text here. Click to load it

Der hätte das schon mit Polling machen können, war ja nur alle 32us ein
Byte abzuholen.


Gruß Dieter

Re: 3.5" Diskettenlaufwerk an 8051?
Quoted text here. Click to load it

Ja, man braucht fuer die Ansteuerung keinen DMA-Controller.
Vor langer Zeit gab es mal die 1581, eine 3.5"-Floppy fuer den
C64/C128. Als Controller wurde dort ein WD1772 benutzt, als
CPU ein 6502A. DMA-controller gab es keinen. Die CPU durfte
es selbst erledigen und hat das auch hinbekommen.

Man wird feste pollen duerfen und besser nebenher die
IRQs sperren damit wirklich nichts schiefgehen kann.


Quoted text here. Click to load it

Aber ein 6502A (2 MHz) ist schnell genug? Interessant...

 Gerrit

Re: 3.5" Diskettenlaufwerk an 8051?
|> Olaf Kaluza wrote:
|> Ja, man braucht fuer die Ansteuerung keinen DMA-Controller.
|> Vor langer Zeit gab es mal die 1581, eine 3.5"-Floppy fuer den
|> C64/C128. Als Controller wurde dort ein WD1772 benutzt, als
|> CPU ein 6502A. DMA-controller gab es keinen. Die CPU durfte
|> es selbst erledigen und hat das auch hinbekommen.

Dito in diversen 198x Synthesizern als Kombination 6809/WD1772.

Bei der 1581 war das tatsächlich reines Polling, IRQ mußte aber dennoch
"auf" sein wegen der seriellen Kommunikation, d.h. der 8520 hustete ab und
zu dazwischen.

Im Falle besagter Synthesizer (konkret Ensoniq SQ80 -- Georg, hör auf mit
den Augen zu rollen :), hing DRQ (1772) über einen Inverter an IRQ# (6809)
und IRQ (1772) ebenfalls invertiert an NMI# (6809).

Effektiv war der 6809 auch nur mit 2MHz unterwegs.

|> Man wird feste pollen duerfen und besser nebenher die
|> IRQs sperren damit wirklich nichts schiefgehen kann.

s.o.

|> > Aber man darf natuerlich fragen wieso das beim PC mit 4.77Mhz so
|> > gemacht wurde. Und die Antwort ist wohl das er sonst nicht schnell
|> > genug war.
|>
|> Aber ein 6502A (2 MHz) ist schnell genug? Interessant...

Jup, das kann schon sein. Beim 8086/88 war bereits ein Buszyklus satte 4
Taktzyklen und ein gesamter Befehl (wenn wir mal MUL/DIV außer acht lassen)
bis zu ~25 Zyklen.

Beim 6502 hingegen war ein Befehl zwischen 2 und 5 Zyklen abgehakt.

Als weitere Beispiele aus der Historie:

In der 1541 (5.25", DD) macht ein 1MHz-6502 *alles*, d.h. sogar die
Rohdatendekodierung. Bei der SFD1001 (5.25", QD) teilen sich zwei 6502
den Bus (geht bei dem Prozessor ja wunderbar einfach), der eine spielt
Datensammler, der andere (De)koder.

Rainer

Re: 3.5" Diskettenlaufwerk an 8051?

Quoted text here. Click to load it

Da gibt es noch unzählige andere Dinge im PC-Design, bei denen man
sich fragt, was die Designer damals wohl für ein Kraut geraucht
haben...

Quoted text here. Click to load it

Nö. Apple und Commodore haben schon Jahre vorher mit 65xx-CPUs (ca.
1MHz Takt) Floppy-Interfaces fast rein softwaremäßig realisiert, nur
mit ein wenig Analogkram und TTL-Logik als Hardwareunterstützung. Mit
der schnelleren CPU und dem Hardware-Controllerchip war die Aufgabe
für IBM seinerzeit fast schon trivial.

Quoted text here. Click to load it

Ist mit Sicherheit machbar. Die MCS51 können ja immerhin je 64k RAM
und ROM adressieren, was ungefährt der Grundausstattung des Ur-IBM-PC
entspricht. Vielleicht findet sich irgendwo im Netz noch alter Code...

Sowas heute neu zu entwickeln, wäre aber schon ziemlich krank.
Flash-Karten sind billiger, schneller, und leichter anzusteuern als
ein Floppylaufwerk.

Hergen

Re: 3.5" Diskettenlaufwerk an 8051?

 >Nö. Apple und Commodore haben schon Jahre vorher mit 65xx-CPUs (ca.
 >1MHz Takt) Floppy-Interfaces fast rein softwaremäßig realisiert, nur

Aber keine HD-Floppy mit 1.44MB und nicht ohne Grund mit einem sehr
abstrusen inkompatiblen Datenformat. Auf einen Ehring Controller war
deutlich mehr drauf!

Olaf


--
D.i.e.s.S. (K.)

Re: 3.5" Diskettenlaufwerk an 8051?
Quoted text here. Click to load it

GCR ist nicht abstrus sondern deutlich besser als MFM. Auf eine
DS/DD-Disk bekommt man mit GCR mehr als 1 MB Nutzdaten drauf.
Bei MFM braucht man dafuer schon HD.

Abgesehen davon benutzen schon die Laufwerke von C= damals
etwas was die PC-Welt erst spaet bei IDE-Platten zu sehen
bekam, Zone-Bit-Recording. Je nach Position auf der
Diskette wurden unterschiedliche Sektorenzahlen geschrieben
was die Oberflaeche _deutlich_ besser ausnutzte.


Quoted text here. Click to load it

Die C= 1581 hat zumindest DD mit einem 6502A und einem WD1772
ohne DMA-Controller hinbekommen. HD gabs beim PC erst ab dem
AT, also ist DD durchaus vergleichbar.

 Gerrit

Re: 3.5" Diskettenlaufwerk an 8051?

Quoted text here. Click to load it

Die hatte der IBM-PC mit seinen 4.77MHz auch nicht. Dessen Laufwerke
brachten gerade mal 360kByte auf zweiseitigen 5.25"-Discs unter, kaum
mehr als bei der Konkurrenz (AppleII: 140kb einseitig, Commodore1541:
170kb einseitig).

Als die 1.44MB-Floppies aufkamen, hatten wir schon 386er, die wiederum
die Datenrate problemlos per Polling hätten abwickeln können. Tatsäch-
lich wäre Polling auf diesen Maschinen wahrscheinlich sogar schon
performanter gewesen, als die völlig veralteten DMA-Controller und der
durch sie verursachte, recht erhebliche Software-Overhead.

Quoted text here. Click to load it

Wie schon von Gerrit erwähnt, war das keineswegs abstrus.
Jeder kochte damals sein eigenes Floppy-Formatsüppchen, und das
IBM-MFM-Format war auch nicht mehr, als eben ein IBM-Format, und
technisch eher sogar unterlegen.

Quoted text here. Click to load it

Ja. Dieser Mehraufwand war AFAIR erforderlich, um für den
CP/M-Emulator all die unzähligen inkompatiblen Formate lesen zu
können.

Hergen

Re: 3.5" Diskettenlaufwerk an 8051?

Quoted text here. Click to load it
nur

1982 erwarb ich eine SFD1001 (1.2MB/zweiseitig) zusammen mit einem
schicken CBM610 (1MB Hauptspeicher 'gebankt'... :-). Der erste IBM-PC
kam dann glaub ich 1984...

Quoted text here. Click to load it

Mit freundlichen Grüssen:
Rüdiger Klenner



Re: 3.5" Diskettenlaufwerk an 8051?
|> Aber keine HD-Floppy mit 1.44MB und nicht ohne Grund mit einem sehr
|> abstrusen inkompatiblen Datenformat. Auf einen Ehring Controller war
|> deutlich mehr drauf!

HD gab's damals noch nicht mal für 5.25" und das "abstruse, inkompatible"
Datenformat heißt Group Code Recording (GCR), welches damals gar nicht
so abstrus war, wie Du heute vielleicht annimmst, und auch heute noch
abseits von Commodore und Apple im Einsatz ist (Stichwort: Tape Storage).

Vielleicht riecht es für Dich ja nicht mehr so altertümlich, wenn Du
GCR einfach als RLL(0,2)-Code betrachtest.

Rainer

Re: 3.5" Diskettenlaufwerk an 8051?
Quoted text here. Click to load it

Wo wir gerade schon dabei sind.. gibt es irgendwo eine gute Beschreibung
der verschiedenen Codes?! Bei den Suchbegriffen findet google fast
ausschliesslich kurze Lexikoneinträge oder C64-Seiten, die aber auch
nicht näher auf das genaue Verfahren eingehen.

--
snipped-for-privacy@gmx.de, www.kreapc.de


Re: 3.5" Diskettenlaufwerk an 8051?
|> Wo wir gerade schon dabei sind.. gibt es irgendwo eine gute Beschreibung
|> der verschiedenen Codes?! Bei den Suchbegriffen findet google fast
|> ausschliesslich kurze Lexikoneinträge oder C64-Seiten, die aber auch
|> nicht näher auf das genaue Verfahren eingehen.

eine gute MFM-Einführung:
http://www2.inf.fh-rhein-sieg.de/mi/lv/mf/ws98/stud/mt/mfm/mfm.htm

FM/MFM
http://www.nouspikel.com/ti99/disks.htm

diverse Aufzeichnugsverfahren
http://www.tu-chemnitz.de/informatik/RA/kompendium/vortraege_97/ide/hdd2.html

ähnlich, aber auf englisch
http://www.storagereview.com/guide2000/ref/hdd/geom/data.html

und MFM "zu Fuß", d.h. mit minimaler Hardware und umso mehr Software:
http://209.239.50.176/afr /

Sehr gute, umfassende Zusammenstellung, leider nur noch via web.archive.org:
http://web.archive.org/web/20020120210143/http://home1.pacific.net.sg/~ttn/chpt8/chpt8.html

Rainer

Re: 3.5" Diskettenlaufwerk an 8051?
Quoted text here. Click to load it

ACK - trotzdem war ich anfangs dieses Jahres so krank und habe genau
das mit einem SMSC FDC37C78 an einem Rabbit 8-Bitter gemacht. War
etwas aufwendiger als zuerst gedacht, hat aber alles in allem Spass
gemacht.

Markus

Re: 3.5" Diskettenlaufwerk an 8051?
: Hallo,

: ich möchte ein 3.5" Diskettenlaufwerk an einen 8051 (oder
: schnelleren Kompatiblen) anschliessen. Die Hardware ist kein
Ein AVR mit 12 MHz (ja, ist kein 8051!) sollte doch mit wenig externer
Unterstützung in der Lage sein, eine Floppy anzusteuern.
Das Hauptproblem dürfte der Datenseparator sein.
Das Filesystem selbst ist unter der Voraussetzung einer konstanten
Dateigröße eher trivial, da nur Start und Endsektor bekannt sein
müssen. Das Filesystem kann ja am PC erstellt werden.
Der große Vorteil ggü. einer Flashkarte ist die derzeit noch leichte
Verfügbarkeit von Floppylaufwerken.
Allerdings ist mittlerweile ein Universalleser für den USB auch kein
großes Problem mehr.


Re: 3.5" Diskettenlaufwerk an 8051?

 >Das Filesystem selbst ist unter der Voraussetzung einer konstanten
 >Dateigröße eher trivial, da nur Start und Endsektor bekannt sein
 >müssen. Das Filesystem kann ja am PC erstellt werden.

Naja, du musst dich unbedingt um defekte Sektoren kuemmern. Sowas ist
bei Disketten nicht so selten das man es ignorieren koennte.

Olaf



--
D.i.e.s.S. (K.)

Re: 3.5" Diskettenlaufwerk an 8051?
|> Naja, du musst dich unbedingt um defekte Sektoren kuemmern. Sowas ist
|> bei Disketten nicht so selten das man es ignorieren koennte.

Nicht zwingend. Sollte das Formatieren fehlschlagen, weil ein Sektor
partout nicht formatiert werden will, kann man die Diskette rundheraus
ablehnen, wie das auch z.B. beim Amiga so gehandhabt wurde und es auch jeder
FAT12-Formatter macht, wenn Sektor 0 defekt ist.

Treten Defekte *nach* dem Formatieren auf, erkennen das die üblichen
Load/Save-Routinen für FAT12 auch nicht von selbst, sondern es bedarf Nachhilfe
durch Hilfsprogramme wie den seinerzeit sehr beliebten Norton Diskdoctor.

Gammeldisks über solche Fummeleien noch halbwegs nutzbar zu machen ist ein
Relikt aus der Zeit, als die Dinger noch haarsträubend teuer waren. Da hat man
die Disk auch schonmal liebevoll mit dem Magneten gestreichelt, um hernach
noch einen finalen Formatierversuch zu unternehmen...

Rainer


Site Timeline