Fórum témák
» Több friss téma |
HA nem bánja senki én megadtam a pontot ! Üdv, egyébbként PIC-hez C ben megírtam az IDE vezérlő rutinokat, de még nem lett kipróbázva, ahogy időm engedi megoldom azt is... Üdv.
Na egy érdekes dolog.
Nekem van egy kicsit régebbi 48X-es olvasóm. Nem volt rajta külső play gomb. Aztán nemrég pucolás céljából szétszedtem. És mit vettem észre... az előlap alatt a panelon 4 üres lyuk mikrokapcsolónak, de nem volt benne. Elmentem vettem egy mikrokapcsolót, beforrasztottam egy kicsit átalakítottam az előlapot, és máris tudom váltani a sávokat cdlejátszó program nélkül. Szerintem akinek play/next/stop elég, mielőtt picet venne, érdemes ezt megnézni. Egyszerű és olcsó megoldás, de mondjuk az előlapot el lehet szúrni, ha nem vigyázunk.
Grat, szép megoldás ! Szeretem a gondolkodókat !
Bravo!
Nem tudnál képet feltenni róla? Csupán a kíváncsiságomat kielégítendő...
Üdv, én most kezdtem a téma után keresgélni, ezért csak most írok. TEXAS MSP430 kontrollerhez szeretnék CD-ROM-ot illeszteni (kezdetnek egy audio CD lejátszó projekt ), ehhez az ATAPI szabványra volt szükségem, ha érdekel valakit, ez a
http://www.ccs.neu.edu/home/bchafy/cdb/info/info.html#scsi oldalon található SFF8020 (ATAPI) nevű .ps doksi kb. (4,5MB) Üdv.: HG
Közel 3 napja egy PC CD-ROM-al felépített CD lejátszón ügyködöm...
Atmel AVR (ATMega128) MC-t használok, és őszintén szólva nem sok eredményt produkáltam (max. annyit, hogy le tudom rezetelni ) Szóval egy kis segítség kéne... parancskódok, mit mi után lehet használni, stb. Köszönöm! szerk.: csak a teljesség kedvéért C-ben írok...
Esetleg, ha érdekel valakit a Paprika kolléga által belinkelt dokumentáció, a mellékletből letöltheti PDF formátumban.
Átkonvertáltam PDF-be, mert a PostScript kezelése kissé macerás volt (most láttam ilyet először )
Nézd csak, mit találtam, csatolom:
Köszi!
Neki is állok és darabokra szedem... a 8515 utasitáslistájával a kezemben
Végre kiderült mit hibáztam!!!
Jó volt a programom, de nem kötöttem földre a CSEL lábat és ettől bekattant. Működik a lemeztálca be/ki, play/stop, léptetés előre/hátra. Naggyonkirály... jöhet a TOC kiolvasása (összes track, aktuális track, össz idő, aktuális track idő). Aztán nem ártana egy PAUSE sem, no meg a CD text No meg az SPDIF... (erre várok ötleteket) Jelenleg egy ATMega8535-ön fut a progi, de rakom is vissza az eredetileg tervbe vett ATMega128-ra.
Slope kérésére a cím átírva.
Halihó mkinek!
Sikerült eljutnom odáig, hogy olvasom a TOC-ot... Azt viszont nem értem, hogy az összes track, perc és másodperc beolvasásakor, miért ír ki 3 másodperccel többet. Megnéztem több CD-t, PC-n és egy DiscMan-ben is, és a home made CD lejátszóm 3másodperccel többet mutat, minden más stimmel. Van valakinek valami ötlete?
Igen. Ha audio CD-ről beszélünk, akkor a következő lehet a probléma:
Mikor a Neroval megírsz egy audio cd-t, akkor a számok után automatikusan berak 2-3 mp szünetet. Ezt a funkciót viszont ki lehet kapcsolni! Csak át kell írni nullára! Írj egy ilyen cd-t, (természetesen ne egy számot tegyél rá), és utánna nézd meg, mit ír ki!
Akkor az 9 track esetén nem 3mp lenne, hanem 24mp.
Viszont a CDROM-os verzióm, a track-ek számától és a lemez fajtájától (gyári, írt, újraírt) függetlenül mindég 3mp-el hosszabbnak mutatja a lemezt. Majd ha a Sub-Channel-t is sikerül beolvasni kiderül kinek van igaza...
Jaaaah, bocsesz, nem figyeltem, azt hittem az egyes trackek idejét írja hosszabnak 3 mp-el.. Akkor viszont lövésem sincs!
Ismét levizsgázott az LG CD-ROM...
Jóideje görcsöltem az indítással és a lemezbetöltés utáni beolvasással. Az volt a gondom, hogy nem tudta a programom, hogy mikor végzett a meghajtó a beolvasással. Az ATAPI doksiban találtam is egy service módot, amin keresztül le lehetett kérni a SEEK-et. A szépséghiba csak az volt, hogy a SERVICE csak ajánlott parancs, és persze az LG nem támogatja. Második nekifutásra jött a REQUEST SENSE bekérése, ez el is kezd pörögni szépen, várva a NO SENSE állapotot (nincs hiba, ASC=02h-nál még beolvasás folyamatban). Szóval elkezdett futni egy ciklusban, de mire beolvasta volna a lemezt a CDROM kifagyott és semilyen utasítást nem fogadott el. Konkrétan a lemez felpörgetésekor fagyott meg. A vicc az, hogy találtam itthon egy (szintén LG) CD írót, és az mind a SERVICE, mind a REQUEST SENSE parancsot probléma nélkül lekezeli. Ja és a CD író a TOC-ot is hibátlanul beolvassa, nem téved 3mp-et, mint az olvasó.... Persze a CD író meg nem eszi a PLAY AUDIO MSF parancsot, hogy teljes legyen a boldogságom. Ezek után már csak az a kérdésem, hogy mi is az a kompatibilitás?! Na ezt hívják Life's Good-nak, hát inkább a kötél...
bolhapiacon vettem egy asztali dvd lejátszót, ha nem juttok vele sokra kell-e a cdje?
Bekapcsolom a tv-n nem jelenik meg semmi, a stb icket megnézem lehet, h azok megfőltek ha meg jók akkor nem tudom mi lehet vele üdv
köszi! azért annyira mazó még én sem vagyok
Hello Slope!
Esetleg el küldenéd a programod? Mert kicsit kétségékben vagyok parancsokkal kapcsolatban. Neten találtam pár kódot de mindegyiknél más más volt a parancs értéke. Megvan a CD-rom specifikáció de ott is van több parancs lista melyik működik frankón? Péter
Hello!
A programot nem fogom elküldeni, mert nem tehetem. Ettől függetlenül segítek ahol tudok... A specifikációban M-el (Mandatory) jelőlt parancsok minden meghajtónál működnek. Az O jelzésűek opciók, vagyis csak ajánlottak, azokat ki kell próbálni a kiszemelt meghajtón. Minden parancs előtt kell küldeni egy A0h-t (Packet Command). Ezt követi a 6 szóból álló utasítás, aminek első bájtja az utasításkód, a maradék 11bájt további beállításokra ad lehetőséget. A beírás 16bites, de tulajdonképpen két párhuzamosan küldött bájtról van szó (ezeket látod az Op Code listákban). A dokumentum elején találod a regiszter címzést, és a vezérlőregiszterek értékeit, és bitjeinek jelentéseit. Ezeket folyamatosan figyelni kell, mert ha egyszer megcsúszik a szinkron megette a fene, és a CDROM megfagy, meg ökörségeket csinál. Pl. egyszer lekértem a hibakódokat, erre a meghajtó lemez nélkül iszonyatosan felpörgött... már félelmetes hangja volt (52×-es... gyorsan lecsaptam a tápot). Egy másik próbálkozásnál meg kinyitottam a lemeztálcát de a tálcamozgató motor nem állt le, hanem a végállás jelzés ellenére erőlködött tovább. Várom konkrét kérdésedet, vagy ha nem megy esetleg adok egy kis ízelítőt, mondjuk a lemeztálca nyitogatásával
A talált kódokban nem volt 6 szavas izé.
Csak szimplán a parancsot küldt ki.És ennyi. Nem akarom magam szivatni. Ha csak a parancsot küldöm ki akkor nem csinál semmit? A tálca nyitogatás jól jönne, csak kiváncsiságból.
Sikerült működésre bírni az LG CDROM-ot is!
Nagyon szépen elindul és beolvassa a lemezt. Tanúlság(ok): 1. Hardveres rezet után kell egy szoftveres rezet. 2. LBA módot kell beállítani 3. minden parancs előtt be kell állítani a ByteCountert, és a meghajtó kiválasztást (drive0 vagy drive1). 4. A Command Packet, Control regiszterbe írása után érdemes vizsgálni a DRQ állapotát a Státusz regiszterben. Hogy ezek közül konkrétam melyik oldotta meg a problémát az már nem is érdekel...
Sima parancs küldözgetésnél azért jóval bonyolultabb...
Idézet: „egyszer lekértem a hibakódokat, erre a meghajtó lemez nélkül iszonyatosan felpörgött.” Ez még a jobbik eset, nálam (PC-ben) Felprögette nagyon, majd kivágta az ajtót, csoda hogy nem szállt el a CD a tálcából (megfogta az a pár picike fül). De rendesen összekarcolta a CD-t Gratula a sikerhez! Idézet: „A tálca nyitogatás jól jönne, csak kiváncsiságból.” Nem megyek a program részleteibe, mert nem tudom mit használnál mikrovezérnek, és milyen nyelven programozol. Szóval a lemeztálca... 1. Bekapcsolásnál nyomj egy hardveres rezetet (IDE 1-es láb logikai 0-ra). Kb. 200ms a rezet idő és ugyanennyi ideig hagyd magához térni. 2. A Státus regiszterben figyeld BSY és DRQ biteket, várd meg míg logikai 0 lesz. A státusz regisztert a következőképp címezheted: DA0=1, DA1=1, DA2=1, CS0=0, CS1=1. Olvasáskor ez a státusz regiszter címe, íráskor pedig itt találod Control regisztert. Szóval kiküldöd a címet (IOR és IOW lábak logikai 1 szinten legyenek), majd IOR lábat 0-ra húzod, és beolvasod a regiszter tartalmát. A beolvasáshoz 10us bőven elég, vagyis IOR 0-ra 10us-ot vársz, közben beolvasol, majd IOR 1-re. 3. Ha DRQ=0 és BSY=0 jöhet egy szoftveres rezet. Ehhez a a Control regiszter kell, tehát a cím ugyanaz, mint a Státusz regiszternél, csak most az IOW lábbal kell eljátszani a dolgot. A regiszterbe írj be egy 08h értéket, majd várakozz ~100ms-ot. 4. Most jön a Start Unit, de előtte ki kell küldened a Control regiszterbe egy A0h értéket, hogy a meghajtó tudja azt, hogy Command Packet fog jönni (nemes egyszerűséggel ). A Start Unit felel a lemeztálca működtetéséért és a lemez beolvasásáért. Szóval Control regiszterbe A0h érték küldése, majd az alsó 8bájtra 1Bh-t küldesz, a felső 8bájtra 00h-t... ezzel kész is van az első szó beírása. A második szó két bájtja 00h. A következő szó alsó bájtjának, alsó két bitje a lényeg, a bájtba írj be 02h-t. Ez leállítja a lemezt, majd kiadja. A maradék szavak mindegyike 00h, vagyis nem használt. Tehát valami ilyesmi: 0.byte=0x1B // OPCODE 1.byte=0x00 2.byte=0x00 3.byte=0x00 4.byte=0x02 // Load/Unload 5.byte=0x00 6.byte=0x00 és így tovább egésszen 11-ig a 0-1, 2-3, stb. bájtokat párhuzamosan kell beírni a megfelelő IDE vonalakon (szavas beírás). Érdemes mindkét bájtot kitenni a mikrovezér portjaira és ha kint van akkor kezdeni a küldést (IOW=0). Az még kimaradt, hogy a A0h Control regiszterbe írása után, de még a parancs kiadása előtt érdemes megnézni a Státusz regiszterben DRQ-t, és csak akkor küldeni a csomagot, ha DRQ=1. Ha jól programozod, akkor ki fogja nyitni a lemeztálcát. Persze a dolog szépséghibája, hogy SEEK-et most nem nézzük (az egy bonyolultabb történet, nekem is csak most sikerült tökéletesen megoldani), ezért a szoftveres rezet után várakoztasd a programot legalább 10másodpercig... ennyi idő alatt elvileg végez. Üdv!
Hát igen... az ember azt hinné, hogy a dolog ezen része harveresen megy, de nem....
A meghajtó összes paraméterét testre lehet szabni, és felül lehet bírálni. Ez egyfelől rugalmasságot ad a fejlesztőnek, másfelől pedig egy átok, mert egy hibás program komoly károkat okozhat. Köszi! Ooops! Az kimaradt az előző hozzászólásból, hogy a regisztereket kiolvasni, illetve írni az IDE adatvonal alsó bájtján keresztül lehet. |
Bejelentkezés
Hirdetés |