Chciałem się dowiedzieć jakie częstotliwość próbkowania osiągacie przy stabilnym odtwarzaniu *.wav bez zakłóceń wynikających z obsługi karty.
Śledzę temat od dawna. Ostatnio z potrzeby chwili zacząłem eksperymenty. Oprogramowanie jest napisane w Bascom/Asm. Kiedyś napotkałem PDF'a kolegi Saabotaz dotyczącego obsługi karty SD / MMC. Uruchomiłem na podanym tam podprogramie rejestrację temperatur. Teraz uruchomiłem odtwarzacz plików *.wav. Mimo, że obsługa karty jest napisana jako wstawka asm do Bascoma, a M32 popędzam kwarcem 16MHz to wszystko gra stabilnie do częstotliwości próbkowania 8kHz. Powyżej tego także gra, lecz dźwięk faluje pomiędzy odczytem jednego i kolejnego sektora danych. PWM ładowany jest w czasie rzeczywistym danymi z karty, a odczyt kolejnego bajtu z karty synchronizowany jest w czasie za pomocą przerwania od Timera0. Wspomnę jeszcze, że odczyt kolejnego sektora realizuje dopisany przeze mnie fragment programu w asm. Do Bascoma program wraca po odczytaniu określonej liczby sektorów licząc od zadanego adresu, czyli po odtworzeniu tego co trzeba.
Karta odczytywana jest "niskopoziomowo" poprzez podanie sektora początkowego i ilości sektorów do odczytania. Zapis karty tworzę z użyciem programu DMDE.
I jeszcze robocza wersja programu (jeszcze nie do końca zoptymalizowana).
P. S. Dzięki ładowaniu PWM'a w czasie rzeczywistym nie potrzeba zmiennej tablicowej przechowującej cały sektor karty. Program obecnie ma poniżej 2 kB zatem po rozbudowie ATMega8A go bez problemu uciągnie. Na razie nie stosuję odczytu multisektorowego, jeszcze do tego nie doszedłem.