poisé jusé..rs
Intãozio.
To acabando o projetinho, de um tipo de sintetizador de audio, onde vou usar uma flash pararela, com endereços mapeados com os waves, onde podera executar até 8 sons simultaneos.
Só tem um problema.
Os sons são em 16 bits, formado 32768...-32767..
Para eu fazer a multiplexação digitalmente, seria somas consecutivas de 16 bits.
Tipo.
+28635
+
-16725
+
-852
+
+28732
.............
Porque isto ?
No audio digital a logica de tensão funfa assim.
0 esta para 1/2 da tensão de trabalho
+32768 esta para maxima tensão de trabalho
-32767 esta para minima tensão de trabalho "GND"
Se voce simplesmente somar os 16bits, haveria estouro continumente, o que na verdade não é o que acontece.
Monte um amplificador somador com amp/op no seu simulador, tensões de trabalho entre 0 e 5 V, vai variando elas e vendo a resultante... !!
Agora imagina o seguinte.
X,Y,Z : word;
y := 45768
z := 32852
X := Y + Z..!!
Dependendo do compilador ele guarda em uma var real e pega o MSB, na maioria dos compiladores ele pega a diferença do estouro.
X := 45768 + 32852
X := 78620
X := (78620)-65535
X:= 13085
Resultado valores incoerentes com a realidade.
Para o pic mesmo em 40 mips, fazer essas somas usando liby do mikropascal ele perde muitissimo tempo, sendo assim o tempo de entrada dos valores + tempo de somas + envio via SPI para o DAC, estoura em muito o tempo maximo para eu conseguir miseros 22050 KSPS.
Tentei fazer de uma forma que o pirex me passou ficou uma bosta, simplesmente o som sai louco..
Se tivesse uma forma de fazer estas somas muitissisiiisisimo rapido daria pra fazer sem usar DAC´s diferentes.
Ta druris.
Braços
Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!