Hallo zusammen!
Ich bastel gerade (auch) an einem CD-Player mit einem normalen IDE
DVD-Laufwerk. Ein CD-ROM tät es ja auch, aber in meiner Schublade fand
sich nur ein DVD-Laufwerk! Von der Schnittstelle her unterstützen ja
beide die ATAPI Befehle.
Ich habe es auch schon soweit am Laufen, dass ich mittels Controller das
Laufwerk öffnen, schließen und auch die Wiedergabe starten bzw. stoppen
kann.
Ich habe allerdings das gleiche Problem wie schon im hier bekannt wurde:
Beitrag "CD Laufwerk: packet command" (Post ist älter als 6 Monate,
daher kam der Hinweis "neuen Beitrag erstellen").
Wenn ich ein Laufwerksreset mache, zeigt mir das Status-Register das
BSY-Bit als gesetzt an. Schreibe ich dann in das ATA-Laufwerksregister
und wähle das Master-Device aus (DVD-Laufwerk ist als Master gejumpert),
dann ist kein Bit im Statusregister gesetzt. Also auch das DRDY-Bit
nicht! Vermutlich, weil ja noch kein Befehl ausgeführt werden sollte.
Sende ich dann den ATAPI Befehl zum Öffnen des Laufwerks reagiert es
nicht, erst beim zweiten Mal senden Öffnet sich das Laufwerk. Dann
funktioniert es aber ohne Probleme. Es ist immer nur nach einem
Laufwerksreset, dass der erste Befehl quasi ins Leere geht.
Muss man nach einem Laufwerks-Reset eine spezielle Initialisierung des
Laufwerks vornehmen? Gibt's mittlerweile neue Erkenntnisse?
Hier nochmal meine Sequenz:
1 | 01 Drive Reset
|
2 | 02 Status REG: BSY
|
3 | 03 Delay: 2sec.
|
4 | 04 Drive Select: Master
|
5 | 05 Status REG:
|
6 | 06 ATAPI Cmd (0x1B...) // nichts passiert!
|
7 | 07 Status REG: DRDY DRQ
|
8 | 08 ATAPI Cmd (0x1B...) // Laufwerk öffnet sich!
|
9 | 09 Status REG: DRDY DSC DRQ
|
Gruß,
Sven