Již mnoho mých přátel přišlo s nápadem využít starší nebo i novou mechaniku CD ROM, určenou pro počítače PC, jako druhý přehrávač zvukových CD. Jistě, nová CD ROM dnes stojí okolo 1700 Kč a navíc skoro každý má nějakou starší mechaniku, která již nevyhovuje svou rychlostí. Použitá mechanika CD ROM musí být ATAPI IDE, nelze tedy použít starší výrobky, které měly vlastní řadič.
Provedení
Blokové schema zapojení je na obrázku 1. Zapojení není složité, veškerá „chytrost“ je uložena v programu.
Blokové schema zapojení ovladače CD ROM
Celý ovladač je řízen 8-bitovým procesorem AT89C2051. Ten zajišťuje snímání tlačítek, zobrazování na dvoumístném displeji a hlavně komunikaci s mechanikou CD ROM přes rozhraní ATAPI. Protože to je vždy 16-bitové (i takzvaný 32-bitový přístup na disk je ve skutečnosti 16-bitový), jsou vřazeny do cesty ještě registry, které převádějí 8 bitů na 16 a zpět.
Funkce ovladače jsou PŘEHRÁVÁNÍ, STOP, SKOK VPŘED, SKOK VZAD, ZASTAVENÍ (pause), OPAKOVÁNÍ celého CD nebo jedné skladby a vysouvání/ zasouvání mechaniky. Není problémem naprogramovat i jiné funkce podle různých použití přehrávače, tyto jsou však univerzální. Na displeji je po vložení CD zobrazen celkový počet skladeb a při přehrávání číslo aktuální skaldby. Při funkci krátkodobého zastavení displej bliká, při nastavování opakování ukáže nakrátko zvolený režim.
Ovladač má rozměry shodné s předním panelem CD ROM (40x147 mm) a tvoří s displejem a tlačítky jeden celek.
Je třeba upozornit na to, že některé velmi levné mechaniky přehrávají v audio režimu pouze každý druhý vzorek signálu a mají proto akustické pásmo omezeno na 10 kHz, což je k popisované aplikaci nevhodné.
Řídící program
CD-ROM zařízení připojovaná na rozhranní IDE komunikují s řadičem pomocí protokolu ATAPI (AT Attachment Packet Interface). Specifikaci tohoto protokolu lze najít v normě SSF. ATAPI protokol vznikl rozšířením již existujícího protokolu ATA (AT Attachment), který se používá především pro obsluhu pevných disků a je definovaný v normách Technical Committee T13. ATA muselo být pro účely CDROM zařízení rozšířena, protože ATA registry (task file register) neposkytovaly dostatek bytů pro přenos všech informací mezi řadičem a CDROM. Do ATA byla především přidána instrukce ATAPI Packet Command. Většina komunikace a přenosu dat pro ATAPI zařízení se pak děje pomocí paketového přenosu.
Některé vlastnosti tohot paketového přenosu byly převzaty z protokolu SCSI. Každé ATAPI zařízení však kromě paketových příkazů, musí také umět zacházet s ATA registry a musí ovládat i některé ATA příkazy. Pomocí ATA registrů se například posílají data, hlavně paketové příkazy, provádí se inicializace ATAPI zařízení a jsou zde hrubé informace o stavu CDROM (zda pracuje, chce-li další data, zda došlo k chybě atd.). Podrobnější informace se však předávají pomocí paketů. Například údaj o přesném čísle chyby, o stavu přehrávání, hrané skladbě, formátu dat atd. Příkazy ATA jsou osmibitové. Paketový přenos je však realizován 16 bitově. Každý paketový příkaz má vždy 12 bytů, a je tedy přenášeno 6 slov.
Pro přenesení jakéhokoliv ATAPI paketového příkazu, je tedy nutné nejprve poslat ATA instrukci ATAPI Packet Command. Jakmile je ATAPI zařízení připraveno k přenosu, nastaví příslušné bity v status registru (jeden z ATA Task File registrů). Nyní se posílá celý paket. Prvním bytem je vždy operační kód ATAPI instrukce. Následujích jedenáct bytů je individuálních pro každý příkaz a obsahuje další data pro zpřesnění příkazu. Např. zda se mají dveře otevřít či zavřít nebo od jaké adresy do jaké se mají číst data. U příkazů, která vracejí data, se ješte musí v paketu určit kolik bytů se bude přenášet.
Program audio panelu pak funguje následovně. Po inicializaci ATA Task File registrů se zkouší načítat TOC (Table Of Contents). Tato tzv. tabulka se nachází v tzv. podkanálových datech, uložené mimo prostor pro uživatelská data. Z TOC se kromě jiného dá zjistit číslo prvního a posledního tracku na kompaktním disku (v případě audia se jedná o skladby) a také počáteční adresa tracku, jehož číslo bylo zadáno v paketovém příkazu READ TOC. Jakmile je TOC úspěšne načteno, znamená to, že je uvnitř čitelný CD disk. Z TOC se tedy zjistí počet skladeb a adresa konce CD disku. Konec se zjistí jako adresa lead-out tracku, což je poslední track na disku, který již ale nenese uživatelská data. Zároveň s pokusy o načtení TOC se testuje stav klávesnice. Jakmile je stisknuto PLAY, pošle se CDROM zařízení paketový příkaz PLAY AUDIO se startovní adresou příslušného tracku a koncovnou adresou konce CD disku. CDROM mechanika pak začne automaticky přehrávat skladby (jsou-li to audio tracky). Aby byl audio panel v obraze co se hraje, čte se během přehrávání podkanálová informace (příkazem READ SUB-CHANNEL), z které je možné zjistit stav činnosti CDROM mechaniky a číslo přávě hraného tracku.
Podle těchto informací audio panel akutalizuje údaj na displeji o čísle přehrávané skladby a je i informován, pokud by bylo přehrávání zastaveno přímo na panelu CDROM mechaniky. V případě stisku klávesy PAUSE, je vyslán paket příkazu PLAY/RESUME. Tato instrukce umožňuje zastavit přehrávání a poté ho zpustit ze stejného místa. V případě stisku PLUS nebo MINUS klávesy se nejprve načte TOC odpovídajícího tracku a pak se provede PLAY AUDIO se správně nastavenou počáteční adresou. Funkce REPLAY umožňuje přehrávat cyklicky buď jednu skladbu (mód 1) nebo celý CD disk (mód 2). V programu se tedy kontroluje jaký track je přehráván a jestliže se začne přehrávat následující, je provedena znovu sekvence PLAY AUDIO s opakovaným trackem. Pro opakování CD disku se ověřuje zda již nedošlo přehrávání na konec CD disku. Při stisku poslední klávesy STOP/EJECT, se nejprve ověří stav přehrávání, a pokud je je přávě přehráváno audio, je provedena instrukce STOP PLAY/SCAN CDROM, která ho zastaví. V případě, že CDROM nehraje je zjištěn stav dvířek. Podle toho se provede instrukce START/STOP UNIT s nastavenými bity v paketu buď pro eject nebo load.
Problémem CDROM mechanik není ani tak vytvoření programu pro jeho ovládání, ale vytvoření programu, který by fungoval univerzálně na všech. Přestože by měly všechny mechaniky splňovat normu (měly by umět alespoň povinnou skupinu instrukcí), jsou problémy s komunikací u CDROM zařízení některých výrobců. Kamenem úrazu je vždy počáteční inicializace, která se musí u některých mechanik provést velice zvláštním způsobem.
Testované CD ROM mechaniky :
Značka | Rychlost | Model |
Lite-on | 32x | LTN-301 |
Lite-on | 24x | LTN-242 |
BTC | 24x | BCD 24x |
BTC | 16x | BCD 16xA |
Samsung | 12x | SCR-1231 |
Acer | 24x | 624A105 |
Mitsumi | 8x | ? |
Hitachi | ?x | CDR 7730 |
Teac | 32x | CD-532E |
OTI SCYLLA | 4x | CD-IS201 |
Nefunkční CDROM mechaniky :
Mitsumi 4x komunikuje, ale nedokáže vrátit jakákoliv požadovaná data, nezahlásí chybu, ale ani nežádá přenos dalších dat, je vyrobena v roce 1995 a norma je z roku 1996.
Mitsumi 8x a rychlejší fungují.
Matsushita ?x nekomunikuje vůbec. Nedokáže zapsat ani do ATA registrů, na vše vrací FFH. Hardwarově je ale vše v pořádku. Pravděpodobně velmi nestandardní úvodní testovací sekvenci.
ODKAZY
- Vyrobila a nadále dodává firma PaPouch : www.PaPouch.com