Hallo! Den einzigen KOntroller den ich bei mir zu HAuse noch rumliegen hab ist ein alter pic16f84..und eben eine Festplatte. Da dachte ich mir das ich da evtl. eine ansteuerung basteln könnte. Ich hab das Datenblatt zur Ansteurung durchgelesen, und bin zum Schluss gekommen das: -Ich ohne die Festplatte in den 8-Bit Modus umzuschalten, diese 8-Bittrig betreiben kann. Denn alle Register, ausser das Datenregister sind eben 8-bittrig. Und vorerst intressiert mich ein fat Dateisystem noch nicht, also benötige ich die restlichen 8-Datenbits auch gar nicht. Oder doch? Wenn ja, für was? Ich möchte zum Test einfach mal(im LBA Modus) einen Sektor auslesen. Muss ich da noch was anderes tun, als zuerst die benötigten bits in die entsrechenden Register zu schreiben(LBA-Adresse), dazu natürlich noch die Adresse an cs0, cs1, ad0,ad1,ad2 einstellen; und danach das Datenregister auslesen? -ich würde das ganze, nur mal zum Test, so langsam machen, das ich das Busy bit(hächstwahrscheinlich gar nicht auslesen muss. -Meint ihr man kann das mit einem solch kleinem Controller(1kbyte prog speicher, 13 i/o pins) hin kriegen?-Würd mich mal interessieren eure Meinung zu hören, aber ich denke, es müsste Funktionieren... MFG Nik
Die Read/Write-Leitungen darfst Du nicht vergessen. Mit 13 i/o-Pins wird das nicht mehr reichen, wenn Du nicht z.B. die drei Adressleitungen zusammenfasst. Die 16Bit Daten kannst Du aber auch mit einem 8Bit-Port lesen, wenn Du zwei Latches (für jede Datenrichtung eines) einsetzt. Aber nur 8Bit ist natürlich auch OK, wenn Du Hälfte der Kapazität nicht unbedingt benötigst.
Das sollte theoretisch gehen. Normalerweise kannst Du auch für -CS1 das invertierte Signal von -CS0 nehmen; noch eine Leitung gespart. Soweit ich das noch auswendig weiß, müssen beide Signale nie gleichzeitig 0 oder 1 sein. Bei mir haut es so hin. Allerdings brauchst Du dann immer noch 8 (Daten) + 6 (Adresse) = 14 Pins... vielleicht nimmst Du doch einen größeren Controller.
Danke an Euch. Ich dachte mir das es gehen muss. Das mit dem kleinen Kontroller ist eigentlich nur zum Test, wenn ich s' hinkrieg kauf ich mir schon nen atmega oder so. Die adressen werd ich wahrscheinlich irgendwie multiplexen zum beisplel ein schieberegister an die adr-pins. zudem werde ich z.B. das error reg. nicht benötigen, wenns nen fehler gibt, muss ich nicht unbedingt wissen, welchen genau. So kann ich sicherlich auch noch pins sparen können. MFG Nik P.S. noch so nebenbei: in welchem register steht wieviele sektoren die Festplatte hat und welche Beizeichnung/Hersteller? Oder steht das auf der Platte selbst?
Ach, ich hab noch was vergessen: Werden die Daten bei einem low/high oder high/low übergang übernommen/ausgegeben? Oder ist das unterschiedlich? Nik
Am besten ziehst Du Dir mal die ATA/ATAPI-Spec. Da steht das alles ausführlich drin. Das brauchst Du eh zum Programmieren.
Die Daten kann man der Platte mit einem Kommando entlocken. Müsste Identify Device (0xec) sein. In den Datenregistern bekommst Du dann zig Bytes geliefert mit Infos zu Modell, Seriennummer, physikalischen/logischen Eigenschaften etc. Aber die ATA-Specs sind wirklich unverzichtbar. Das stehen alle Kommandos und deren Rückmeldungen drin.
Ok, ich dachte ich komm mit dem Elektor Beitrag 3/01 und mehreren (deutschen) Homepages aus. Doch welche Spec soll ich downloaden?www.t13.org hat gleich etwa 8. ;-) @jens Wie weiss man dann, das die infos fertig sind; irgendwie muss man ja erkennen wann man nicht mehr weiter lesen soll. MFG Nik
@Nik: Lese erst mal die IDE und ATA spezificationen, da steht alles drin. Grüße Mark,
Hallo Nik ich interessiere mich sehr für dieses Thema. Welche spezifikationen kannst du mir weiterempfehlen (ATA version ???)? Besten Dank! Grüsse peter
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.