Re: Dzwięk z ATmega+SD - prośba o oszacowanie

May 03, 2007 Last reply: 19 years ago 6 Replies

olej system plikow sformatuj karte i wrzuc calego wave po kolei jesli bedzie to jedyny plik lub jesli bedziesz je nagrywal po kolei, to sie ustawia jeden za drugim, i mozesz je spokojnie odczytac, pomijajac naglowek i wyslac na DAC jesli chodzi o FAT, to jest troche implementacji na sieci, nie sadze zeby przy tej predkosci odczytu specjalnie obciazaly procesor - odczytujesz i tak blokami do pamieci, a potem w przerwaniu wysylasz na DACa...Tak wiec z funkcji FAT korzytasz tylko przy adresowaniu nowego bloku do odczytu. Mozesz sobie uproscic zadanie i jesli jestes pewien ze pliki byly wrzucane po kolei to uzyc funkcj iFAT tylko do odnalezienia poczatku zadanego pliku. W przypadku pamieci o duuzej pojemnosci moze pojawic sie inny problem, a mianowicie ze od nowosci takowa moze posiadac uskodzone sektory..



To jedna z opcji. Komplikuje ona jednak życie przy składaniu komunikatów głosowych. Chodzi o to, że komunikaty będą tworzone przez usera końcowego. Najlepsza opcja to wepchanie tam zwyklych plików. Jesli się na razie nie uda to po prostu podziele kartę na sekcje i napiszę program narzędziowy jednak to marne rozwiązanie.

To nie problem, ja się boje, że są takie "chwile" w działaniu fs gdzie potrzeba dośc sporo się napracować aby odczytać nastepny cluster. I może się nie wyrobić mi procedura, tzn nie dostarczyć danych na czas i będzie dziura.

No właśnie, to jest krytyczny moment.

Nie przypuszczam żebym przekroczył 32MB.

Ja mam zamiar zrobić to tak: MMC, SRAM 64KB, DAC TLC7524CN (DAC+rejestr zatrzaskowy)

Licznik generuje przerwanie 8000 razy na sekundę (więcej mi nie trzeba). Co przerwanie wysyłam bajt na DAC z tablicy. Tablica może być cykliczna + zmienna aktualna pozycja + koniec nagrania(by wiedział gdzie się zatrzymać) Poza przerwaniem wczytuje słowa po zakończeniu odtwarzania poprzedniego, lub na bierząco uzupełniam bufor jeśli muzyka ma być ciągła.

W duzym uproszczeniu będzie wyglądać to tak. Dopiero zabieram się do tago, więc doswiadczeniami nie mam możliwości się jeszcze podzielić.

Pozdrawiam

Hmmm u mnie podobnie kombinuje ale problem jest z wypełnianiem tej tablicy. Jeśli masz ciągłą strukturę danych w pamięci to nie ma problemu. Gorzej jak chcesz mieć fs bez defragmentacji gdzie co chwile trzeba zmieniać adres klastra. Nie wiem na ile w tym miejscu dostanę w plecy czasowo.

Spinacz biurowy, Sebastian Bialy snipped-for-privacy@poczta.onet.pl>!

Podwójne buforowanie powinno załatwić.

  1. Wczytujesz dwa bufory.
  2. W przerwaniu wysyłasz.
  3. Jeżeli bufor się skończy to zaczynasz grać z drugiego i ustawiasz flagę, co by sobie główna pętla doczytała dane do wyczerpanego bufora.

Spinacz biurowy, "Piotr \"PitLab\" Laskowski" snipped-for-privacy@pulapka.wp.pl>!

Zakładając 44100 Hz i 8 bitów, będzie niecałe 12 MHz, więc powinno się niby dać... Ale już przy 10 bitach będzie 4x większa częstotliwość... Słabo to widzę. Albo jakość albo prostota.

Sebastian Bialy snipped-for-privacy@poczta.onet.pl> napisał(a):

możesz pójść na łatwiznę... Po wykryciu zmiany karty defragmentuj ją.

32MB to nie będą wieki, pesymistycznie minutka, a komunikatów nie zmienia się co wczoraj, nie?

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required