Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

AVR WAV PLAYER - z wyświetlaczem LCD i obsługą klawiszy

mirekk36 13 Nov 2011 21:28 72818 149
Optex
  • #31
    darres1
    Level 12  
    Witam,
    Złożyłem player, działa, gra całkiem fajnie ale mam problem, po około 30 sekundach, zawiesza się, po zmianie procka, nadal to samo ;-(
    Po zmianie jakości pliku do 8 bit, czas odtwarzania się wydłuża do 45 sekund ?
    Nie podłączałem "wskaźnika wysterowania" i tranzystora do podświetlenia LCD, czy to może być przyczyną ?

    a może fuski:

    AVR WAV PLAYER - z wyświetlaczem LCD i obsługą klawiszy
  • Optex
  • #32
    mirekk36
    Level 42  
    miszczo997 wrote:
    ... że można użyć procesora takiego jak atmega 168 czyli mam rozumieć, że z powodzeniem można wgrać zamieszczony hex?


    Można użyć dowolnego procesora ale trzeba sobie zmienić/napisać program źródłowy do niego. Samego wsadu nie da rady odpalić tak wprost na innym procku - chyba że będzie to ATmega16

    miszczo997 wrote:
    I jeszcze pytanie z trochę innej strony- jak długo powstawał kod programu?


    Hmmm męczyłem się z tym całe święto czyli w piątek ;)

    Dodano po 2 [minuty]:

    darres1 wrote:

    Nie podłączałem "wskaźnika wysterowania" i tranzystora do podświetlenia LCD, czy to może być przyczyną ?


    Nie to nie powinno być przyczyną :( na prawdę trudno mi powiedzieć ... muszę jeszcze przejrzeć cały kod - chociaż mi się to chyba nie zdarzało. Fusy powinny być ustawione po prostu na zewnętrzny kwarc i musi być 16MHz.

    Chociaż na pewno program będzie miał problemy z ruszeniem bez LCD gdyż sprawdza flagę zajętości BusyFlag.... ale wtedy to by świrował od samego początku raczej.
  • #33
    User removed account
    User removed account  
  • Optex
  • #34
    Badmaneq
    Level 23  
    Z HDD nie powinno być problemu sam niedawno czytałem, zapisywałem do HDD przy użyciu AVT2250 (8051)...
    Aktualnie konstruję "otwarzacz" na 8051 przy użyciu drabinki rezystorowej, którego zadaniem jest ogłaszanie wyników do gry w piłkarzyki. Wav'y są zapisywane na 64 KB epromie. Z powodu braku miejsca częstotliowśc wav'ów ustawiona jest na 8kHz, ponieważ znane mi programy nie pozwoliły przekonwertować poniżej 8kHz. Chyba będę musiał sam napisać program, który pozwoli przekroczyć tą magiczną granice. Z koleji nasuwa się pytanie czy warto, bo przy ilu Hz sample stają zrozumiałem ?
  • #35
    mirekk36
    Level 42  
    Badmaneq wrote:
    Z koleji nasuwa się pytanie czy warto, bo przy ilu Hz sample stają zrozumiałem ?


    Czy słuchałeś całości nagrań z tego filmiku który umieściłem w pierwszym poście ? czy przeczytałeś to co dopisałem pod filmikiem ? ;) ... jest na nim króciutki bo króciutki ale przykład nagrania wave z samplowaniem 6kHz i całkiem dobrze i wyraźnie słychać.

    Dodano po 2 [minuty]:

    R-MIK wrote:
    Daj na wyjściach audio filtry dolnoprzepustowe, jakość dźwięku się poprawi.


    Tylko ja nie wiem co tu jeszcze poprawiać w tym dźwięku ? jak dla mnie to już jest bardzo dobrze ;)
  • #36
    djbpm
    Level 22  
    8bitowa jakość dźwięku do muzyki się nie nadaje, jedynie do komunikatów głosowych. W pliku mk_test1.mp3 słychać też jakieś dziwne trzaski i dźwięki powyżej połowy częstotliwości próbkowania. Konieczny jest filtr dolnoprzepustowy.
    Dodałbym jeszcze użycie wav z preemfazą, i jakąś deemfazę sprzętową w torze analogowym. (np taką jaką się stosuje w radiofonii FM)
    Jakbyś zrobił to na przetworniku R2R to możliwe byłoby stosowanie znacznie wyższych częstotliwości próbkowana, nawet ponad 100khz. W połączeniu z deemfazą dałoby to naprawdę ładny dźwięk (jeśli chodzi o mowę oczywiście).
    Pozdrawiam
  • #37
    mirekk36
    Level 42  
    No tak, panowie - tylko wszystko zależy co to znaczy "naprawdę ładny dźwięk" ? Dla jednego to będzie taki jak z DVD a dla drugiego i taki będzie ładnym ;) Zależy jakie kto ma ucho. Ja tam się nie sprzeczam i wiem że niektórzy słyszą tam trzaski jakieś, szumy czy inne licho ... Nie przeczę. Ale jeszcze raz powiem - moim zdaniem z dźwięku 8 bitowego i tak nie zrobi się dźwięku o jakości 16-bitów i 48kHz za pomocą dowolnych filtrów itp.

    Poza tym już pisałem wcześniej zagadnienia związane z tworzeniem filtrów we własnym zakresie są mi obce (za małe doświadczenie w tej dziedzinie) i ja tego nie zrobię - jeśli ktoś jest chętny to może sobie złożyć taki playerek i dorobić rzeczone filtry aby sprawdzić czy będzie lepiej. I wtedy dać tutaj znać , może nagrać dźwięk tak jak ja i umieścić przykład.

    Co do drabinki (Covox) to znam to rozwiązanie bardzo dobrze, i nawet myślałem o zastosowaniu jednak wiecie dlaczego jej nie użyłem ? Powód prosty i banalny - bo bez niej - czyli tak jak jest teraz - wszystko działa na tyle dobrze i wyraźnie, że aż szkoda się męczyć w dodawanie na wyjściu jeszcze tylu rezystorów ;)

    Ale hmmm z ciekawości może złożę ją sobie w chwili wolnej na płytce stykowej i sprawdzę. Jeśli będzie dużo dużo lepiej (w co wątpię) to dam tutaj znać. Chyba że mnie ktoś ubiegnie, kto już sobie złożył tego playerka.
  • #38
    Badmaneq
    Level 23  
    Ehh, bo masz sprzętowy PWM - kiedy ja się przesiąde na AVR'y :)
    Nie słuchałem nagrania, brak głośnika, lecz wydaje mi się że trzaski to może być wina tła nagranego przez mikrofon. Sam przy nagrywaniu przez mikrofon i puszczaniu takiego sampla miałem trzaski. Kiedy znalazłem w necie sampelki mówione 0,1,2...9 i przekonwertowane do 8KHz trzasków nie było słychać.
    BTW. Jakim programem samplowałeś do 6 KHz ?
  • #39
    mirekk36
    Level 42  
    Badmaneq wrote:

    BTW. Jakim programem samplowałeś do 6 KHz ?


    Tzn tak - najpierw za pomocą Nero Wave Editor nagrałem z samplowaniem 8kHz a następnie to przekonwertowałem do częstotliwości samplowania 6kHz.

    A co do trzasków odnośnie nagrania z mikrofonu to masz rację, nawet jak nagram z maksymalną częstotliwością 48kH w kompie (16bitów) to i tak słychać jakieś tam trzaski w tle szczególnie w chwilach ciszy. Ale co z tego ? Toż to trzeba się wsłuchiwać żeby je zauważyć, że tak powiem. To co najważniejsze czyli mowa ludzka albo muzyka jest przede wszystkim bardzo dobrze słyszalna. I to to chodzi.
  • #40
    djbpm
    Level 22  
    Owszem, doskonałego dźwięku z tego rozwiązania się nie uzyska, ale to nie powód by nie dążyć do poprawy. Dla mnie różnica pomiędzy próbkowaniem 22,05khz a 44.1khz jest olbrzymia, i generalnie jest ważniejsza od efektu stereo, ponieważ słuchanie muzyki z próbkowaniem 22khz jak dla mnie nie ma sensu. W Twojej konstrukcji występuje śmietnik na częstotliwościach powyżej połowy częstotliwości próbkowania (powyżej 11khz) który jest w zakresie słyszalnym, dlatego należy go odfiltrować.
    Oprócz tego na tor audio wchodzą jakieś dziwne śmieci, np, 525hz,867hz, 2734Hz z kilkoma harmonicznymi, objawiające się jako pisk. Stwórz sobie pusty wav (minutowa cisza) i zrób porządek z tymi zakłóceniami. Być może to od karty sd, i zasilanie do niej trzeba poprawić. Szum powinien być niżej niż -48dB.
    Co do komunikatów głosowych, to tu, dla odmiany, odtwarzanie ich w stereo zazwyczaj nie ma sensu. Piszesz, że w mono uzyskasz 44.1 to nie ma co robić R2R, bo dużej różnicy nie będzie. Przy 44,1 śmietnik będzie występował powyżej 22khz, czyli poza pasmem słyszalnym przez zwykłych ludzi = nie zachodzi konieczność jego filtracji.
    Deemfaza poprawiłaby stosunek sygnał-szum na wyższych częstotliwościach, gdzie jest on najbardziej słyszalny. Sprzętowo deemfaza to 1 wzmacniacz operacyjny, i w sprzężeniu rezystor równolegle z kondensatorem. Jedyny z nią kłopot, to to, że trzeba przygotować odpowiednio wav, aby był z preemfazą (podbitymi wysokimi) ew. zaszyć jakiś algorytm filtru cyfrowego. Nie powinien być skomplikowany, więc avr powinien dać radę.
    mirekk36 wrote:
    to i tak słychać jakieś tam trzaski w tle szczególnie w chwilach ciszy. Ale co z tego ? Toż to trzeba się wsłuchiwać żeby je zauważyć, że tak powiem

    To, co Ty słyszysz po wsłuchaniu się, inny może nie słyszeć wcale, lub słyszeć od razu. Zainwestuj może w jakieś sensowne słuchawki, to wyłapiesz takie trzaski i piski od razu bez wsłuchiwania. Ja mam koss ksc75.
    Pozdrawiam
  • #41
    mirekk36
    Level 42  
    No widzę, że kolega ma wiedzę w tym zakresie i fajnie. I nie myśl że ignoruję twoje uwagi. Poza tym masz rację, że tak typowo do słuchania muzyki to się nie nadaje. Ja wcale nie próbuję nawet tego komuś wmawiać. I jeszcze raz powtórzę , że to dla mnie nie są bliskie tematy (te filtry itp) dlatego nie jestem w stanie się tym zająć ale wierzę ci, że takie czy inne zakłócenia są tam w tle.

    Tylko dodam na koniec po raz kolejny - to nie jest projekt, który ma na celu zastąpienie popularnych MP-trójek ;) dlatego ten dźwięk taki jaki jest zdecydowanej większości użytkowników wystarczy. Wbrew pozorom nie wszyscy są tak czuli na te szumy czy jakieś tam takieś zakłócenia ;)
  • #42
    mirekk36
    Level 42  
    odrzyw wrote:
    A co trzeba by zmienić oprócz kodu aby to urządzenie odtwarzało popularne mp3 ?


    Są takie scalaczki fajne, chociaż wcale nie tanie (tu masz rodzinkę tych scalaczków Link) , które dokonują dekodowania MP3 i można nimi sterować z AVR'ka. Wtedy można sobie zrobić pełny własny odtwarzacz MP3 ;) .... niestety na procku AVR jest to nieosiągalne, gdyż nie wystarczy czasu do dekodowania plików mp3 "w locie".
  • #43
    jankomuzykant
    Level 14  
    Badmaneq wrote:
    Z powodu braku miejsca częstotliowśc wav'ów ustawiona jest na 8kHz, ponieważ znane mi programy nie pozwoliły przekonwertować poniżej 8kHz. Chyba będę musiał sam napisać program, który pozwoli przekroczyć tą magiczną granice. Z koleji nasuwa się pytanie czy warto, bo przy ilu Hz sample stają zrozumiałem ?

    CoolEdit da radę, Audacity chyba też, możesz też zrobić podwójną konwersję bez powiadamiania programu o częstotliwości.
    Trudno rzec, jaka częstotliwość jest minimalną, przy sprawnej obróbce (kompresja dynamiki, silna preemfaza) można zejść do 6kHz i niżej. Należy tylko zadbać o sprzętową deemfazę.
  • #44
    Soker
    Level 12  
    Projekt super. Już widzę dla niego zastosowanie w systemach alarmowych. Czy byłaby możliwość dorobienia aby oprócz przycisku NEXT miał np 3 dodatkowe przyciski którymi odtwarzałoby się odpowiednie komunikaty? Przycisk 1 - komunikat 1, przycisk 2 - komunikat 2 itd. Czekam na ewentualną wersję hexa (może chociaż specjalnie dla mnie:) ), domyślam się że kod źródłowy jest cenny:D
  • #45
    mirekk36
    Level 42  
    Soker wrote:
    uż widzę dla niego zastosowanie w systemach alarmowych. Czy byłaby możliwość dorobienia aby oprócz przycisku NEXT miał np 3 dodatkowe przyciski którymi ....


    To się dopiero składa ;) ..... heh ja głównie w takich celach tworzę tego typu układ. A docelowo sterowanie będzie możliwe nie tylko przez przyciski (dowolną ilość) ale i za pomocą sterowania przez RS232/USB czy Ethernet lub Bluetooth :)
  • #46
    zippy
    Level 12  
    Rozumiem ze ze względu na to ze będzie to zastosowanie komercyjne nie ma szans na kod programu?
  • #47
    Led156
    Level 16  
    W 1 poście masz hexa.
    Pozdrawiam:)
  • #48
    zippy
    Level 12  
    Z hexa się nic nie nauczę bo trochę ciężko czyta mi się kod maszynowy.
    Za to C dużo lepiej czytam i mogę zobaczyć jak to jest zrobione.
  • #51
    mirekk36
    Level 42  
    miszczo997 wrote:
    ... a o ile się orientuję petit nie obsłuży kart hc.


    Pisałem wcześniej, że dam znać jak będę miał w ręku kartę SDHC. I tak się stało, wpadła mi w ręce właśnie karta SDHC 4GB ;) .... jak myślicie działa czy nie z PetitFat?

    Oczywiście, że spokojnie PetifFat ją obsługuje, więc coś kolega źle słyszał. Więc to chyba dobra informacja.
  • #52
    marcin44430
    Level 16  
    Witam.
    Czy autor mógłby skompilować program pod Atmege8 bez tego wskaźnika wysterowania.
  • #53
    mirekk36
    Level 42  
    marcin44430 wrote:
    Witam.
    Czy autor mógłby skompilować program pod Atmege8 bez tego wskaźnika wysterowania.


    Na razie nie mam czasu i możliwości, ale wkrótce jak się ze wszystkim już uporam, to także wszyscy będą mieli możliwość obejrzenia szczegółowych kodów źródłowych wraz z objaśnieniami co i jak - więc każdy będzie mógł sobie sam coś takiego zrobić i wykorzystywać do woli ;)


    I jeszcze jedno - ostatni już test odtwarzanego dźwięku. Zwiększyłem kwarc do 20MHz. Zrobiłem jeszcze optymalizację różnych fragmentów programu i zniknęły takie tam jakieś pstryknięcia w tle. Muzyka jest tak idealnie odtwarzana (jak na moje ucho), że ku mojemu zdziwieniu to można jednak spokojnie używać czegoś takiego jako alternatywy dla MP3-ki spokojnie.

    w załączniku spakowany plik mp3, z nagranymi samplami po kilka sekund różnych tam jakichś piosenek no i na końcu jeszcze raz też fragment mojego gadania. No słychać extra ;) Przyznam, że aż na takie efekty to nie liczyłem jak się za to zabierałem a tu proszę.
  • #54
    zaxoniec
    Level 14  
    Witam, zlozylem, Atmega 32, kwarc 16 mhz, wsad z pierwszego postu, niestety gra pierwsze 20-40 sekund a potem sie zawiesza, pojawiaja sie losowe znaczki na wyswietlaczu i koniec. Any idea?
  • #55
    mirekk36
    Level 42  
    No już ktoś wyżej też pisał o podobnym błędzie, nie wiem czym to może być spowodowane ale jeszcze nie wrzucałem nowego HEX'a. Jak wszystko ogarnę to wtedy postaram się wrzucić nowego HEXA i może uda się poprawić ten błąd.

    Ale generalnie jak gra to wszystko OK ? ;)

    Dodano po 59 [minuty]:

    Przy okazji walczę teraz z kilkoma prostymi efektami nad obróbką dźwięku ;) np prosta zmiana głosu. Nie polega to wbrew pozorom na prostej zmianie częstotliwości samplowania ... . Jak mówię efekty proste ale dość ciekawe i co ważne można będzie ich użyć tak on Line do np zmiany przesyłanego głosu - nad tym jeszcze popracuję.

    W przykładowym filmiku, cztery różne osoby czytają ten sam tekst. Najpierw słychać każdą osobę normalnie a później są włączane różne efekty ;) posłuchajcie.

  • #56
    djbpm
    Level 22  
    No jest lepiej, poziom szumu spadł o ponad 20dB, ale pisk jest nadal, chodź inny niż w poprzednich próbkach. Częstotliwość 4885hz, sygnał wygląda na prostokątny.
    Pozostało też odwrócone widmo powyżej połowy częstotliwości próbkowania 11025, ale jego się nie da skutecznie usunąć stosując analogowe filtry. (można tylko trochę poprawiać).
    Można jeszcze pokombinować, i zrobić przetwornik składający się częściowo z pwm, a częściowo z R2R, np 4bit R2R+8bit PWM, ew. zmniejszyć pwm do 6-7 bit, tak aby 44,1 khz się dało uzyskać, i dołożyć po 4 bity na kanał z R2R.
    Najlepiej to użyć mikrokontrolera który się do tego nadaje, czyli ma wbudowany DAC. Np w niektóre ATXMega mają DAC 12bit, czy w STM32F100C4 także jest ten podwójny 12bitowy DAC, a ten STM kosztuje około 7,5zł, więc warto się zastanowić nad zapoznaniem z nimi, a może i przesiadką z avr.

    Te efekty to ciekawa sprawa, napisz coś więcej o tych efektach, jakiś przykładowy kod samego efektu, ew. link jakiś.
    Pozdrawiam!
  • #57
    sylwek_b86

    Level 15  
    Witam, projekt rewelacja!!! Mam pytanie, czy projektant miałby coś przeciwko gdybym wykorzystał ten projekt do mojego robota edukacyjnego na prace inżynierską?
  • #58
    michal-michalik
    Level 23  
    sylwek_b86 wrote:
    Witam, projekt rewelacja!!! Mam pytanie, czy projektant miałby coś przeciwko gdybym wykorzystał ten projekt do mojego robota edukacyjnego na prace inżynierską?


    Nie jestem autorem, ale jak zaznaczysz skąd i kto zaprojektował to myślę, że autor po to umieszcza tutaj swoje projekty.

    Tylko pisząc pracę magisterską mógłbyś zaatakować sam taki moduł. Wszelkie informacje masz w tym wątku...
  • #59
    mirekk36
    Level 42  
    djbpm --> matko! ciekawy jestem czy ty jeszcze słyszysz te sygnały o jakich piszesz czy widzisz to w jakimś programie do analizy dźwięku, po rozebraniu go na części składowe ??? ;)

    Normalnie aż zazdroszczę nieraz takim ludziom jak ty, jeśli to słyszysz własnym uchem ;) bo to oznacza, że na moje uszy jakiś tęższy słoń nadepnął .... ale dzięki za uwagi, będę jeszcze walczył dalej.

    Z drugiej strony jak starczy czasu to jeszcze pobawię się ew z tą drabinką ;) zobaczę

    DAC'a nie będę kupował bo jeszcze raz mówię, że to zniszczy moją minimalistyczną koncepcję. I wcale nie chodzi o minimalistyczną wersję kosztów zaznaczam. Koszty się nie liczą ;) albo może powiem inaczej, mają najmniejszą wagę.

    Natomiast na pewno nie przesiądę się z AVR w tym przypadku bo to łatwizna by była zrobić to na ARM'ie ... a mi nie o to chodzi, lubię czasem dla sportu wyciskać ostatnie poty z 8-bitowców. Jak widać można sporo zrobić.

    Pytałeś o efekty. Już mówię. Otóż najpierw pooglądałem sobie różne efekty jakie można zrobić z dźwiękiem w programach dedykowanych do tego na PC, np we wspomnianym już wcześniej Nero Wave Editor. Spoglądając na nazwy różnych efektów a szczególnie na nazwy parametrów jakie są dostępne dla każdego z nich wpadłem na pomysł aby próbować dokonywać zmian na danych w buforach pamięci po odczycie z karty SD a jeszcze przed albo w trakcie odtwarzania. Szczerze mówiąc to najpierw chciałem uzyskać efekt jakby zmniejszenia prędkości samplowania ale bez zmiany fizycznej SAMPLERATE. W tym celu wystarczyło odtwarzać co którąś próbkę a pewne z nich zapamiętywane są w zmiennych, i gdy następuje czas aby odtwarzać np co drugą próbkę to ja odtwarzam tak jakby tę która była poprzednio. Albo np odtwarzam co 4 próbkę czyli taki jakby przeplot a pomiędzy nie wstawiam powtórzenia. Przy samplowaniu 22kHz jeszcze mam troszkę czasu na takie tam drobne bajerki i to nie sięgając jeszcze po wstawki w asemblerze.

    ALE UDAŁO SIĘ w czystym C - dokonać odtwarzania z max samplerate czyli 44,1kHz !!!! Niedługo przedstawię próbki dźwiękowe z tego. Tyle, że już muszę przetaktować procka do co najmniej 25MHz no i SPI do karty pamięci popędzać na 12,5MHz ;) Muszę także wtedy zrezygnować z wyświetlania bieżącego czasu trwania utworu czy obsługi wskaźnika wysterowania. Działa tylko klawisz przełączania na kolejny utwór.

    Czyli coraz lepsze efekty ;)

    Dodano po 4 [minuty]:

    sylwek_b86 wrote:
    Witam, projekt rewelacja!!! Mam pytanie, czy projektant miałby coś przeciwko gdybym wykorzystał ten projekt do mojego robota edukacyjnego na prace inżynierską?


    Ok tylko weź pod uwagę, że zaprezentowana tu wersja wsadu ma chyba jakiegoś jeszcze babolka małego, bo niektóre osoby pisały, że się zawiesza po iluś tam sekundach prawidłowego odtwarzania. Więc będzie trzeba poczekać na jakąś ostateczną wersję wsadu jak coś.
  • #60
    sylwek_b86

    Level 15  
    fajnie, przydała by się możliwość sterowania przez rs-a w jakiś prosty sposób.;)