TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jlsancho en 17 de Septiembre de 2007, 14:22:52

Título: TDA7449
Publicado por: jlsancho en 17 de Septiembre de 2007, 14:22:52
Hola a todos,
estoy intentando controlar y monitorizar una etapa de potencia con el integrado TDA7449 de ST. Es un integrado de control de tonos y ganancia mediante bus I2C. ¿Alguien ha trabajado con él?. No puedo ni escribir, ni leer valores a traves de I2C. El bus funciona puesto que tengo colgado un reloj DS1307 y un E2PROM, pero el TDA ni se entera. Espero vuestra ayuda. Un saludo a todos. :-)
Título: Re: TDA7449
Publicado por: RedPic en 17 de Septiembre de 2007, 14:53:23
Jlsancho:

Si tiene algo que ver con C tu pregunta dejamos este hilo aquí en e sub-foro de C pero si es una consulta técnica sería mejor moverlo a otro lugar mas adecuado. ¿Te parece?

Un  saludo.
Título: Re: TDA7449
Publicado por: jdaniels en 17 de Septiembre de 2007, 20:48:56
jlsancho el circuito que armaste es el que recomiendan en el datasheet? porque no pegas el programa a ver si podemos hacer algo a ver...
Título: Re: TDA7449
Publicado por: Marioguillote en 17 de Septiembre de 2007, 22:47:28
Hola a todos.

Sí, realmente tenemos pocos datos para considerar el origen de la falla que puedas estar teniendo jlsancho.
También coincido con Diego que, éste hilo debiera estar el el Foro Técnico, excepto que estás seguro que tu problema se origina en el soft que has armado.

Por mi parte podría consultarte:

Bienvenido al Foro.

Saludos
Mario
Título: Re: TDA7449
Publicado por: jlsancho en 18 de Septiembre de 2007, 06:01:31
Hola a todos,
poco a poco se van aclarando las cosas. Por lo que he investigado más bien parece un problema de software. No estoy muy ducho en esto del C. Me explico. Todos los elementos del hardware funcionan OK. Tanto el pic 16f877, el DS1307, la memoria 24LC08 y el TDA7449 estan bien conectados. La cuestión es que soy capaz de enviar datos al TDA, pero cuando intento leer en los registros del trasto a traves de I2C , la señal de audio a la salida desaparece. Si reinicializo y no pido lectura de registros en el TDA todo va bien. ¿Cómo se postea el código?. Un saludo :?
Título: Re: TDA7449
Publicado por: jlsancho en 18 de Septiembre de 2007, 13:52:52
Hola a todos de nuevo,
aquí sigo peleando con este TDA. He conseguido escribir en el todos los parámetros y con el osciloscopio comprobar que me obedece, pero no he conseguido leer un sólo dato coherente. Siempre leo 255 en LCD. ¿Alguien sabe algo?
Gracias :(
Título: Re: TDA7449
Publicado por: Marioguillote en 18 de Septiembre de 2007, 17:04:55
OK jlsancho

Entonces debieras subie la parte del código con el que manejas al IC, para ver si alguien que maneje C pueda ayudarte. (Yo uso Basic, pero podría haberte ayudado en el Hard, que por lo que dices lo tienes correcto)

Para postear un código haz lo siguiente:
Escribe el código así

Entre corchetes [ ] abres con la palabra "code" y al final del listado de tu código vuelves a hacer lo mismo pero con "/code" entre corchetes [ ] (sin las comillas "")

Saludos
Mario
Título: Re: TDA7449
Publicado por: RedPic en 18 de Septiembre de 2007, 17:09:19
Ja, ja,ja  :D :D :D

Reescribo el post de Marioguillote ...

Para postear un código haz lo siguiente:
Escribe el código así

[ code ]

***AQUÍ TU LISTADO DE CÓDIGO ***

[ /code ]

Quitándole los espacios que hay a ambos lados de la palabra code entre los corchetes para que te aparezca:

Código: [Seleccionar]


***AQUÍ TU LISTADO DE CÓDIGO ***


Y para darle colores puedes probar las distintas modalidades de C's ...
(Esto lo consigues con el desplegable que pone GeSHi)  :mrgreen: :mrgreen: :mrgreen:

Con [ code=c ]

Código: C
  1. /** \brief Función que convierte un Byte (de 8 bits) a bits string ASCII.
  2.   *
  3.   * \param val Valor del Byte a convertir.
  4.   * \param[out] pF  Puntero a string_null_ended.
  5.   *
  6.   * \return void
  7.   */
  8. void int8_to_bits_string(int8 val,char* pF){
  9.  
  10.    int8 i,j;
  11.  
  12.    for(i=0,j=7;i<8;i++,j--){
  13.       pF[i]=bit_test(val,j)+'0';
  14.    }
  15.    pF[8]='\0';
  16. }

Con [ code=cpp ]

Código: C++
  1. /** \brief Función que convierte un Byte (de 8 bits) a bits string ASCII.
  2.   *
  3.   * \param val Valor del Byte a convertir.
  4.   * \param[out] pF  Puntero a string_null_ended.
  5.   *
  6.   * \return void
  7.   */
  8. void int8_to_bits_string(int8 val,char* pF){
  9.  
  10.    int8 i,j;
  11.  
  12.    for(i=0,j=7;i<8;i++,j--){
  13.       pF[i]=bit_test(val,j)+'0';
  14.    }
  15.    pF[8]='\0';
  16. }

Con [ code=csharp ]

Código: C#
  1. /** \brief Función que convierte un Byte (de 8 bits) a bits string ASCII.
  2.   *
  3.   * \param val Valor del Byte a convertir.
  4.   * \param[out] pF  Puntero a string_null_ended.
  5.   *
  6.   * \return void
  7.   */
  8. void int8_to_bits_string(int8 val,char* pF){
  9.  
  10.    int8 i,j;
  11.  
  12.    for(i=0,j=7;i<8;i++,j--){
  13.       pF[i]=bit_test(val,j)+'0';
  14.    }
  15.    pF[8]='\0';
  16. }

Con [ code=css ]

Código: CSS
  1. /** \brief Función que convierte un Byte (de 8 bits) a bits string ASCII.
  2.   *
  3.   * \param val Valor del Byte a convertir.
  4.   * \param[out] pF  Puntero a string_null_ended.
  5.   *
  6.   * \return void
  7.   */
  8. void int8_to_bits_string(int8 val,char* pF){
  9.  
  10.    int8 i,j;
  11.  
  12.    for(i=0,j=7;i<8;i++,j--){
  13.       pF[i]=bit_test(val,j)+'0';
  14.    }
  15.    pF[8]='\0';
  16. }

Título: Re: TDA7449
Publicado por: Marioguillote en 18 de Septiembre de 2007, 17:12:18
 :D  :D  :D

Gracias Diego por salvarme ! Ya no sabía cómo probar !

 :D  :D  :D

Saludos
Mario
Título: Re: TDA7449
Publicado por: jlsancho en 19 de Septiembre de 2007, 08:06:33
Hola a todos de nuevo,
creo que he acotado el problema, y es que no se como leer los datos de éste dispositivo via I2C. Haciendo caso del datasheet para escritura en el TDA7449 no hay problema, pero desconozco cual es la secuencia de lectura en I2C. En base a los datos de este integrado, ¿puede alguien explicarme la secuencia de lectura de datos en bus I2C?. Gracias por vuestra amable atención :mrgreen:
Título: Re: TDA7449
Publicado por: aitopes en 19 de Septiembre de 2007, 08:20:06
Hola!
Acabo de recibir un par de samples de ese bichito. Voy a mirar la hoja de datos, ya que me interesa darle uso. No te prometo nada por que vengo con un dia (semana? mes?) complicado, pero quizas a la tarde pueda hacer alguna prueba en un protoboard.

Saludos!

PD: Respecto del I2C, en la ayuda de CCS esta bastante claro.....aunque yo no lo he usado por que no hace mucho que empece a experimentar con él.

Título: Re: TDA7449
Publicado por: Chaly29 en 19 de Septiembre de 2007, 08:28:11
OFF topic!!

Hola a todos, y esta pregunta es para aitopes: un par de samples?? como es eso? directo de fabrica o de algun colega que a realizado el favor?

Un saludo y agradesco cualquier comentario.

Atte. CARLOS.

Título: Re: TDA7449
Publicado por: aitopes en 19 de Septiembre de 2007, 08:57:06
Hola Charly! Nop, directos de fabrica. ST me ha mandado un par de veces cosas. :mrgreen:

Saludos!
Título: Re: TDA7449
Publicado por: jdaniels en 19 de Septiembre de 2007, 09:45:57
En otro post djpalas pego este enlace que es de Redpic y habla del bus i2c leelo que salen las rutinas para leer y escribir http://picmania.garcia-cuervo.net/Proyectos_AUX_EEPROM_1.php (http://picmania.garcia-cuervo.net/Proyectos_AUX_EEPROM_1.php)