Página 1 de 1

DA de 16bits para fazer um tocador wave

MensagemEnviado: 13 Mai 2010 11:08
por cristian
achei numa palca aqui um ci de DA de 16bits e queria saber qual a real situaçao para se fazer um tocador de wave lendo o cartao SD ode estara as musicas

tipo assim

PIC ler cartao SD ---> manda para o ci q faz a conversao ...este ci tem um sample rate de ate 44khz

ja fiz o pic falar com 8khz e PWM queria ir mais longe ter uma qualidade melhor

estou usando o pic18f252 com 25mhz

e ai da certo ...lenbrando q o pic vai fazer varias outras coisas

MensagemEnviado: 13 Mai 2010 11:40
por fabim
o Proex. me explicou uma vez. hehe

Que o MP3 é um formato de audio codificado, e comprimido. Onde são separadas varias bandas de audio, e jogada em tabelas XY. onde hoffman explica.
O problema é que um pic, pelo seuclock e emulaçao de palavra de 16 e 32 bits, perde um tempo enorme pra poder dar os resultados.

O mesmo é diferente para um processador de 32 bits, e de pelo menos uns 30mips reais!!..
Haja visto, que nao é um 2368 ou sei lá o que da NXP que vai conseguir..
Dias atras vi um projeto com um stelaris decodificando audio MP3-1,2,4"MP4".. ele tem 28 DMIPS e roda a 68mhz maximo..


MP3 é em base de header + N bytes, que compreendem frame de audio de 10mS..
Ele foi criado para tal fim, de não ser perder, e ter um tamanho bem reduzido.

MensagemEnviado: 13 Mai 2010 11:56
por cristian
ah nemme toquei q coloquei MP3 estava falando de wave nao para musicas mas para frases tipo telefonista...secretaria eletronica


e ai tem como tocar a 44khz ou pelo menos 22khz

MensagemEnviado: 13 Mai 2010 11:59
por proex
Bá, isso é moleza então com PIC.

.

MensagemEnviado: 13 Mai 2010 14:42
por cristian
alguem poderia me dar uma direçao

ja tenho :

pic lendo arquivo wave a 8khz e mandando por pwm para um filtro simples
isso a 8 bits mono


agora quero a 22khz 16bits mono

entao o pic le o valor do sd a cada 125us e manda para o pwm

agora tem q ser 45.4us e mandar por serial .... vai dar tempo ?

MensagemEnviado: 13 Mai 2010 22:37
por Guri
caro cristian,


eu acho que é por isso que inventaram o I2S via hardware, dá uma olhada no dspic4013, ele tem esse driver interno, justamente para comandar um dac de audio...

eu acho melhor vc partir para um dspic com esse tipo de driver embutido, audio e video são coisas que exigem muita velocidade...entendeu,

MensagemEnviado: 05 Jun 2010 08:29
por Mersin
Oi Cristian,

Penso que tem jeito sim, porém, não tenho experiência em leitura de dados em cartão SD, mas tenho experiência em DA e SOM.

Você está usando um DA serial? qual o modelo? se for paralelo, pode utilizar de Shift Registers para montar o byte 16 bits e colocar no DA, se for serial, basta ler o Byte 16 bits e enviar bit-a-bit para ele.

Você tem esquema elétrico? quer ajuda no código?

Coloco-me a disposição para ajudar a desenvolver.

Grato!

MensagemEnviado: 05 Jun 2010 23:08
por cristian
sim preciso de ajuda ....


ja sei ler SD e o DA é serial


agora nao tenho mais detalhes mas amanha eu te passoo os dados

MensagemEnviado: 06 Jun 2010 03:28
por ivan braga
Olá cristian.

Quando estive tentando algo parecido com o que você precisa, me deparei com o seguinte problema.

A medida que a quantidade de arquivos ia crescendo dentro do cartão SD, este utilizando tanto o sitema fat32 como o fat16 começava a dar problema de sincronismo, pois fazia com que fosse necessario mais tempo para atualizar a lista de arquivos.

Não sei qual biblioteca você está usando, quando eu tentei usei a do CCS e foi com ele que tive este problema. Acho que implementando um buffer circular daria para resolver, mais não testei.

Solução. Gravei o que queria em setores específicos do cartão, e quando preciso leio direto sem usar as funções fat.

O camarada deste site tem uma ideia interessante para reprodução de uma wave a 16bits usando 2 pinos PWM, não testei por falta de tempo, mais acho que funciona. Se puder testa e dá um retorno.

http://www.k9spud.com/traxmod/pwmdac.php

Espero que ajude.

Ivan Braga

MensagemEnviado: 06 Jun 2010 19:03
por cristian
estou usando a lib do mikroc ... acho ela bem rapida