Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 4 sty 2025, o 04:04


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 2 wrz 2016, o 12:13 
Offline
Nowy

Dołączył(a): 13 sie 2016
Posty: 3
Pomógł: 0

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 PROBLEM
Pró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:
Obrazek

PODŁĄCZENIE:
Obrazek

KOD:

BIBLIOTEKI:
Obrazek
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ć :( mirekk36


Składnia: [ Pobierz ] [ Ukryj ]
ję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:

Składnia: [ Pobierz ] [ Ukryj ]
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:

Składnia: [ Pobierz ] [ Ukryj ]
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).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 wrz 2016, o 17:35 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

ja bym zaczął od uporządkowania płytki, długie i przeplecione połączenia nie wpływają dobrze na układ, a często wręcz uniemożliwiają jego poprawną pracę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 wrz 2016, o 18:08 
Offline
Nowy

Dołączył(a): 13 sie 2016
Posty: 3
Pomógł: 0

Dzięki za uwagę.
Dostałem parę wskazówek i wygląda na to, że moja karta SD może mieć taki sobie czytnik - na linii MISO jest cały czas 1(sprawdziłem LED przez tranzystor). Na razie zakupiłem moduł atnela do kart uSD i w przyszłym tygodniu zobaczę, bo to pewnie wina właśnie braku porządnego sprzętu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 wrz 2016, o 20:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 cze 2016
Posty: 247
Lokalizacja: Rybnik
Pomógł: 13

Wepnij kondenstator równolegle do głośnika

_________________
Situs != Situs



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 wrz 2016, o 13:59 
Offline
Nowy

Dołączył(a): 13 sie 2016
Posty: 3
Pomógł: 0

Kondensator nic nie dał. Sprawdzałem z 1nF oraz 100nF.

Po wymianie czytnika uSD na atnelowski, najlepszy efekt jaki udało mi się uzyskać na głośnikach komputerowych to głośny szum z wyraźną przerwą po końcu pliku. Wnioskuje z tego, że sys. plików jest ok, próbka dźwięku jest rozpoznana jako wave i program próbuje to odtworzyć przez DAC. Wydaje mi się w takim razie, że mogłem skopać część analogową przy DACu, albo wszystkie 5 sztuk jakie posiadam są wadliwe.
CHOCIAŻ na zwykłym 4 ohmowym głośniku nic nie słychać, więc już nie jestem tutaj niczego pewien. Zwłaszcza, że projekt 14(wave przez PWM) też mi nie działa.

Update:

Udało mi się uruchomić program z lekcji 14 (wave przez PWM) i jestem zadowolony z jakości dźwięku. Wygląda na to, że wystarczy mi 8-bitowa jakość.
Na razie nie będę dłużej walczył z tym DACiem.
Dziękuję za uwagi i zainteresowanie tematem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO