TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: QIQE en 19 de Octubre de 2006, 18:54:47

Título: Modificar libreria
Publicado por: QIQE en 19 de Octubre de 2006, 18:54:47
Hola compañeros estoy haciendo un proyecto en el que necesito usar dos sht_15, para usarlos utilizo una libreria, pero esta preparada solo para un sensor, ya que este sensor funciona con un bus "I2C" a su modo de manera que hay que adaptar la comunicación, mi pregunta viene aqui:

en la libreria tenia:

      #define DATOS  PIN_A4
      #define CLOCK  PIN_A5

y mi modificacion ha sido:
Código: [Seleccionar]
void sht11_1(void)
{
 
      #define DATOS  PIN_A2
      #define CLOCK  PIN_A3
     
}

void sht11_2(void)
{
     
     
      #define DATOS  PIN_A4
      #define CLOCK  PIN_A5 
}   

pero no me funciona, ya que siempre se queda datos definido como A4 y clock como A5, aunque llame a sht_1 desde el programa principal alguna idea?? que puedo hacer??
muchas gracias.
Título: Re: Modificar libreria
Publicado por: jfh900 en 19 de Octubre de 2006, 19:08:41
Las intrucciones #define son pseudocodigo, que interpreta el preprocesador antes de compilar lo que hace es sustituir el literal por el valor que queramos. En el caso #define DATOS PIN_A4, sustituye DATOS por PIN_A4. Si tenemos varias sustituciones la última será la que valga.

La idea con el bus I2C es utilizar un único bus para todos los dispostivos, con lo cual eso te sobra. Normalmente las librerias I2C permite manejar varios dispositivos, solo hay que cambiar la dirección del dispositivo I2C a controlar en cada caso.

Un saludo
Título: Re: Modificar libreria
Publicado por: QIQE en 19 de Octubre de 2006, 19:18:24
Me expliqué mal la filosofia del su comunicacion es parecida al I2C pero solo se puede conectar un dispositivo, por pin entonces yo quiero que esa libreria me siba para dos dispositovos variandole la definicion de pines en ejecución eso puede hacerse?? estoy mirando los #if pero de momento no soluciono nada
Título: Re: Modificar libreria
Publicado por: vszener en 20 de Octubre de 2006, 12:05:36
La librería del dipositivo sht_15 que usas sólamente tienen las funciones:
Código: C
  1. void sht11_1(void)
  2. {
  3.  
  4.       #define DATOS  PIN_A2
  5.       #define CLOCK  PIN_A3
  6.      
  7. }
  8.  
  9. void sht11_2(void)
  10. {
  11.      
  12.      
  13.       #define DATOS  PIN_A4
  14.       #define CLOCK  PIN_A5  
  15. }
o ¿hay algunas funciones más a parte de éstas? Si hay algunas funciones más, tendras que diferenciarlas también.


Suerte!!! ;)
Título: Re: Modificar libreria
Publicado por: QIQE en 20 de Octubre de 2006, 17:15:26
Si tengo mas funcione pero las demas emplean la constante datos y clok, y haciendolo de esta manera siempre se queda definida la ultimaen este caso dato PIN_A4 CLOK PIN_A5 y no logro que cambie:S:S
Título: Re: Modificar libreria
Publicado por: vszener en 21 de Octubre de 2006, 06:11:51
Diferencia también las funciones.


Suerte!!! :wink: