PCM WAV-player

   Před pár týdny jsem se začal zabývat souborovým systémem FAT16. Od té doby jsem vytvořil několik jednoduchých programů a jedním z nich je právě tento PCM WAV přehrávač. Dokáže přehrávat soubory PCM WAV. Program jsem napsal tak, aby mohly být přehrávány i rozfragmentované soubory. Na CF kartě je to úplně jedno, protože se nemusí čekat na vystavení hlav a podtočení plotny. U HDD by raději měly být soubory defragmentovány, protože vyrovnávací audio paměť vystačí při vzorkování 22050Hz jen na 20ms.

Popis zapojení

   Zapojení je prakticky identicé s MOD playerem (pořád ho mám na kontaktním poli). Externí SRAM musí mít velikost minimálně 256kB (v zapojení používám stále 512kB SRAM z GME). Obvody IC2 a IC3 rozšiřují počet vývodů jednočipu. ATmega32 může při vzorkovacích frekvencích přinejmenším do 44100Hz stereo běžet "jen" na 16MHz. Chtěl jsem si také vyzkoušet čtení dlouhých názvů souborů (LFN), takže jsem přidal i LCD, kde se zobrazují Zapojení může pracovat s D/A převodníkem TDA1543 nebo TDA1545. Je však třeba vybrat správnou variantu programu i schématu.



   Zapojení pracuje s HDD nebo CF kartou v True IDE režimu. Stačí jen ze schématu vybrat variantu. HDD musí být nastaven na SINGLE. K HDD bych ještě dodal, že pro rozběh potřebuje celkem tvrdý zdroj napětí +12V. U WD Caviar 14300 je to ve špičce asi 3A.

Ovládání

   Po zapnutí napájení se vyhledají všechny adersáře v root a pomocí menu, do kterého se vstupuje i vystupuje stiskem tlačítka ADRESAR lze jeden z nich vybrat. Na spodním řádku se zobrazuje počet nalezených skladeb ve vybraném adresáři. Pokud nejsou žádné adresáře nalezeny, tak přehrávač vytuhne a přestane reagovat na tlačítka. Nepodporované formáty jsou přeskočeny. Tlačítky SKLADBA +/- se přepínají jednotlivé skladby. Tlačítkem VPRED se přetáčí skladba. PAUSE zastaví přehrávání (po zapnutí je přehrávání zastaveno).

Program pro jednočip

   Program je napsán v assembleru a má něco přes 4kB a asi 2400 řádků. Na začátku programu lze zvolit velikost výstupního FIFO, v rámci experimentování frekvenci krystalu (od 4MHz do maximálně 24MHz (mimo tolerované hodnoty, ale mělo by to fungovat)) a nakonec rychlost posuvu textu po LCD. Úplně na konci programu lze přidávat další podporované formáty, ale vypsány jsou tam už všechny běžné.
Zdrojový kód a překlad do HEX (pro TDA1545 i pri TDA1543) pro 16MHz krystal v zipu.

Formát disku a dat

   HDD nebo CF karta musí být naformátovány na souborový systém FAT16 (1. partition). Velikost clusteru může být libovolná. Do root adresáře se vejde zpravidla celkem 512 vstupů. To mohou být soubory, adresáře nebo části dlouhých názvů (každá část má 13 znaků). Názvy je proto vhodné trochu oříznout, ať nezabírají zbytečne moc vstupů. Maximální počet adresářů v root je ale 255. stejně tak souborů s příponou "wav" může být v každém adresáři maximálně 255.
   Program se bude pokoušet přehrát všechny soubory s příponou WAV. Nepodporované formáty budou přeskočeny. Soubory umístěné v root adresáři jsou ignorovány stejně jako další úrovňe podadresářů. Podporované formáty jsou 16bit mono nebo stereo na všech standardních vzorkovacích frekvencích (v kódu lze přidávat vlastní). Standardní frekvence jsou: 11025, 12000, 16000, 22050, 24000, 32000, 44100 a 48000. S Krystalem 16MHz by měly jít přehrát všechny formáty na většině HDD a snad na úplně všech CF kartách. Přehrávání formátu 44100Hz stereo 16bitů mi s disky WD Caviar 14300 a WD Caviar 2850 fungovalo ještě při frekvenci 8MHz (to už ale bylo úplné minimum).


(c) 2006, Stanislav Mašláň - využití programu ke komerčním účelům bez souhlasu autora není dovoleno.

Poslední aktualizace: 9.8.2005