Fórum témák

» Több friss téma
Fórum » Mikrokontrolleres CDROM-vezérlő
Lapozás: OK   2 / 4
(#) mspike válasza Hurka hozzászólására (») Aug 2, 2006 /
 
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.
(#) djneo válasza mspike hozzászólására (») Okt 14, 2006 /
 
Hali!!
Sikerűl a project???
(#) pixels válasza djneo hozzászólására (») Okt 14, 2006 /
 
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.
(#) mspike válasza pixels hozzászólására (») Okt 15, 2006 /
 
Grat, szép megoldás ! Szeretem a gondolkodókat !
(#) Frankye válasza pixels hozzászólására (») Okt 15, 2006 /
 
Bravo!
Nem tudnál képet feltenni róla? Csupán a kíváncsiságomat kielégítendő...
(#) paprika válasza mspike hozzászólására (») Okt 15, 2006 /
 
Ü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
(#) Norberto válasza paprika hozzászólására (») Okt 16, 2006 /
 
A Texas kontrollerek nem piték
(#) Slope válasza paprika hozzászólására (») Feb 2, 2007 /
 
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...
(#) Slope válasza Slope hozzászólására (») Feb 2, 2007 /
 
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 )

sff8020.pdf
    
(#) Norberto válasza Slope hozzászólására (») Feb 2, 2007 /
 
Nézd csak, mit találtam, csatolom:
(#) Slope válasza Norberto hozzászólására (») Feb 3, 2007 /
 
Köszi!
Neki is állok és darabokra szedem... a 8515 utasitáslistájával a kezemben
(#) Slope válasza Slope hozzászólására (») Feb 6, 2007 /
 
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.

(#) Moderátor hozzászólása Feb 6, 2007
 
Slope kérésére a cím átírva.
(#) Slope válasza (») Feb 15, 2007 /
 
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?
(#) X Sügi X válasza Slope hozzászólására (») Feb 15, 2007 /
 
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!

CD írás.JPG
    
(#) Slope válasza X Sügi X hozzászólására (») Feb 15, 2007 /
 
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...
(#) X Sügi X válasza Slope hozzászólására (») Feb 15, 2007 /
 
Jaaaah, bocsesz, nem figyeltem, azt hittem az egyes trackek idejét írja hosszabnak 3 mp-el.. Akkor viszont lövésem sincs!
(#) Slope válasza X Sügi X hozzászólására (») Feb 25, 2007 /
 
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...
(#) szabi83 válasza Slope hozzászólására (») Feb 25, 2007 /
 
ne add fel
(#) Slope válasza szabi83 hozzászólására (») Feb 25, 2007 /
 
kösz! igyekszem...
(#) szabi83 válasza Slope hozzászólására (») Feb 26, 2007 /
 
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
(#) Slope válasza szabi83 hozzászólására (») Feb 26, 2007 /
 
köszi! azért annyira mazó még én sem vagyok
(#) Peppe válasza Slope hozzászólására (») Feb 26, 2007 /
 
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
(#) Slope válasza Peppe hozzászólására (») Feb 26, 2007 /
 
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
(#) Peppe válasza Slope hozzászólására (») Feb 26, 2007 /
 
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.
(#) Slope válasza Peppe hozzászólására (») Feb 26, 2007 /
 
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...
(#) Slope válasza Peppe hozzászólására (») Feb 26, 2007 /
 
Sima parancs küldözgetésnél azért jóval bonyolultabb...
(#) MaSTeRFoXX válasza Slope hozzászólására (») Feb 26, 2007 /
 
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!
(#) Slope válasza Peppe hozzászólására (») Feb 26, 2007 /
 
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!
(#) Slope válasza MaSTeRFoXX hozzászólására (») Feb 26, 2007 /
 
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.
Következő: »»   2 / 4
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem