Hallo, weiss jemand die Pinbelegung der IDE-Festplatten? Und wie könnte ich am einfachsten auf diese mit einem Mikrocontroller zugreifen? Danke schön. Mit freundlichen Grüßen Sencer Soylu
Hi, besorg dir die ATA-Specs und lies sie. Danach benutz noch google. Gruß Tobias
Meistens sind die Pins mit Gold belegt. Zugreifen kannst Du am besten, wenn Du die Beinchen in Form eines Greifers biegst und dann auf die Platte zugreifst.
noch eine Möglichkeit: Bau an den µC eine Baggerschaufel... damit lässt es sich ziemlich gut greifen...
Das mit den anschlüssen ist kein problem! Ich habe jetzt den aufbau der IDE-Pins im Internet gefunden komme aber nicht weiter! Auf der Seite http://www.hardware-bastelkiste.de/ide.html sind die pinbelegungen! Kann mir jemand bitte sagen, wie ich jetzt auf die Festplatte schreibe und lese? Ich weiss leider nicht, was die einzelnen Pins machen! Danke schön.
Nimm einen Edding, das funktioniert am besten. Aber zur Sicherheit nur auf das Gehäuse schreiben!
@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.
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.
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.
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
> 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
Danke, habe auch unter google die Beschreibeung jedes einzelnen Pins gefunden! Hoffentlich kann ich damit was anfangen!?
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.
Auf die Seite kann man nicht zugreifen, bin nicht dumm auch nicht faul!!!!
muss zu dumm sein, wenn man den link anklickt gehts tatsächlich nicht. Wenn man ihn aber abtippt...
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.
Wenn du Probleme mit Englisch hast, hast du dir echt das falsche Hobby ausgesucht.. 99,9% aller Datenblätter sind auf Englisch.
Ich weiss, scheiße ne Aber die Elektrotechnik ist mein Herz und Leben!!! Ausserdem bin ich doch noch so Jung, dass lerne ich auch noch:)
> Zu dumm oder zu faul zum lesen ???
Naja, mit 15 hab ich mir auch noch nicht die ATA-3 Spec. reingezogen.
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?
hehe, stimmt das mit 15?-Ich bin nämlich auch erst 14..bal 15:) ich versuch gerade eine SD Karte anzusteuern, klappt aber leider nicht so wie es soll..siehe http://www.mikrocontroller.net/forum/read-1-88411.html MFG Nik
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...
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
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)
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.
Versteh ich nicht ganz. Wenn du Zylinder 100 lesen willst, schreibst du 100 in CylinderLow und 0 in CylinderHigh...
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.
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.
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.
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?
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!
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
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?
@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.
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
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.