mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATA-Harddisk


Autor: FaB (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: hebel23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Link scheint nicht mehr zu funktionieren...

Autor: Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Link geht wieder.

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sascha Weitkunat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

Matthias

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.