RobotyPic son proyectos básicos de electrónica con microcontroladores PIC, de aplicación en el mundo de la robótica didáctica, con archivos fuente creados mediante el compilador CCS PIC C COMPILER en lenguajeC.

Cambio de la dirección I2C de un sensor térmico TPA81

De fabrica, la dirección para la comunicación de un sensor térmico TPA81 por el bus I2C, es por defecto la 0xD0. Cuando con un mismo PIC se debe comunicar con dos o más sensores TPA81 por el mismo bus, esa dirección debe cambiarse en alguno de ellos. De esta forma el PIC podrá comunicarse con cada uno de los sensores de forma independiente.

Para cambiar la dirección de uno de los sensores, se debe ejecutar una secuencia de comandos por el bus I2C y debe estar conectado como único módulo en el bus.

pulsa en la imagen para ampliarla    
   
Los TPA81 admiten 8 direcciones posibles, por lo que se podría llegar a conectar simultaneamente 8 sensores por el mismo bus cada uno con su propia dirección. Estas direcciones posibles son: 0xD0 (dirección por defecto de fábrica), 0xD2, 0xD4, 0xD6, 0xD8, 0xDA, 0xDC y 0xDE.

En este artículo se propone un programa para el cambio de dirección de la 0xD0 a la 0xD2. Para ello se debe escribir en el registro 0 del TPA81 cuya dirección es 0xD0 los siguientes comandos en el orden indicado: 0xA0, 0xAA, 0xA5 y 0xD2 donde 0xD2 es la nueva dirección asignada.

[+/-] Ver / Ocultar programa completo en C


El programa ejecuta la secuencia de cambio de dirección con un bucle repetitivo. Si en la primera ejecución del bucle no se hiciera efectivo el cambio por cualquier motivo se realizaria en cualquiera de las siguientes. Basta con dejar que se ejecute el programa unos segundos.El programa ejecuta la secuencia de cambio de dirección con un bucle repetitivo. Si en la primera ejecución del bucle no se hiciera efectivo el cambio por cualquier motivo se realizaría en cualquiera de las siguientes. Basta con dejar que se ejecute el programa unos segundos.

Es conveniente anotar la nueva dirección asignada en el propio sensor puesto que una vez cambiada no es posible identificarla sino es  probando una a una las 8 direcciones posibles.

En el siguiente enlace se pueden descargar los archivos del proyecto.





El proyecto contenido en el artículo ha sido diseñado utilizando la versión v4.084 de CCS PIC C COMPILER



_________________________________________________________________________________

TUTORIAL BÁSICO PIC C COMPILER
Los operadores 

Aritméticos
+     Suma                 //  a = b + c;   
-     resta                //  a = b – c;
*     Multiplicación       //  a = b * c;
/     División             //  a = b / c;
%     Resto de división    //  a = b % c;
++    Incremento           //  ++a  es lo mismo que a = a +1;
                           //  a=++b;   es lo mismo que a=b+1;
                           //  a=b++; //primero a=b y luego b=b+1
--    Decremento           //  --a  es lo mismo que a = a – 1
   //  a= --b;  es lo mismo que a=b -1
   //  a=b--;  primero a=b y luego b=b -1
 Relacionales

<     Menor que           //  if (a<b) (c=1);  c=1 si a<b         
>     Mayor que           //  if (a>b) (c=1);  c=1 si a>b
<=    Menor o igual que   //  if (a<=b) (c=1); c=1 si a<b ó a es
                              igual a b
>=    Mayor o igual que   //  if (a>=b) (c=1);   c=1 si a>b ó a 
                              es igual a b
==    Igual a             //  if (a==b) (c=1);   c=1 si a es
                              igual a b  
!=    Distinto a          //  if (a!=b) (c=1);   c=1 si a es  
                              distinto de b
?  :  Expresión condicional   // (a < 2) ?  (b =3) :  (b = 5); es
                                 lo mismo que if (a <2)(b = 3); 
                                 else  (b=5);
  Lógicos

!     NOT
&&    AND        // if ((a&&b)==0) (c=2); si tanto a como b son
                    cero entonces c=2
||    OR         // if ((a||b)==0) (c=2); si alguno de los dos a, 
                    b son cero entonces c=2
 De bits

˜     Complemento a 1

&     AND            //  c =(a&&b); c será el valor obtenido de
                         hacer AND de bits entre a y b
^     OR EXCLUSIVA   //  c =(a^b); c será el valor obtenido de 
                         hacer OR EXCLUSIVA entre a y b
|     OR             //  c =(a|b); c será el valor obtenido de 
                         hacer OR de bits entre a y b
>>    Desplazamiento a derechas
<<    Desplazamiento a izquierdas

 Asignación

+=    Asignación de suma              //  a+=b; es lo mismo que a=a+b;
-=    Asignación de resta             //  a- =b; es lo mismo que a=a-b;
*=    Asignación de multiplicación    //  a* =b; es lo mismo que a=a*b;
/=    Asignación de división          //  a/=b; es lo mismo que a=a/b;
%=    Asignación de resto de división // a%=b; es lo mismo que a=a%b;
<<=   Asignación de desplazamiento    // a<<=b; es lo mismo que a=a<<b;
>>=   Asignación de desplazamiento    // a>>=b; es lo mismo que a=a>>b;
&=    Asignación AND de bits          // a&= b; es lo mismo que  a=a&b;
| =   Asignación OR de bits           // a|= b; es lo mismo que a=a|b;
^=    Asignación OR EXCLUSIVA         // a^= b; es lo mismo que a=a^b;
  
Punteros

&     Dirección
*     Indirección

->    Puntero a estructura




No hay comentarios:

Related Posts Plugin for WordPress, Blogger...

CONTACTA - (Haz referencia del artículo sobre el que trata la consulta o comentario)