Elektroda.pl
Elektroda.pl
X
Relpol
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ATMEGA[BASCOM] Najprostsze odtwarzanie Wav .

adambehnke 25 Sty 2012 00:51 91305 328
  • #301 25 Sty 2012 00:51
    slawko_k
    Poziom 33  

    Hej
    Zamierzam zrobić coś takiego i mam pytanko.
    Czy możliwa jest zmiana plików przy zachowaniu ciągłości grania?
    Czy otwarcie nowego pliku i odczyt z niego e trwa na tyle długo że da się o usłyszeć?

  • Relpol
  • #304 16 Lut 2012 18:20
    danielpoland
    Poziom 13  

    Witam.

    Jak będę miał chwilę to zmienię program i sprawdzę.
    Dam znać potem co i jak.

    Pozdrawiam.

  • #305 29 Wrz 2012 23:30
    trcolin
    Poziom 11  

    WOBI dzięki, wszystko działa na 100% Atmega128 + 16MHz + SD 2GB + RAW na WAV + źródła z strony 7 :), jakość bardzo dobra...

  • #306 24 Kwi 2013 22:27
    FastProject
    Poziom 28  

    trcolin napisał:
    WOBI dzięki, wszystko działa na 100% Atmega128 + 16MHz + SD 2GB + RAW na WAV + źródła z strony 7 :), jakość bardzo dobra...


    Czy po zamknięciu pliku i zakończeniu odtwarzania występuje u kolegów trzask w głośniku?

  • #307 30 Kwi 2013 11:27
    trcolin
    Poziom 11  

    U mnie nie było żadnych trzasków, Można było składać całe zdania z nagranych słów.

  • #308 30 Kwi 2013 21:54
    adambehnke
    Poziom 24  

    trcolin napisał:
    U mnie nie było żadnych trzasków, Można było składać całe zdania z nagranych słów.


    Ja mam w ten sposób zrobiony budzik dla mojej córki. Co godzinę (oczywiście nie w nocy) odtwarza komunikat o aktualnej godzinie , dodatkowo można sobie kliknąć i sprawdzić aktualny czas i datę. Bez problemu można składać całe zdania itp.

  • #309 10 Cze 2013 19:05
    aklosek
    Poziom 12  

    A czy ktoś próbował dorzucić zewnętrzny DAC sterowany po SPI ??

    Dodano po 1 [godziny] 8 [minuty]:

    Zamiast robić to na PWM procesora??

  • Relpol
  • #310 01 Gru 2013 15:28
    werewolf15
    Poziom 14  

    Mam mały problem z odtwarzaniem plików na at128.

    Mam taki program:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    do tego moje biblioteki:
    1.Card_init_v2.bas
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    2.Config_MMC.bas
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    3.CONFIG_AVR-DOS.bas
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Tutaj schemat (procesor współpracuje z gotowym modułem SD arduino):
    ATMEGA[BASCOM] Najprostsze odtwarzanie Wav .
    i fusebity:
    ATMEGA[BASCOM] Najprostsze odtwarzanie Wav .
    Głośnik w obu procesorach podpinam bezpośrednio do pwm i masy.
    Powyższy program działa doskonale na at32 ale na at128 wogule.

    Dodam jeszcze że próbowałem z gotowym programem na at128 ze strony 7. Testując na at32 działa odtwarzając w spowolnionym tępie a na at 128 wogóle.
    Plik muzyczny do testów też mam ze strony 7.

    Proszę o pomoc jak przerobić mój program aby działał na at128. A może to błąd w połączeniu?

  • #311 01 Gru 2013 16:07
    atom1477
    Poziom 43  

    Poustawiaj w różnych miejscach kodu zapalanie LEDów, to zobaczymy gdzie się kod wykrzacza.
    Bo tak to będziemy do świąt zgadywać co tam może być źle.

  • #312 01 Gru 2013 18:04
    werewolf15
    Poziom 14  

    No i jest dziwna sprawa ...

    Dioda testowa świeci najpierw informując o dojściu do podprogramu "odtwarzacz" potem informuje o utworzeniu pliku testowego "plik13.txt" na karcie, potem informuje że procek zabiera się do odtwarzania pliku .wav i cały cykl się powtarza w kółko.

    Napisałem że dziwna sprawa bo wygląda na to że prawidłowo inicjalizuje kartę potem na niej zapisuje plik tekstowy (sprawdzałem na kompie i jest ok) a pliku .wav nie chce ruszyć.

    Czasami zdarza się że w układzie nic się nie dzieje tzn. podłączam do zasil. i zero reakcji, a czasami muszę formatować kartę po odłączeniu od układu bo komputer zgłasza taką konieczność.

    I co o tym sądzicie?

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

  • #313 02 Gru 2013 07:58
    atom1477
    Poziom 43  

    Może po prostu głośnik robi zwarcie. Nie powinien być połączony bezpośrednio do pinu. I nie chodzi nawet o możliwość uszkodzenia pinu czy jakość dźwięku (choć o to też), lecz o robienie zwarcia dla prądu stałego. Powinien tam więc być przynajmniej szeregowy kondensator. Być może ATMega32 jest na jego brak bardziej odporna i dlatego na niej działa. Na próbę w ogóle odłącz głośnik i podłącz tam np. drugiego LEDa. A jak masz to i oscyloskop.
    Możesz też tam dać filtr RC np. 10k i 10nF żeby nie widzieć sieczki tylko mniej więcej dźwięk. Jak już dasz filtr RC to i bez oscyloskopu możesz sprawdzić co się tam dzieje podłączając jakiś wzmacniacz.

  • #314 02 Gru 2013 15:57
    werewolf15
    Poziom 14  

    Zrobiłem filtr RC z zaproponowanymi elementami i podłączyłem to wyjście do wzmacniacza do głośników komputerowych i przetestowałem na pliku . wav z 7 strony. Efekt taki że teraz wszystko działa!
    Mam jednak jeszcze mały problem z konwertowaniem plików muzycznych. Do tej pory używałem winampa i takich oto konfiguracji:
    ATMEGA[BASCOM] Najprostsze odtwarzanie Wav .
    Na at32 działało, na at128 albo odtworzy kawałek ale przeważnie to wogule nic.

    Na samym głośniku z filtrem też działa ale bardzo cicho. Czy wartości elementów filtra RC do mojego układu należy dobrać doświadczalnie czy te 10k i 10nf będzie już ok?

  • #315 21 Cze 2014 10:06
    spazz4
    Poziom 16  

    Witam, a ja mam z tym układem dziwny problem, nie chce współpracować. Dopisałem sobie do dwóch wersji zamieszczonego przez Was programu wysyłanie informacji zwrotnej błędu po rs i tak podłączając kartę MMC 16Mb kod błędu 0 jednak nic nie odtwarza, po wymianie karty na SD 4Gb otrzymuje błąd 227. Karta zasilana 3.3, procek 5, karta podłączona przez dzielnik z schematu w wątku. Karty formatowałem, plik który próbuje odpalić w załączniku jak i obydwie testowane wersje programu. Przyciśnięcie przycisku testowego w drugiej wersji nie powoduje nic poza cyklicznym stukiem w głośniku jeśli trzymam go dość długo. Gdzie mogę popełniać błąd ? Układ mam wykonany na płytce testowej Atmel-ATB oraz na uniwersalnej na obydwu ten sam problem.

    Procesor Mega32A, testowane na kilku sztukach dla pewności
    -
    Dopisałem jeszcze zwracanie błędu bErrorCode , dla 16Mb zwraca wartość 20 - za mały rozmiar sektora karty, przy 4Gb zwraca równie 227
    -
    Według tego co wyczytałem problem leży w kartach pamięci, mam pod ręką 5 sztuk SD 4Gb HC - i to właśnie podobno w typie leży problem, jest jakiś sposób na to ?

  • #316 23 Cze 2014 22:47
    adambehnke
    Poziom 24  

    werewolf15 napisał:
    Do tej pory używałem winampa i takich oto konfiguracji:


    A dlaczego nie wymusisz pliku wyjściowego w formacie RAW ? Pozbawiony będzie nagłówka i będzie zawierał same dane gotowe do odtworzenia.

    Nigdy nie należy też podłączać głośnika bezpośrednio do pinów procesora. Bo zakładam że Podłączasz głośnik 16-32R ... Użyj elektrolit >100uF.


    Cytat:
    Według tego co wyczytałem problem leży w kartach pamięci, mam pod ręką 5 sztuk SD 4Gb HC - i to właśnie podobno w typie leży problem, jest jakiś sposób na to ?


    Rozwiązaniem jest przejście z Bascoma na C i odpowiednie biblioteki.
    W tym momencie używam dowolnych kart pamięci łącznie z SDHC o pojemności >8GB.

  • #317 19 Gru 2014 23:58
    M. S.
    Poziom 34  

    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).

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    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.

  • #318 20 Gru 2014 11:21
    atom1477
    Poziom 43  

    M. S. napisał:
    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.
    ...
    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.

    No w zasadzie w tej wersji powinno to działać.
    Jednak u mnie kod z buforem i na kodzie odczytu z BASCOMa działał chyba nawet dla 44100Hz.

  • #319 21 Gru 2014 11:36
    M. S.
    Poziom 34  

    Zauważyłem, że u mnie zakłócenia pojawiają się podczas "dużyzn" wysokich tonów. Jeśli odtwarza się niskie tony lub tony zmieniają się szybko to utwór (ten sam) idzie gładko. Zakłócenia przy próbkowaniu 8kHz przypominają trzepotanie skrzydłami przez gołębia.
    Być może problem pojawia się przy konwertowaniu pliku mp3 -> wav. Na PC tego jednak nie słychać.

  • #320 21 Gru 2014 13:50
    atom1477
    Poziom 43  

    Może to nagraj w wrzuć. I oryginał też.

  • #321 22 Gru 2014 18:05
    M. S.
    Poziom 34  

    Problem się chyba rozwiązał. Polegał on prawdopodobnie na zmniejszeniu częstotliwości próbkowania bez zmiany górnej częstotliwości pasma przenoszenia. Używałem do konwersji Nero Wave Editor. Teraz mp3 przerobiłem za pomocą Free Audio Editor przy użyciu filtru dolnoprzepustowego. Po konwersji próbkowania na 22,05 kHz i ograniczeniu pasma do 9kHz (z zapasem) gra bez zbytnich sensacji. Musiałem się w pas pokłonić Panom: Whittaker'owi, Nyquist'owi Kotielnikov'owi i Shannon'owi.

    Teraz mogę zrobić krok do przodu - w kierunku mówiącego termometru do auta (żeby nie doklejać do deski rozdzielczej jakichś wyświetlaczy psujących design).

    Na 44,1 kHz chyba jednak nie pójdzie bo odtwarzanie było zwolnione tak jakby gubił taktowanie z Timera0.

    Podziękował.

  • #322 18 Mar 2015 14:40
    tomastom
    Poziom 11  

    Czy ma ktoś sprawdzony schemat wyrysowany w EAGLE z jakaś fajną wykonaną płytką?

  • #324 20 Mar 2015 13:57
    tomastom
    Poziom 11  

    No właśnie na ranie jeszcze słabo u mnie z EAGLE i chciałem się trochę wspomóc tym projektem i przystosować go pod swoje potrzeby, dlatego był bym wdzięczny za pomoc.

  • #325 20 Sie 2015 20:40
    krystian08
    Poziom 16  

    Witam,

    Zaciekawił mnie temat odtwarzacza, wykonałem układ z mikrokontrolerem AtMega128A. Korzystam z plików zamieszczonych przez Kolegę WOBI, i niestety mam problemy z uruchomieniem obsługi karty pamięci. Program wiesza się na procedurze inicjalizacji, podglądnąłem co się dzieje na SPI za pomocą analizatora. Na linii MOSI pojawia się ciąg 0x40 0x00 0x00 0x00 0x00 0x95. Na MISO pojawia się odpowiedź 0x7F 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x01, i tak w koło co ok. 0,5 s. Stosowałem różne karty SD o pojemnościach 256MB, 1GB, 2GB, w każdym wypadku sytuacja jest identyczna. Ktoś spotkał sie z podobnym problemem lub może podpowiedzieć gdzie szukać rozwiązania?

  • #326 26 Sie 2015 14:34
    krystian08
    Poziom 16  

    Koledzy, czy ktoś może podpowiedzieć gdzie szukać przyczyny?

  • #327 26 Sie 2015 14:49
    LordBlick
    VIP Zasłużony dla elektroda

    Zjedź z częstotliwością w dół…

  • #328 27 Sie 2015 10:53
    krystian08
    Poziom 16  

    Dobierałem wszystkie dostępne prędkości SPI, bez różnicy. Fusebity zaprogramowane prawidłowo, wszystko zgodnie z projektem, żadna karta nie rusza...

  • #329 16 Lis 2016 22:22
    fysiek
    Poziom 24  

    Witam. Pozwolę sobie odgrzać temat. Potrzebowałem czego właśnie w tym stylu, tylko że w u mnie nie potrzeba sterowania przez UART, czy regulacji głośności - będzie raz na zawsze potencjometrem. Układ ma odtwarzać w kółko kilka...w tym przypadku 10 utworów w kółko. Układ okroiłem po swojemu i działa to pięknie! Prosze autora tematu, lub osoby którę sa mocne w tym temacie o opinię czy czegoś po drodze nie sknociłem, bo być może są jakieś delikatne błędy których w teraz nie widać a dadzą znać o sobie w czasie eksploatacji.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Jeszcze CONFIG_AVR-DOS.bas

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

  Szukaj w 5mln produktów