Forum: Mikrocontroller und Digitale Elektronik Noch eine Frage zur Festplatte


von Markus (Gast)


Lesenswert?

Hi,

ich hab mich mimtlerweile mal durch den ersten teil der ata specs
gelesen.
nun würd ich gern mal den ersten versuch starten und
zwar will ich die drive-specs auslesen, also sprich
das commando "identify drive" ausführen lassen.

so wie ich das verstanden hab muss ich dabei wie folgt vorgehen:

1. cs0: 1    (low)
   cs1: 0    (high)
   da2: 1    (high)
   da1: 1    (high)
   da0: 1    (high)

   setzen

2. (mit ein paar ns verzögerung)
   d15-d8: 0 (low)
   d7-d0:  0xec
   setzen.

anschließend sollte die platte bzw. der plattencontroller
über die pins d0-d15 256 words ausspucken.

mir ist 1. nicht ganz klar ob diese nun 16bit oder 8bit breit
ankommen,
und zweitens mit welchem clock-signal getriggert?

kann mir da bitte jemand weiterhelfen?

thx im vorraus markus

von Axel Rühl (Gast)


Lesenswert?

anschließend sollte die platte bzw. der plattencontroller
über die pins d0-d15 256 words ausspucken.

Hallo Markus
Words eben. war doch 16Bit, oder...

Grüße
AxelR.

von Markus (Gast)


Lesenswert?

hi,

klar, :) das ein word 16 bit breit ist weis ich schon.
nur kommen diese wenn IOCS16 nicht gesetzt ist auf den
pins dd0 - dd7 jeweils als zwei bytes an oder grundsätzlich
als komplettes word auf dd0-dd15

ist der rest eigentl. richtig?
und wie find ich denn nu raus ob im an dd0-dd7(15)
nun das nächste word anliegt?

gruß markus

von Axel Rühl (Gast)


Lesenswert?

würde voraussetzen, dass auch ich mir die ATA-Specs reinziehe, ausm
Bauch: /RD /WR oder sowas, einer von den Pins geht doch bestimmt bei
jedem Word auf L, denke ich.
sowas hat doch sicher schon mal einer gemacht...

Ich weiss es nicht genau, schade
AxelR.

von Markus (Gast)


Lesenswert?

hm..interessante idee....
vielleicht sollte ich mir die specs nochmal etwas näher anschaun ;)

danke.

.gruß markus

von Florian Pfanner (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

hab so was schon mal Programmiert. Im Anhang ist die C und H-Datei.
Musst mal durchschauen.

Gruß, Florian

von Markus (Gast)


Lesenswert?

hey DANKE.

von Markus (Gast)


Lesenswert?

gleich mal ne frage:

die funktionen out & in sind von dir definierte funktionen oder?
wenn ja, könntest du mir die vielleicht mal schicken?
wenn nein: ???

gruß markus

ps: welchen controller hast du verwendet?

von Florian Pfanner (Gast)


Angehängte Dateien:

Lesenswert?

Ja, die Funktionen sind Definiert. Diese geben aber nur das Byte an die
Adresse aus oder lesen das Byte ein. Ich hab die Festplatte an den
Externen Adressbus gehängt - für deine Zwecke vielleicht ein bischen
unpassend.

Ich hab mal noch ein bischen gesucht, und bin auf den Quellcode von
einem Versuchtsprojekt gestoßen. Bei diesem hab ich die Festplatte
direkt an den Controller angeschlossen. Hab dir mal den Quellcode in
den Anhang gestellt. Inwieweit die Angaben in der Datei
verbindungen.txt stimmen, kann ich nicht sagen. Für dich Interresant
dürften die Lese- und Schreib-Funktionen sein. (Die Pause von 1ms ist
sehr lang, kannst ruhig noch kürzen)

Programmiert sind beide Programme mit CodeVision auf einem MEGA161

Gruß, Florian

von freaky (Gast)


Lesenswert?

sehr geil. danke.
ich werd mich gleich mal damit beschäftigen.

gruß markus

von freaky (Gast)


Lesenswert?

eine frage hätte ich da aber noch:

beim lesen/schreiben im PIO kann man ja zwischen 16 & 8 bit
modus wählen. geht das auch bei identify device?

mein problem ist nämlich das ich nur einen atmega8 mit 22 io pins hab
(reset nicht mitgerechnet) und da wirds enge wenn ich schon 16 für
die adressierung verbrate.....

das identify device scheint immerhin schon zu funktionieren,
nur leider krieg ich halt immer nur das lsb jedes
der 256 words mit :)

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.