Sida 1 av 2
Spela ljud från SD-kort med AVR och DAC
Postat: 7 maj 2009, 15:45:14
av adent
Har börjat med ett litet projekt, slutmålet är lite hemligt, eller nått.
Men den grundläggande funktionen ska bli att kunna spela ljud från SD-kort.
16 bitars Wav-filer i mono närmare bestämt.
Än så länge har jag lyckats koppla ihop en AVR ATmega168 (16K flash, 1K RAM och 20MHz kristall) med ett SD-kort och en 8-bitars parallel DAC.
Den klarar nu att spela 8 bitars Wav-filer i mono.
Jag fixar ljuduppspelningen med dubbelbuffring. Fyller en buffer från SD-kortet medan den andra används för spelning. Kod för hantering av SD-kort (SPI) och filsystemet körs i ett huvudprogram och uppspelningen av ljud sköts via ett timer-interrupt som kommer 44100 ggr/sek.
Dock är jag rädd för att hastigheten mot SD-kortet inte räcker till för att läsa mycket mer än jag gör nu. Men jag ska prova med en större AVR med 2K RAM istället, så jag kan ha
mycket större buffrar än tidigare (Bara filsystemet nödvändig stack snor ca 600 bytes)
Ett annat problem är att en seriell DAC kräver att jag klockar ut 16 bitar till den, en i taget, detta kommer behöva göras i interruptet och kommer då att sno mer tid ifrån huvudprogrammets läsning från SD-kort. Men det återstår att se hur dessa faktorer påverkar i verkligheten.
Återkommer med bilder och mer info. Tips på bra och billig kombination av 16 bits (gärna mono) DAC och headphone-förstärkare mottages tacksamt.
Re: Spela ljud från SD-kort med AVR och DAC
Postat: 7 maj 2009, 16:21:15
av Norpan
Går det inte att använda spi intefacet till att klocka ut till din dac? Isåfall kan du bli av med bitarna åtta åt gången för processorns del.
Re: Spela ljud från SD-kort med AVR och DAC
Postat: 7 maj 2009, 16:42:09
av limpan4all
Byt processor, den du valt är helt enkelt i klenaste laget för det du vill göra.
Tag en NXP LPC2368 så har du mer än vad du behöver och support för I2S mot DAC (med DMA stöd).
Re: Spela ljud från SD-kort med AVR och DAC
Postat: 7 maj 2009, 16:56:38
av Micke_s
Tror också processorn är i klenaste laget.
Gå ner i samplehastighet annars.
Ett annat sätt som möjligtvis kan fungera är att binda sdkortet out till dac:ens in.
Då behöver du bara styra cs för hoppa över data token och crc på varje paket. Kör du i högre hastighet än vad som krävs så borde du kunna få data token och crc att vara ljudlös.
http://elm-chan.org/docs/mmc/mmc_e.html
och kommando cmd18.
Edit: Alla delar av filen måste ligga sekvensiellt och du måste klocka så du hinner läsa 4byte i 44100 tempo = 176400 hz
176400 är helt möjlig med avr.
edit2: kan gå om dac:en har vettigt interface...
Re: Spela ljud från SD-kort med AVR och DAC
Postat: 8 maj 2009, 20:17:16
av docksider
Annars kan du ju tillägna ett par portar på den och bygga en 16b DA med motstånd. Går ruskigt fort då ju
Re: Spela ljud från SD-kort med AVR och DAC
Postat: 9 maj 2009, 13:17:17
av adent
Här kommer en bild iaf, kretsen längst till vänster under sladdarna är AVR:en, den till höger är DAC:en och den nere till höger är en op-amp som inte används just nu.
Bild på uppkopplingen.
docksider: Det ska helst vara bra ljud, men visst funkar det!
limpan4all: Micke_s: Men AVR:erna är min gyllene hammare!

Näe, men det är ju roligare om det går med den, jag tror det ska gå.
Lite baserat på denna:
http://elm-chan.org/fsw/ff/img/rwtest.png
Norpan: Den inbyggda SPI:n används ju till SD-kortet, så jag vet inte riktigt, kan ju switcha mellan men...
MVH: Mikael
[EDIT: fixade länken till bilden]
--------------------
Max 700 pixlar i bredd på bilder!
Jag gjorde om den trevliga bilden (med 1024 pixlar i bredd) till en tråkig länk...
//Jimmy
--------------------
Re: Spela ljud från SD-kort med AVR och DAC
Postat: 9 maj 2009, 13:41:37
av Norpan
Det ser ut som man kan använda usart till spi på en mega88 iallafall.
Re: Spela ljud från SD-kort med AVR och DAC
Postat: 9 maj 2009, 13:50:45
av adent
norpan: Jo, jag var inne på något sådant, ska prova det när jag får tag i seriell dac.
Re: Spela ljud från SD-kort med AVR och DAC
Postat: 11 maj 2009, 13:55:08
av limpan4all
Jo som hammare duger den ju....
Skämt åsido, jag använder också MEGA168 rätt mycket, men jag håller mig med skohornsprincipen.
OM det "kanske" går in med skohorn så tar jag en större processor redan från börja, det är inte värt jobbet att få in i den mindre minnesfootprinten.
Skillnaderna i pris mellan processorerna är ju bara runt 50:- och skillnaden i jobb att få till det kan ju röra sig om 20-200 timmar...
Re: Spela ljud från SD-kort med AVR och DAC
Postat: 11 maj 2009, 13:57:08
av docksider
men om det skall produceras 10 000 enheter så är 200 timmar inte jättemycket
Re: Spela ljud från SD-kort med AVR och DAC
Postat: 11 maj 2009, 14:23:21
av Stinrew
Men, ta och använd den nya ATmega328. Har ju dubbelt upp av alla minnena (32K-flash, 1K-EEPROM och 2K-SRAM). Lawicel tar 36+m. i förhållande till ATmega168 29+m. Det är ju exakt samma plattform och pinout/footprint.
Re: Spela ljud från SD-kort med AVR och DAC
Postat: 11 maj 2009, 14:58:42
av limpan4all
Skall den produceras i 10k kvantiteter så stämmer det absolut.
Fast jag gör en del saker som varit planerade för <50st per år.
Sen när allt är testat och godkänt och produktion kommit igång så har kunderna köpt mer än väntat.
Så det har legat snarare runt 100-250 per år då kan man ju fundera över två saker.
Konstruera om och testa om med en mindre/billigare CPU och tjäna kanske 35:- ytterligare per sålt exemplar (ca 5% mer).
Eller vara lycklig över den större försäljningen och le hela vägen till banken, samt lägga sin tid på nya produkter istället...
"Time to market" är så gott som alltid viktigare än låg produktionskostnad, och att åka på att byta CPU redan innan produkten kommit ut på marknaden för att man valt en för liten är förödande på alla sätt, inte minst internt (psykologiskt, "politiskt", goodwill, mm).
Men jag fick intrycket att det här var det snarare frågan om <10st och då gör det desto större skillnad...
Re: Spela ljud från SD-kort med AVR och DAC
Postat: 11 maj 2009, 15:26:14
av Micke_s
Du har ju Xmega om inte annat.
Edit: har en 12bitars dac också.
Re: Spela ljud från SD-kort med AVR och DAC
Postat: 25 juni 2009, 16:29:38
av adent
Hmmm, kan nån tipsa om en bra 16 bitars mono/stereo-DAC (seriell eller parallell) med matchande hörlursförstärkare? Skulle jag uppskatta mycket, helst inte för dyr heller. Typ kvalitet som för en mp3-spelare ungefär.
Re: Spela ljud från SD-kort med AVR och DAC
Postat: 15 april 2010, 14:19:49
av adent
Planen nu är att använda en färdig mp3/wav/ogg-spelar-krets med inbyggd headphone-förstärkare. VS1011 eller 1002 eller vad de hette.
Blir nog klart mest mångsidigt och inte så dyrt. Bör gå att driva den med en AVR utan problem.