Forum: Mikrocontroller und Digitale Elektronik CD Laufwerk: packet command


von Benedikt (Gast)


Lesenswert?

Ich versuche ein CD Laufwerk mit einem AVR anzusteuern.
Dazu habe ich mir die ganzen Spezifikationen und auch einige
Beispielprogramme besorgt.
Self Diagnostic und IDENTIFY PACKET DEVICE funktionieren.
Wenn ich den PACKET COMMAND Befehl sende, erwartet das Laufwerk 12
Bytes (also 6 Words) ehe DRQ im Status Register gelöscht wird. Das
Laufwerk versteht also den PACKET COMMAND Befehl.
Das funktioniert alles auch soweit, aber nachdem ich die 6 Words
gesendet habe wird das ERROR Flag im Status Register gesetzt und DRQ
nie aktiviert.
Das passiert, egal welche Werte ich sende.
Das Error Register hat dann immer den Wert 0x50 oder 0x60 (je nachdem
welche Werte ich sende.)
Die Hardware und Low Level Routinen kann ich als Fehlerquelle
ausschließen, da ich diese aus einer anderen Schaltung (die
funktioniert hat) übernommen habe.
Die Daten kommen auch richtig an den Pins an.
Wenn ich das richtig verstanden habe, kommt das erste Byte des Packet
Commands an das Low Byte, das zweite ans High Byte usw.

Hat schon jemand sowas auf einem AVR (in C) gemacht und hat das zum
Laufen bekommen oder ähnliche Probleme gehabt ?

von Profi (Gast)


Lesenswert?

google
"self diagnostic" "identify packet device" "byte order"
z.B. gleich der erste von 57 Treffern:
http://www.t13.org/docs2004/d1532v2r4b-ATA-ATAPI-7.doc


Ist es ein ATA oder ein ATAPI device?

http://www.t13.org/docs2005/D1699r1f-ATA8-ACS.pdf :

4.4.1 Identification of PACKET Command feature set devices

When executing a power-on, hardware, DEVICE RESET, or software reset, a
device implementing the PACKET Command feature set shall perform the
same reset protocol as other devices, but leaves the registers with a
signature unique to PACKET Command feature set devices (See the
appropriate transport documentation for a details).
In addition, the IDENTIFY DEVICE command shall not be executed but
shall be command aborted and shall return a signature unique to devices
implementing the PACKET Command feature set. The IDENTIFY PACKET DEVICE
command is used by the host to get identifying parameter information
for a device implementing the PACKET Command feature set (See 787.17.5
and 7.18).

von Benedikt (Gast)


Lesenswert?

Das Laufwerk ist ein ATAPI device.
Die ganzen Infos bei Reset usw. lese ich aus. Da steht genau das drin
was ich erwarte (12 Byte packet command, removeable media, CDROM drive
usw.)
Die Daten kommen alle in der richtigen Reihenfolge auch richtig am
Laufwerk an, nur aus irgendeinem Grund wird immer das Error flag
gesetzt.
Bei fast jedem Befehl dreht das Laufwerk kurz hoch und liest von der
CD, der Befehl wird aber nie ausgeführt.

von Dennis Kleine-Beck (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

im Anhang mal ein seehr einfaches Bsp. Für OPEN, CLOSE, START, STOPP.
Das hat jedenfalls vor 6 Jahren mit nem AT90S8515 direkt verbunden an
ATAPI CD ROM funktioniert.
Bei Festplatten zeigte sich später, dass evtl. Bustreiber nötig sind,
um die Signale sauber zu halten.

Der 8515 lief damals mit 4MHz. Pinzuordnung steht im ASM-File.

Vielleicht hilft's ja...

Gruß,
Dennis

von commtel (Gast)


Lesenswert?

@  Benedikt oder andere

ich habe das gleiche problem vieleicht bist du oder andere weiter 
gekommen
bei dem error code 60 ich komm auch nicht weiter
1 cd rom laufwerk geht
2 andere dafür nicht immer fehler code 60

jemand ne idee?

von Benedikt K. (benedikt)


Lesenswert?

Ich habe das ganze aufgegeben, und spiele jetzt die Lieder von einen SD 
Karte ab ist flexibler, kleiner und braucht weniger Strom.

von commtel (Gast)


Lesenswert?

ja sd karte hab ich soweit unter kontrolle
auch festplatte geht mit den sectoren lesen
nur die cd will nicht ich hab kein plan woran es liegt
und vorallem warum funzt das eine cd laufwerk auf das commando eject
die anderen cd rom s sagen nur error sense key 60.
im status register steht 51 drin

ich werde mal später versuchen in das cd laufwerk das auf das commando 
eject reagiert ne cd einlegen und den stop befehl zu senden wenn das 
geht das gleiche in den anderen zwei probieren

von commtel (Gast)


Lesenswert?

http://www.8052.com/forum/read.phtml?id=116304

noch jemand der die probleme hat
komisch woran liegt das nur ich komm und komm nicht weiter

von commtel (Gast)


Lesenswert?

so leute ich glaub ich hab es endlich.
ich hab nach dem reset das disc eject kommando gesendet und da stand 
immer error drin.
Nun hab ich ein zweites mal das commando gesendet und die disc öffnet 
sich.
Warum auch immer es geht endlich

von Bernhard S. (bernhard)


Lesenswert?

@commtel

>Warum auch immer es geht endlich


Glückwunsch.

Vielleicht könntest Du dieses interessante Projekt mal veröffentlichen?

Bernhard

von commtel (Gast)


Lesenswert?

na projekt ist es keins bis her nur für testzwecke gedachte source
ich hab inzwischen zeit auch etwas andere source gefunden aber ich tue 
mich schwer mit C .
ich werd im laufe der woche die gefunde source übersetzen in assembler 
und dann auf jeden fall berichten.
Ich könnte miene scource veröffentlichen nur ist es assembler und das 
absoulte kaos im augenblick.
Wer trotzdem interesse hat soll hier schreiben ich werd versuchen die 
fragen zu beantworten soweit ich kann

von Markus (Gast)


Lesenswert?

Bist Du über die 51 im Statusregister mal hinweg gekommen? Ich habe das 
gleiche Problem, inzwischen einige 100 verschiedene Dokus durch, 
zahlreiche Beispiel Sources unter anderem yampp, MP3 Jukebox und Dokus 
von T13/T10 - no chance. Nach dem Packet Command bzw. den 6 Words 
bleibts beim abrt Fehler. Der zweite Aufruf wirft auch meine Schublade 
aus.

Markus

von Commtel (Gast)


Lesenswert?

Hallo Markus

nein leider nicht da ein anderes projekt dazwischen geruscht ist.
Werde aber so ende nächsten jahres die arbeit daran wieder aufnehmen.
Vieleicht findest du ja bis dahin mehr heraus als ich

good luck

Commtel

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.