TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Agustina en 09 de Abril de 2008, 20:04:29

Título: Sonido en el PIC
Publicado por: Agustina en 09 de Abril de 2008, 20:04:29
Alguien ha utilizado el metodo de BTC para reproducir sonidos con el pic? Los ejemplos que da el autor son de assembler (que para mi es chino).

He usado los integrados de ISD que andan muy bien, pero aqui estos integrados NO SE CONSIGUEN MAS... y si se consiguen salen mas de el doble que un pic de 18F.... que para hacer un pequeño sonido no se justifica para nada...

Para los que no esten familiarizados con el algoritmo BTC les dejo el link.

http://www.romanblack.com/picsound.htm

Saludos!! :g)
Título: Re: Sonido en el PIC
Publicado por: manutek en 09 de Abril de 2008, 22:18:49
Hola linda, la versión 2 del programa lo deja en forma de una tabla, los valores de retorno van de arriba y hacia abajo y tendrías que hacer un registro de desplazamiento Con cada valor de la tabla, por mi parte no savia de este programita, muy útil, me voy a poner a desarrollarlo con un PIC, si te interesa luego te lo pongo en c hi-tech :mrgreen:
Título: Re: Sonido en el PIC
Publicado por: micro_cadaver en 10 de Abril de 2008, 01:15:06
yo lo utulice pero el sonido no me salio muy bueno que digamos, supongo que seria porque no le implemente filtrados ni nada por el estilo, era una alarmita que emitia el sonido de tarzan jajajaj  :mrgreen:
Título: Re: Sonido en el PIC
Publicado por: Agustina en 10 de Abril de 2008, 01:54:46
jajaaaaa!!! de tarzan!!! muy original jaja, lo hiciste en CCS? esoty buscando algun ejemplito, si tienes algo te lo agradeceria mucho!.

Creo que voy a implementarlo con eeprom 24lc32 y una salida con filtro RC como esta en la pagina del algoritmo BTC. No necesito de gran calidad asique creo que iria bien.

Lo que todavia no he aprendido es como grabar los datos directamente en la eeprom usando el GTP-USB por ejemplo

saludos! gracias por la ayuda :g)
Título: Re: Sonido en el PIC
Publicado por: Nocturno en 10 de Abril de 2008, 03:03:22
Es bien sencillo. Abres Winpic800, seleccionas tu memoria en los desplegables, escribes (o abres fichero) el contenido que quieres programar, colocas el chip en el zócalo en su postura (puedes verlo con Ctrl-Alt-Z) y le das al botón de Programar.
Título: Re: Sonido en el PIC
Publicado por: Agustina en 10 de Abril de 2008, 04:07:21
Gracias nocturno! ahora voy a ver si me sale
Título: Re: Sonido en el PIC
Publicado por: micro_cadaver en 10 de Abril de 2008, 15:01:02
mmm  sugiero que agregues esa parte del codigo en ASM dentro del CCS con los #asm y #endasm, pues el codigo del btc es muy exacto y el compilador puede insertar algunos comandos extras. saludos.
Título: Re: Sonido en el PIC
Publicado por: Agustina en 11 de Abril de 2008, 20:14:31
Lo que pasa es que el programa genera una tabla con los bytes dependiendo la duracion del sonido y por lo general nunca entra dentro de la eeprom del pic. Por lo que creo que hay que guardar los datos en una memoria externe e ir leyendo de a uno los bytes para reproducir el sonido.

Por ejemplo... un sonido de 1 segundo ocupa unos 545 bytes. Planeo reproducirlo con un F88 que tiene solo 256 bytes en la eeprom.

Título: Re: Sonido en el PIC
Publicado por: manutek en 12 de Abril de 2008, 01:39:42
bue,eso si, para eso abria que realizar un programita en VB manejando caracteres que los sacaria del asm o el C que genera el programita y luego concatenarlo para ponerlo en una memoria
Título: Re: Sonido en el PIC
Publicado por: Agustina en 14 de Abril de 2008, 23:23:44
Micro_cadaver, podrias postear el codigo de tu alarma de tarzan? he estado probando (y mucho) y no puedo hacer que reproduzca sonidos decentemente... solo ruido.
Esoty usando un 16F88 con una memoria 24LC32. Esta la cargo con un hex donde esta el sonido genrado por el programa de Roman Black.  Pero solo escucho ruido  :?


gracias!
Título: Re: Sonido en el PIC
Publicado por: micro_cadaver en 15 de Abril de 2008, 01:17:01
ok agustina, pero dejame buscarlo porque lo hice hace años antes de conocer el ISD. saludos :-/
Título: Re: Sonido en el PIC
Publicado por: Agustina en 15 de Abril de 2008, 03:30:24
Muchas gracias micro_cadaver.  He estado PELEANDO todo el fin de semana con esto y no logro hacerlo bien. Ya no se si es el harware o software. Cargo distintos sonidos para probar y al parecer reproduce "algo" distinto cuando cambio el sonido guardado en la eeprom... pero no se entiende.

Muchas gracias! :mrgreen:
Título: Re: Sonido en el PIC
Publicado por: Agustina en 16 de Abril de 2008, 01:59:42
esta es la rutina que uso actualmente... no se ya que hacer  :( porque no puedo hacerlo andar!  :x :x :x


Código: [Seleccionar]
void audio_out()
{
indice=0;

while(indice!=4096)
   {
   
   dato_memoria=read_ext_eeprom(indice);
   
   
   bit_dato=bit_test(dato_memoria,0);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
   
   bit_dato=bit_test(dato_memoria,1);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
   
   bit_dato=bit_test(dato_memoria,2);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
   
   bit_dato=bit_test(dato_memoria,3);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
   
   bit_dato=bit_test(dato_memoria,4);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
   
   bit_dato=bit_test(dato_memoria,5);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
   
   bit_dato=bit_test(dato_memoria,6);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
   
   bit_dato=bit_test(dato_memoria,7);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
   
   indice++;
   }     
     
     


return;
Título: Re: Sonido en el PIC
Publicado por: Agustina en 16 de Abril de 2008, 02:37:32
otra vez yo  :P

el programa de Roman Black graba los datos desde el MSB al LSB... y los estaba reproduciendo desde el LSB al MSB jejeje  :mrgreen:


Gracias por todo! Si quieren seguir aportando sera bienvenido! ahora esoty tratando de mejorar la calidad del sonido ya que se escucha permanentemente un "silvido" bastante molesto...
Título: Re: Sonido en el PIC
Publicado por: micro_cadaver en 16 de Abril de 2008, 16:26:04
hola, uff menos mal te salio porque no encontraba el codigo que hice  :mrgreen: , hasta ahi llegue con el ruido molesto, intenta ponerle filtros.
Título: Re: Sonido en el PIC
Publicado por: lobomalo en 27 de Enero de 2013, 13:14:09
esta es la rutina que uso actualmente... no se ya que hacer  :( porque no puedo hacerlo andar!  :x :x :x


Código: [Seleccionar]
void audio_out()
{
indice=0;

while(indice!=4096)
   {
  
   dato_memoria=read_ext_eeprom(indice);
    
  
   bit_dato=bit_test(dato_memoria,0);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
  
   bit_dato=bit_test(dato_memoria,1);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
  
   bit_dato=bit_test(dato_memoria,2);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
  
   bit_dato=bit_test(dato_memoria,3);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
  
   bit_dato=bit_test(dato_memoria,4);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
  
   bit_dato=bit_test(dato_memoria,5);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
  
   bit_dato=bit_test(dato_memoria,6);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
  
   bit_dato=bit_test(dato_memoria,7);
   output_bit(PIN_B1, bit_dato);
   delay_us(14);
  
   indice++;
   }    
      
      


return;

Hola Agustina si fueras tan amable de poder postear el codigo de tu programa, lo que necesito hacer es emitir un sonido de alerta como por ejemplo "compresor parado" es por eso que necesito tu codigo porfa