Festplatte Pinbelegung

Gast #91334
Lesenswert?

@Tom

Hatte ich auch schon dran gedacht. Das Problem ist aber, daß Du mit
einem Edding normalerweise nur einmal schreiben kannst. Da die
Festplatte wiederbeschreibbar sein sollte wäre vielleicht ein Bleistift
besser. Da kann man die Daten dann leichter ändern.
Gast #91336
Lesenswert?

Wie bitte, wollt ihr mich auf den Arm nehmen?
Ich will nicht mit einem stift oder so auf die Platte in der Festplatte
schreiben sondern mit dem Lese-Schreibkopf in der Festplatte!
Ich muss nur noch wissen, welche Pins ich an der Festplatte ansteuern
muss!
Danke schön.
Gast #91337
Lesenswert?

Du armer...
Der Grund warum du verarscht wirst:
Eine Festplatte anzusteuern ist nicht schwer, das haben schon viele
geschafft, indem sie google bemüht haben. (So habe ich das auch
gemacht.)
Außerdem wurde das hier im Forum (und auch in anderen) schon oft genug
erklärt.

PS: schau mal auf www.t13.org, das müsste deine Fragen beantworten.
Gast #91338
Lesenswert?

Aber der Mikrocontroller läuft schon oder? Wie hast denn rausgefunden,
was bei dem die ganzen Pins machen? Oder hast du einen Tiny genommen?
Ist eigentlich keine schlechte Idee, bei 8 pins bleibt das schon
überschaubar
Gast #91340
Lesenswert?

> Ich muss nur noch wissen, welche Pins ich an der Festplatte
> ansteuern muss!

Du mußt mindestens mal DD[15:0], /CS0, /CS1, /RD, /WR und A[2:0]
ansteuern wenn du einfach nur im PIO-Modus arbeiten willst.

Ich hoffe, das hilft etwas.

GND muß natürlich auch angeschlossen werden, Details findest du in der
ATA-Spezifikation.

Mario
Gast #91342
Lesenswert?

Hallo,
habe mir die pinbelegung angeguckt!
Habe follgendes festgestellt:
Ich denke ich weiss wie ich auf die Festplatte schreiben und lesen
kann, aber die Festplatte muss doch wissen, welcher bereich gelesen
oder drauf geschrieben werden soll!
Mit welchem Pin und Signalverlauf mache ich das?
Danke.
Gast #91352
Lesenswert?

Du hast recht, wenn man ihn abtippt funktioniert es. Wer soll denn
wissen, dass die URL sich nach dem Forum richtet?
Und ausserdem ist das ganze in Englisch und Herr Nik Bamert hat mir
schon sehr geholfen.
Danke schön.
Gast #91356
Lesenswert?

Nö, bin nicht dumm!
Ist nit nett so was zu sagen!
Ausserdem weiss ich jetzt wie ich eine Festplatte ansteuern kann, nur
an einem Tag und mit 15. He He He
Sie waren damals nicht so fitt oder?
Gast #91358
Lesenswert?

Es ist nicht unbedingt eine Frage des Alters. Ich war 15 als ich
Internet bekommen habe, vorher hatte ich keine Möglichkeit mir
Datenblätter o.ä. zu besorgen.
Ich bin 20 und habe vor etwa 1,5 Jahren mit uC quasi bei Null
angefangen. Festplatten Ansteuern habe ich mir selbst nur durch google
beigebracht (Anschlußbelegung + Dateisystem). Die resliche Elektronik
mit 16bit <-> 8bit Wandler habe ich mir selbst ausgedacht. Alles was
ich sonst nocht brauchte stand auf T13.org.
Ich habe aber auch mehrere Tage gebraucht, bis ich die Grundlagen
verstanden habe. Einige Beispielprogramme aus dem Internet (-> google)
helfen alles zu verstehen.
Beim ersten Mal funktionierts sicher nicht, aber nicht verzweifeln.
Eine Nacht schlafen, am nächsten Tag nochmals die Schaltung und
Software durchgehen. Wenns immer noch nicht geht, alles weglegen und
nach einer Woche nochmal versuchen, dann bekomme ich meistens alles
hin...
Gast #91360
Lesenswert?

Ach, hier komme ich nicht mehr weiter:
Wenn ich jetzt auf den Sektornummern-Register zugreifen will, muss ich
nur die Pins CS0,CS1 und DA0-DA2 mit 10011 beschreiben, aber wie sage
ich ihm, welcher Sektor es sein soll?

Sencer
Gast #91361
Lesenswert?

Hier mal meine Schaltung, die einwandfreu am Datenbus läuft.

Um Sektoren zu adressieren verwendet man entweder LBA oder CHS.
Bei LBA werden alle Sektoren der Reihe nach gezählt, angefangen bei 0.
Bei CHS (Cylinder, Head, Sector) werden die Sektoren so adressoiert,
wie sie real in der Festplatte vorkommen.

Lad dir mal eine der älteren Datien von t13.org runterl, da ist das
alles genau erklärt:
Im Head Register kann man zwischen CHS und LBA umschalten. Ich würde
LBA verwenden, ist einfacher (wird ab etwa 400-800MB aufwärts
unterstützt).
Im Register Sector Count gibst du an, wieviele Sektoren gelesen werden
sollen (1-256, wobei 0=256). Dann schreibst du in die Sector Number,
CylinderLow, CylinderHigh und Heads Register eine 28bit lange Zahl, die
den Sektor adressiert. Nun noch den Lesebefehl ans Command Register und
dann kannst du 256x 16bit am DataRegister lesen.

Die Schaltung wandlet 16bit Werte in 2 8 bit Werte: Um einen 16bit Wert
zu lesen, liest man erst das LowByte aus dem Dataregister (Adresse 0)
und dann das HighByte aus dem Latch (Adresse 9)
Angehängte Dateien:
Gast #91362
Lesenswert?

Ja, aber wie sage ich der Festplatte z.B. dass er Zylinder 100 ansteuern
soll?
Wenn ich jetzt den Wert für die Zylinder in den Register schreibe, wo
soll ich die Zylindernummer reinschreiben?
Danke.
Gast #91364
Lesenswert?

Ja, dazu muss ich auf den Kommandoblock 10100 schreiben um den
Zylinderblock-register 0 anzuwählen!
Aber wo schreibe ich jetzt den Zylinderwert(100) rein?
Etwa in DD0-DD15 oder was?
Danke.
Gast #91365
Lesenswert?

Wieso machst du die Datentransfers per Software ? Unterstützt der AVR
keinen Daten/Adressbus ???
Mit dem Adress/Datenbus hast du schon eine Fehlerquelle ausgeschlossen,
da du dann nicht nie unterste Low-Level Ebene programmieren musst.
Gast #91366
Lesenswert?

Jetzt verstehe ich nichts mehr!
Könntest du mir bitte eine art stichwortliste schreiben, auf welchen
register ich zugreifen muss,welchen Pin ich ansteuern muss um auf die
Festplatte einen Wert zu schreiben?
Bitte Bitte.
Gast #91367
Lesenswert?

Ich muss sagen ich finde den Thread ziemlich amüsant.
Ich bin zwar selbst noch Anfänger was uC angeht, aber das hier finde
ich einfach zu gut...

@Sencer: was hast du egtl. schon mit deinem Conrtoller gemacht?
Gast #91368
Lesenswert?

Naja, einfach IO-Port angesteuert, ADC, Timer und das war eigentlich.
Aber der µController ist ja nicht das Problem, sondern die Festplatte.
Wenn ich wüsste wie ich auf die Register der festplatte zugreifen kann,
dann würde ich das auch hinkriegen!
Gast #91369
Lesenswert?

hi sencer,

auf der seite http://www.inf.hs-zigr.de/~boehm/rt001/Modsching/ hat es
unter 2.5 auch ein bildchen. Es ist eine Tabelle mit den Adressen zu
den Registern. Dort steht welche pins für welche adressen high/low sein
müssen usw. Dann einfach noch daten anlegen und schreiben. achtung:
reset, cs0, cs1, wr und  rd sind low aktiv. Es gibt noch mehr low
aktive Leitungen, aber die sind auf der oben genannten seite ja auch
gekennzeichent(mit einem fetten strich über der signalbezeichnung)

MFG Nik
Gast #91370
Lesenswert?

Das ist sehr gut, wenn ich jetzt einen register makiert habe!
z. B. denn Sektornummernregister(10011), muss ich dann die Sektornummer
in DD0-DD7 schreiben und dann muss ich nacheinander den
ZylinderRegister und dann den Laufwerksregister ansteuern und dann in
dem ich an DIOW auf masse schalte, müsste ich eigentlich ein 8Bit
Datenwort über DD0-DD7 auf die Festplatte schreiben können, oder?
Gast #91371
Lesenswert?

@Benedikt - Beitrag Datum: 31.05.2004 07:33 - Betreff: Festplatte
Pinbelegung - Dateianhang: IDE.gif (25.7kB, 74 Downloads)

Ich versuch mich grad mit 'ner gescheiten Verkabelung zwischen
Mikrocontroller und ATmega128. Das ganze via Adress- und Datenbus zu
bewerkstelligen, halte ich für geschickt - wenn's denn geht. Den
Schaltplan aus obigem Beitrag versteh ich aber nicht so recht. Was ist
mit /CS1 passiert? /CS1 fest auf 5V kann ja wohl nicht stimmen. Wie
soll  denn der Ablauf der Kommunikation bei der Verdrahtung erfolgen?
Hab den noch nicht ganz ausgeräumten Eindruck, dass in bestimmten
Konstellationen es zum Datenkonflikt kommen kann.

Im Forum hier wird ja viel erzählt, dass das ganze Vorhaben soooo
einfach ist. Nur, wenn's konkret wird, schweigen sich hier viele stark
aus. Konkrete Tipps und Erfahrungen wären hier schön. Bei den (älteren)
MP3-Player-Projekten im Netz wird häufig mit GALs gearbeitet, mit denen
ich mich eher nicht befassen möchte.

Mein Vorhaben wird ausnahmsweise kein MP3-Player sondern ein
Datenlogger für ca. 10GB werden.
Gast #91372
Lesenswert?

Mit /CS1 wird auf die control block registers zugegriffen und die
braucht man i. d. R. nicht und von daher kann man /CS1 auf High legen.
Siehe hierzu auch die ATA-Spezifikation (z. B. ATA-3 Rev. 7b, Tabelle
6).

Gruß
Thorsten
Gast #91373
Lesenswert?

Ok, aber das Device-Conrol-Register und sein Interruptflag könnte
vielleicht interesant sein/werden. Aber das ist letztlich nur ein
Randdetail.
Ich versteh bis jetzt nicht, ob und wie obige Schaltung genau
funktionieren soll. Funktioniert sie wirklich für 16 Bit lesen und
schreiben? Wie ist das dann mit der Adressierung?
Gast #91374
Lesenswert?

Die Adressen 0-7 adressieren ganz normal die Festplattenregister 0-7.
Zusätzlich wird bei jedem Lesezugriff das High Byte der Festplatte
gespeichert und kann durch einen Lesezugriff von Adresse 9 gelesen
werden.
Für Schreiben gilt dasselbe: Bei jedem 8bit Schreibzugriff wird der
Festplatte auch das gespeicherte High Byte angeboten. Dieses muss zuvor
an Adresse 8 geschrieben werden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren