ATA-Harddisk

Gast #18031
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
Gast #18034
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.
Gast #18036
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
Gast #18039
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

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