www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT90S8515 und IDE


Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo beisammen,

ich versuche verzweifelt, einen 8515 als IDE-Controller zu
programmieren (per BasCOM und Proteus). Schreiben funktioniert ganz
gut, nur lesen funktioniert nicht so, wie es soll. Das Problem muss
grundlegender Natur sein, denn das Leseproblem geht schon los, wenn ich
nur versuche, die Plattendaten auszulesen (mit 0xEC)

Ich hab der Einfachheit halber auf die Abfrage des Statusregisters
verzichtet und dafür ziemlich lange Delays eingebaut (100 ms nach jedem
Befehl).

Anschluss:

AD0 an PC0
AD1 an PC1
AD2 an PC2
CS0 an PC3
CS1 an PC4 (in Proteus CD3)
WR über 4009 an PC5
RD über 4009 an PC6

Daten 0-7 über PortB, auf 8-15 vorläufig verzichtet, will nur sehen, ob
überhaupt was zurückkommt.

So. Takt 1 MHz.

Halbe Sekunde warten, portb auf Ausgang, Cs0 = 0 : Cs1 = 1 : A2 = 1 :
A1 = 1 : A0 = 0, portb =236 (für 0xec),wr=1, 100 ms warten, Wr=0, 100
ms warten, portb löschen + auf eingang.

Die 100 ms müssten eigenlich locker reichen.

Dann Cs0 = 0 : Cs1 = 1 : A2 = 0 : A1 = 0 : A0 = 0, Datenkanal öffnen.
Da fange ich schon an zu zweifeln, denn ich weiss nicht, ob ich dieses
Kommando mit einem Write-Signal bestätigen muss, hab´s aber auch schon
mit Write probiert, bringt nix.

Meine Theorie:
Datenkanal öffnen, RD auf 1: Daten von Portb holen, rd=0, 255 mal
ausführen.

Meine Frage: Ist es so richtig oder wenn nicht, spielt in dem Fall
evtl. IOReady von der Platte eine gewisse Rolle (muss der Controller
über diese Leitung einen Impuls abliefern, wenn er Daten lesen will?)
und wenn -ja-, wann muss dann /RD gesetzt werden?

Bis jetzt schaltet die Platte nach dem öffnen des Datenkanals
-anscheinend- nicht auf Ausgang, was sie wohl nach dem 0xEC-Kommando
tut, aber dennoch keine Daten liefert...

Schreibzugriffe funktionieren wunderbar, folgedessen kann an CS0 und
CS1 kein Inverter fehlen (wie in Faasee´s Dokumentation angegeben),
ansonsten würde die Befehlsausführung beim Schreiben auch nicht
funktionieren.....

Wäre nett wenn mir jemand weiterhelfen könnte, irgendwie komme ich
nicht weiter....


Grüsse

Stefan

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut, zumindest das Auslesen der Plattendaten über 0xEC funktioniert bis
jetzt; beim Sektorlesen das selbe in Grün: Nach erfolgtem Setzen von
CHS=>Kommando 0x21, DRQ prüfen, öffnen des Datenkanals, Read=1,Daten
auslesen (übertragener Wert=0), RD=0, wieder DRQ überprüfen=> nicht
gesetzt, dann Error-Register ausgelesen, kommt 0x41 als Fehler zurück=
u.a. "Adress Mark not found".....

Was kann das nur sein...?!

:-/

Gruß

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.