ATAPI Status Register

Gast #158649
Lesenswert?
• ▲
▼
Hallo, ich habe folgendes Problem,

ich versuche mit einem MEGA8 ein CD/DVD Laufwerk anzusteuern.
Laut ATAPI Protokoll sollte mit
/CS0 = 1  /CS1 = 0 DA2 = 1 DA1 = 1 DA0 = 1
und mit
/DIOW =1 und DIOR=1
das Statusregister ausgegeben werden.
Stattdessen, zieht das ATAPI LAufwerk die Pins DD0-DD15
so "halb hoch" das heisst die LEDs die ich daran angeschlossen haben
glimmen leicht.

Ich bastel da jetzt schon seit Tagen dran rum und komme irgendwie nicht
weiter. Hat vielleicht jemand einen Tip ?

Vielleicht kann mir auch jemand sagen was ich mit DMACK und CSEL machen
soll ?
Auf Masse legen ?
Gast #158650
Lesenswert?
• ▲
▼
Hast du die Led's ohne Treiber IC's angeschlossen ?.
Der avr hat ja interne Pull-Ups wenn du die Ports als eingang benutzt
werden. Die sind auch dringend nötig. Vielleicht schickt das Atapi gar
nichts auf die Reise, und der AVR ist der treibende Punkt. Das könnte
auch das glimmen der LED's erklären. Unbedingt treiber zwischen AVR
und LED's setzen. Für sowas ist HC573 oder HCT573 bestens geeignet.
Gast #158651
Lesenswert?
• ▲
▼
@tobi
DD0-DD15 (und somit auch die LEDs)habe ich über 2 Latches 74LS374
angeschlossen, da ich etwas knapp an I/Os bin.
Das "glimmen" kommt eindeutig vom Laufwerk. Es glimmt auch wenn ich
die Latch IC herausziehe.
Und warum brauche ich die Pull-Ups ?
Sind die Datenleitungen etwa auch LOW-aktiv ?
Hast du schon mal ein ATA bzw. ATAPI Laufwerk angesteuert ?
Falls Ja, könntest du mir etwas zur Beschaltung sagen ? Vielleicht habe
ich da ja was übersehen.
Gast #158652
Lesenswert?
• ▲
▼
> /CS0 = 1 /CS1 = 0 DA2 = 1 DA1 = 1 DA0 = 1

Dieses Register ist historisch bedingt sowohl mit dem
Harddisk-Controller als auch mit dem Floppy-Controller verbandelt. Als
sich später diese beiden Controller voneinander trennten wurde es
folglich etwas schwierig damit. Da es andererseits auch ganz gut ohne
geht:  einfach nicht benutzen.
Gast #158653
Lesenswert?
• ▲
▼
@AK

Stimmt schon. Da habe ich mich vertan.
Aber mit

/CS0 = 0  /CS1 = 1 DA2 = 1 DA1 = 1 DA0 = 1 (Kommando/Status)

ist es das selbe. Ebenso mit

/CS0 = 0  /CS1 = 1 DA2 = 0 DA1 = 0 DA0 = 0 (Daten)

Überall nur dieses Glimmen.
Ist der Ansatz zum Lesen /DIOW = 1 und DIOR = 1 (1 = 5V, 0 = 0V)
und zum schreiben /DIOW = 0 und DIOR = 0 korrekt ?
Gast #158654
Lesenswert?
• ▲
▼
Die Bezeichnungen /DIOR und /DIOW habe ich so noch nicht gesehen,
mangels Alternativen nehme ich jedoch an, dass es diejenigen sind, die
ich als /IOR und /IOW kenne.

Und dann kann das so natürlich nichts werden. Denn /IOR steuert den
Lesezyklus (/IOR=0 /IOW=1) und /IOW den Schreibzyklus (/IOR=1 /IOW=1).
Bei /IOR=1 /IOW=1 passiert also garnichts und /IOR=0 /IOW=0 ist Unfug.
Gast #158656
Lesenswert?
• ▲
▼
Uff ! Das weicht doch stark von meiner Doku ab. Ich probier das gleich
mal aus. Kannst du mir evtl. noch mal für anderen Leitungen
(Adressleitungen usw.) schreiben welche /LOW-Aktiv und welche HIGH
aktiv sind ?
Gast #158658
Lesenswert?
• ▲
▼
Yep, ich sehe das Missverständnis. In dem FAQ ist das etwas irreführend
beschrieben. Such mal eine Beschreibung vom ISA-Bus bzw. PC104-Bus, das
sind die gleichen Signale.

IOR und IOW sind Strobe-Signale, active-low. Anno PC/AT sah das mal
ungefähr so aus:

Ruhezustand: IOR=1 IOW=1

Lesezyklus:
- Adressen, CS etc anlegen
- IOR=0
- 0,5µsec warten
- Daten abholen
- IOR=1

Schreibzyklus:
- Adressen, CS etc anlegen
- IOW=0
- Daten anlegen (kann man auch schon vor IOW)
- 0,5µsec warten
- IOW=1

Bei Blocktransfers ist das Timing enger. Dazu ist dann aber die
passende ATAPI-Referenz notwendig.
Gast #158660
Lesenswert?
• ▲
▼
@AK
Erst mal Danke ! Du hattest den entscheidenden Hinweis.
In Meiner Doku stand DIOR statt /DIOR.
Jetzt kann ich schon mal das Status-Register auslesen.
Es kommen aber bestimmt noch mehr Fragen !

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.