
Odtwarzacz plików dźwiękowych wav 32 [kHz] stereo zapisanych w systemie plików FAT 32.
Wykaz elementów:
Mikroprocesor ATMEGA8 oscylator wewnętrzny 8Mhz
Wyświetlacz graficzny 176x132 65536 kolorów
Karta pamięci Micro-SD 1GB
Stabilizator napięcia +5V oraz 3,3V
Rezystory – stanowiące dzielnik napięcia
Przyciski – umożliwiają komunikację z użytkownikiem
Kondensatory pojemnościowe – filtracja sygnałów
Prostownik – „wymusza” prawidłową polaryzację
Komunikacja z użytkownikiem odbywa się przy pomocy wyświetlacza graficznego. Po włączeniu odtwarzacza dźwiękowego wyświetlana jest zapisana na karcie pamięci tapeta. Po 3 sekundach od tego momentu pokazuje się lista dostępnych plików dźwiękowych, które są zapisane na karcie SD w formacie FAT32. Obsługa systemu FAT jest niepodważalną zaletą gdyż przy pomocy komputera możemy nagrać pliki, a potem w dowolnym momencie je odtwarzać. Dźwięk jest nagrany w formacie WAV 32 tysiące próbek na sekundą dla jednego kanału, a więc dla stereo potrzebne są 64 tysiące próbki (8-bitowe) na sekundę do odtwarzania dźwięków.
Mikroprocesor obsługę systemu FAT rozpoczyna w sektorze startowym, w którym są umieszczone informacje m.in. gdzie w pamięci znajduje się katalog główny. Po odnalezieniu katalogu głównego (głównego którym są zapisane m.in. nazwy plików) uP przeszukuje całą pamięć w poszukiwaniu muzyki. Zazwyczaj swoje poszukiwania kończy na 1 klastrze gdyż ilość plików jest stosunkowo mała. Po znalezieniu wszystkich plików zapamiętuje nazwy tylko tych które są nam aktualnie potrzebne do wyświetlenia (ograniczenia pamięciowe).
Zazwyczaj nazwy plików są dłuższe niż 8-znaków + 3 znaki rozszerzenia, więc aby FAT32 był zgodny ze wcześniejszymi systemami plików np. FAT zastosowano specjalny sposób zapisu nazwy pliku. Odpowiedni algorytm odczytuje nazwę pliku, adres w pamięci gdzie znajduje się pierwszy sektor tego pliku oraz rozmiar. Gdy już znamy adres pliku który chcemy włączyć, kierujemy się pod to miejsce w pamięci. Program jest uproszczony ze względu na ograniczone ilości pamięci i szybkość uP więc zakładam iż kolejne klastry pliku występują kolejno po sobie – i tak w rzeczywistości jest po sformatowaniu karty.
Próbki danych z pamięci odczytuję blokami po 256 bajtów. Do odczytywania danych zarezerwowana jest tablica 512 bajtowa, którą programowo podzieliłem na dwa bloki po 256 bajtów. Jeżeli odtwarzam daną z dolnej części tablicy to wczytuję dane z karty do starszej i vice-versa. Chroni to odtwarzacz przed niekorzystnym czekaniem na dane – gdyż odtwarzamy w czasie rzeczywistym.
Odtwarzanie dźwięku zrealizowane jest za pomocą przerwania które jest wykonywane 32.000 razy na sekundę. Podczas każdego przerwania dane próbki dźwięku (lewy i prawy kanał) wysyłane są do wyjść PWM uP. Odtwarzanie dźwięku zrealizowane jest przy użyciu modulacji szerokości impulsów PWM. Bardzo dobrze spełnia swoją rolę – co doskonale słychać. Niedoskonałości dźwięku (praktycznie nie słyszalne spowodowane są znaczną stratną kompresją dźwięku). Zaletą tej kompresji (a raczej dekompresji – bo plik zajmuje sporo miejsca) jest to iż uP nie musi obliczać amplitudy dźwięku gdyż bitowa wartość odczytywana z pamięci nią jest. Nie tylko słyszymy, ale również w czasie rzeczywistym widzimy. Podczas wybierania muzyki lista utworów jest widoczna na wyświetlaczu, a gdy odtwarzamy to wyświetlany jest pasek postępu wraz z upływającym czasem.
Celem tego projektu było zrealizowanie go:) oraz pokazanie jak za pomocą uP kosztującego ok. 4zł można obsłużyć jednocześnie duży kolorowy wyświetlacz graficzny, pojemną kartę pamięci z systemem plików FAT32 a przy tym posłuchać muzyki stereo.
I film - jakość dźwięku nagranego przez kamerę(aparat) jest fatalna i proszę się tym nie sugerować. Dźwięk oczywiście odbiega od jakości mp3 - ale jak na modulację PWM jest znakomity, płynny i barwny. Niedoskonałości w odtwarzaniu dotyczą jedynie formatu zapisu.





</object>
Kod programu zajmuje ok 20.000 znaków

Tomek
Cool? Ranking DIY