IDE Festplatte ansteuern

Gast #1310210
hoi,

hab schon gesehen das es einiges an threads hier gibt, aber ich will 
keine speziellen daten lesen oder schreiben, sondern nur zu demozwecken 
die scheiben in rotation versetzen und sehen wie sich der 
lese/schreibkopf bewegt. habe hier noch einen atmega32 rumfliegen, mit 
welchem ich die nötigen signale an die ide schnittstelle schicken 
könnte. mich würde einfach nur interessieren, welche minimal 
ansteuerungslogik ich brauche, um den arm von a nach b und evtl 
zurückzubewegen, ob er dabei schreibt oder liest oder nur luft verdrängt 
ist mir ziemlich egal.


danke soweit
benni
Wie willst du denn die Bewegung sehen? Üblicherweise ist eine Platte 
geschlossen und man sieht nichts.

Und wenn du sie aufmachst, dann könnte bald auch nichts mehr zu sehen 
sein weil die Platte nicht mehr ansprechbar ist. Weil die Firmware ohne 
funktionsfähigen Zugriff auf die Disks möglicherweise den Betrieb 
einstellt.

Mit uralten MFM-Disks klappt sowas mangels Eigenintelligenz besser.
Zum Abnehmen der orinalen Abdeckung und montieren des Plexuglases hast 
du sicher einen Reinstraum?
Denn ohne diesen kommt schon beim Wechseln der Abdeckung etwas Staub auf 
die Platte, welche diese über kurz oder lang zerstöhrt.
Persönliche Seite
Also ich hab mich gerade vor kurzem durch die IDE Thematik "gequält". 
Wenn du keine Daten lesen oder schreiben willst (bzw. auf die Hälfte der 
Kapazität verzichtest) reicht es wenn du die HD mit 8 Bit ansteuest, 
also ggf reicht dir auch schon ein Mega48. Neben den unteren 8bit des 
Datenbus brauchst du dann nurnoch /WR /RD  CS0 CS1 (wobei du diese auf 
festen Pegel legen kannst zur Not) und die A0-A2. Je nach Alter der 
Platte KÖNNTE es klappen mittels des SEEK Kommandos den kopf in gewissen 
Grenzen zu steuern.
(Firma: keine)
Läubi .. schrieb:
> Also ich hab mich gerade vor kurzem durch die IDE Thematik "gequält".
> Wenn du keine Daten lesen oder schreiben willst (bzw. auf die Hälfte der
> Kapazität verzichtest) reicht es wenn du die HD mit 8 Bit ansteuest,
> also ggf reicht dir auch schon ein Mega48. Neben den unteren 8bit des
> Datenbus brauchst du dann nurnoch /WR /RD  CS0 CS1 (wobei du diese auf
> festen Pegel legen kannst zur Not) und die A0-A2. Je nach Alter der
> Platte KÖNNTE es klappen mittels des SEEK Kommandos den kopf in gewissen
> Grenzen zu steuern.

so habe mal die verkabelung vorgenommen und die 15 pins + ground 
verdrahtet.
setze ich nun /WR/RD CS0 CS1 alle auf high pegel? mit A0...A2 steuere 
ich die Adressen, also die position oder? den datenbus beschalte ich 
dann willkürlich.
Persönliche Seite
> setze ich nun /WR/RD CS0 CS1 alle auf high pegel?

Äh ... nein.


> mit A0...A2 steuere ich die Adressen, also die position oder?

Glaubst Du, daß eine Festplatte nur 8 Spuren hat?

Auch nein.

Du wirst nicht umhinkommen, die ATA-Spezifikation durchzulesen.

Und selbst wenn Du erfolgreich ATA-Kommandos an die Platte sendest, wird 
sie nicht unbedingt den Kopf so bewegen, wie Du Dir das vorstellst, denn 
sie wird einmal ausgelesene Daten im Cache halten und beim 
entsprechenden Lesekommando nur den Cacheinhalt liefern.

Für Dein Projekt brauchst Du eine Festplatte mit ganz erheblich weniger 
Eigenintelligenz. Eine alte MFM- oder RLL-Festplatte mit ST506-Interface 
ist da viel besser geeignet, Beispiele für so etwas sind die berühmte 
ST225, ST251, ST4096 oder ST4144R von Seagate.

Hier ein eBay-Link auf so ein Schätzchen:

http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=170347819795
Gast
Wenn die Platte eh schon offen ist, vielleicht kannst du besser den 
Motor und Arm direkt ansteuern? Etwas die Platine umbauen, IDE Signale 
wegkratzen und Motor-Signale auf den Verbinder legen....
Gast
ich möchte eigentlich nichts anderes, als die festplatte in rotation 
versetzen und den arm willkürlich und sinnlos hin und her bewegen, dabei 
ist es mir egal wohin er schreibt oder von wo er liest oder sonst was, 
es geht hier wirklich nur um demonstrationszwecke, um die meschanik zu 
demonstrieren.

@superuser: die idee ist mir heute auch gekommen, habe mich dann mal mit 
der steuerung des armes befasst und ich denke es wäre eine 
alternative...
Benjamin Anonym schrieb:

> setze ich nun /WR/RD CS0 CS1 alle auf high pegel? mit A0...A2 steuere
> ich die Adressen, also die position oder? den datenbus beschalte ich
> dann willkürlich.

Nein, so dumm ist die Platte nicht.

Du mußt ihr schon sinnvolle ATA-Befehle geben, und zwar über den 
Datenbus. Die Adresse, die sie lesen soll, gibst du ihr auch über den 
Datenbus. Die Daten bekämest du ebenfalls auf dem Datenbus, wenn du sie 
haben wolltest.

Ob du ihr gerade einen Befehl gibst oder eine Adresse oder Daten abholen 
willst, erfährt sie über A0..A2. Und ob du etwas in die Platte 
reinschickst oder etwas herausholst, steuerst du darüber, ob du /RD oder 
/WD pulst.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.