CEL:Chciałbym stworzyć zabawkę, gadżet, który przy naciśnięciu przerwaniu zewn. wyda odpowiednie dźwięki(na pewno nie próbki głosowe). Chciałbym też dodać opcję losowania dźwięku z folderów na karcie µSD.
PARAMETRY:ŚRODOWISKO: Eclipse Neon (inne, prostsze projekty działają na tym);
JĘZYK: C;
AVR: ATmega 32;
TESTOWANE CZYTNIK µSD:
[ reklama modułów innych firm - usunięto - mirekk36 ]KARTY SD: 128MB | 2GB; (na tę chwilę karta 128MB jest uszkodzona i żadne urządzenie jej nie widzi)
TESTOWANE SYS. PLIKÓW: FAT, FAT32;
WAVE: 16bit@22050Hz / długość: od kilku sekund do 3-4min. (do konwersji użyłem Nero WaveEditor)
OPIS KRÓTKI - BIEŻĄCY PROBLEMPróbuję uruchomić projekt 20a(WAV_PLAYER_I2S_FIFO). COŚ mi tu działa, ale na pewno nie jest to poprawne odtwarzanie.
Po włożeniu karty chwilę „cyka” z głośników i mryga dioda zasilania na module karty microSD. Następnie chyba zaczyna się odtwarzanie, ale są to jakieś piski, turkoty, a na pewno nie jest to muzyka, nawet bardzo zaszumiona. Czy to nie jest po prostu, jakimś cudem, wzmocnienie tego, co dzieje się na linii SPI?
W tej chwili piny są tak jak mi było wygodnie – pozmieniałem też w kodzie.
Jeszcze zbadałem linie BCK, WS i DAT za pomocą LED podłączonej przez tranzystor: BCK daje ok 15-20% stałej jasności diody, DAT mruga aż miło, a WS cały czas się świeci – czy WS nie powinna mrugać 8 razy wolniej niż DAT?
Co się dzieje jak odtwarza(nagrane dyktafonem w Androidzie):
https://instaud.io/wr5 (przerwy to kolejne utwory, nic się nie zmienia jak zmieniam wartości rezystorów na wyjściu DAC).
SCHEMAT:PODŁĄCZENIE:KOD:BIBLIOTEKI:
Używam kodu z GB p. Kardasia. Usunąłem bibliotekę do LCD, bo go nie używam(wszystkie wstawki w kodzie też). Usunąłem także zmianę jako wejścia/wyjścia PWM1 i PWM2 – wydaje mi się, że były to pozostałości z kodu w projekcie nr 14. Jeżeli przez wstawienie tego kodu tutaj naruszam prawa autorskie, to proszę o zwrócenie mi uwagi i natychmiast usunę ten kod.
// a czytał kolega stopkę na dole pierwszej strony redakcyjnej? Pytasz się czy naruszasz prawa ? no to pomyśl chwilkę, jeśli tak każdy wstawi na forach kody z moich książek a inni sobie je przekopiują to po co im kupować książki ? ... i po co mi pisać z kolei następne książki - skoro takim sposobem wszyscy podzielą się kodami ? .... sorrry ale nawet nie wiem o co tu pytać mirekk36język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Konfiguracja pinów w i2s_cfg.h:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Konfiguracja pinów w mmc.c:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
OPIS DŁUGI:Zacząłem od projektu odtwarzającego wavy przez TDA1543 (projekt nr20 na płycie do GB).
Podłączyłem identycznie jak wskazywał mi kod w C i… nie zadziałało. Mówię sobie no trudno, może taka bardziej skondensowana wersja (20a) będzie działać – tam obsługa I2S jest przeniesiona do pliku nagłówkowego - to schludniej, przejrzyściej i w ogóle profesjonalnie. Nadal nic. Myślę sobie – może jestem na to jeszcze za głupi – to zrobię coś prostszego, czyli projekt nr 14 – odtwarzanie przez PWM. Nie zadziałało.
Jeśli chodzi o podłączenie elementów dyskretnych to testowałem różne sposoby znalezione dla tego DAC w Internecie oraz to co pokazał p. Kardaś w GB.
O CO TU CHODZI:Część grająca jest tylko wycinkiem większego projektu, w którym będzie zastosowana.
Założyłem sobie, że nie chcę robić odtwarzania przez PWM tylko od razu pójść w stronę DAC. Uparłem się przy tym też, że 16-bitowa rozdzielczość to jest to, w co chcę celować. Z racji tego, że DACi 16-bitowe aktualnie w sprzedaży są dosyć drogie (od 8-17zł w górę) to chcę zostać przy TDA1543, gdzie z Chin można go dostać już w cenie $0,15/szt. Co więcej ten TDA odbiera dane po I2S, co jest stosunkowo proste w obsłudze (z mojego punktu widzenia) wzg. SPI, I2C czy UART (nie miałem do czynienia jeszcze z żadnym standardem komunikacji).
Proszę o uwagi i porady w tej kwestii - chętnie posłucham co doradzą mi bardziej doświadczeni w temacie, zwłaszcza jeżeli istnieje jakieś rozwiązanie w kwestii doboru DACa np. mniejsza rozdzielczość ale i tak dobra jakość przez zastosowanie wzmacniacza czy filtrów. Zamierzam zbudować więcej takich urządzeń a nie chciałbym, żeby DAC kosztował 20zł i był przez to jakąś znaczącą częścią w cenie urządzenia.
Już prawie miesiąc mija, od kiedy do tego usiadłem, ale nie potrafię sobie z tym sam poradzić, a chciałbym w listopadzie mieć działający prototyp całości(czekam mnie jeszcze obsługa peryferiów po I2C).