Forum: Mikrocontroller und Digitale Elektronik ATA-Harddisk


von FaB (Gast)


Lesenswert?

hallo,

hat jemand erfahrung mit der ansteuerung von ata-harrdisks???
hätte jemand ne idee für ein simples progrämmchen zum testen
ob die kommunikation zwischen hd und avr überhaupt funktioniert.
also ich hab schon sicher 100 seiten durchgelesen und schon
paarmal ausprobiert, bin aber leider noch zu keinem erfolg
gekommen.
ich hab zuerst immer ein hardware reset gemacht danach ein
software reset (hab ich von einem anderen file abgeschrieben,
hab aber noch keine anleitung dafür gefunden) danach wollte
ich statusinformationen lesen...jedoch erhalte ich immer das
gleiche am eingang des avrs :-S
wäre nett wenn mir jemand helfen könnte.

gruss fab

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?


von hebel23 (Gast)


Lesenswert?

Der Link scheint nicht mehr zu funktionieren...

von Rainer (Gast)


Lesenswert?

Resets usw kannst du dir eigentlich sparen, erfahrungsgemäß reichts 
absolut, einfach darauf zu warten, dass die Disk ready ist 
(RDY/BSY-Flag) und dann einfach zB ein Read oder ein Identify-Command zu 
schicken.
Hier gibts jede Menge Infos zu dem Thema: 
http://www.mp3projects.com/docs.html, eine durchgehende Beschreibung, 
die das eigentlcih alles für eine rundlegende Ansteuerung enthhält gibts 
hier: http://www.mp3projects.com/digital/chimp/bins/ide-8255.zip.
Ich hab auch eine Platte, ber der ich nur 0xFF zurückbekomm, egal, was 
ich ihr sende - die funzt aber auch am PC nicht mehr richtig. Zwei 
andere Platten lassen sich problemlos ansteuern, mehr hab ich noch nicht 
probiert.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Der Link geht wieder.

von Fabian (Gast)


Lesenswert?

Hallo zusammen!

Endlich hab ichs geschafft. Die ansteuerung der harddisk funktioniert 
schon ein bisschen :-). Es ist mir jetzt möglich etwas anständiges aus 
den registern zu lesen. Die Register stehen nach dem hardware-reset wie 
in der ATA-Dokumentation beschrieben, nur das Status-Register bleibt auf 
0 auch noch 1 minute nach dem reset! Und ohne status register läuft 
nicht sehr viel! muss ich da noch irgendein initialize befehl oder so 
ausführen? mindestens das DRDY bit sollte doch auf 1 sein?
Ich hab die HD auf primary gejumpt, also sollte sie doch "antworten" 
wenn ich device 0 adressiere. dies ist jedoch gerade umgekehrt. bei 
adressierung von device 1 reagiert die primary gejumpte und bei 
adressierung von device 0 die auf secondary gejumpte!

kann mir echt jemand helfen :-)!?!?
danke schon im voraus!!!

fabian

von Sascha Weitkunat (Gast)


Lesenswert?


von Matthias (Gast)


Lesenswert?

Hi

Hast du evtl. CS1 und CS0 verwechselt? Ist mir am Anfang auch so 
gegangen.

Matthias

von Fabian (Gast)


Lesenswert?

Hallo!

Nein CS1 und CS0 sind hab ich wirklich nicht verwechselt und DA0 - DA2 
hab ich auch nicht vertauscht!
Mein Problem ist immer noch, dass die HD (auf primary gejumpt) nur 
antwortet wenn ich device 1 anspreche. aber primary ist doch eigentlich 
device 0, oder nicht?
hier ein auszug aus den registern nach dem hard reset und device anwahl:

### hier wird device 1 angesprochen
...ctrl...
.ctr... 1       0
.ctr... 2       0
.ctr... 3       0
.ctr... 4       0
.ctr... 5       0
.ctr... 6       0
.ctr... 7       125
...cmd...
.cmd... 1       0
.cmd... 2       1
.cmd... 3       1
.cmd... 4       0
.cmd... 5       0
.cmd... 6       176
.cmd... 7       0

### hier nochmals das gleiche aber device 0 wird angesprochen!
...ctrl...
.ctr... 1       0
.ctr... 2       0
.ctr... 3       0
.ctr... 4       0
.ctr... 5       0
.ctr... 6       128
.ctr... 7       126
...cmd...
.cmd... 1       128
.cmd... 2       128
.cmd... 3       128
.cmd... 4       128
.cmd... 5       128
.cmd... 6       128
.cmd... 7       128

und jetzt nochmals ein problem:
wenn die device nicht angesprochen wird, so müsste sie doch tri state 
output haben, oder etwa nicht? also offene eingänge hab ich nicht, denn 
ich hab an der datenleitung extra ein pull down print angeschlossen!

hat jemand noch ne idee???
dieses zeux bereitet mir schlaflose nächte :->

danke!

gruss fabian

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.