Hola, que tal. Esta es mi primera pregunta en el foro, es que espero que obtenga buenos resultados. Estoy trabajando con un sensor, específicamente el HMC5883L que es un magnetómetro de la compañía Honeywells. Estoy tratando de adquirir los valores de campo magnético en uno de los tres ejes coordenados. El sensor se compone de 6 registros internos expresados del registro 0X03 al 0X08. El sensor mide el campo magnético que afecte a cada uno de los ejes y dependiendo de la intensidad de éste cambiarán los valores que son almacenados en registros. Cada valor de campo magnético tiene una representación en 16 bits en complemento a dos, esto quiere decir que los valores que son muestreados permiten signos negativos, al encontrarse con estos se aplica el complemento a dos. El sensor presenta 16 bits por cada posición X,Y y Z pero los distribuye en registros internos de 8 bits, esto quiere decir que existen 2 registros independientes para guardar el valor de la posición en cada eje. El eje X, Y y Z se componen de 2 registros de 1Byte (XMSB y XLSB, igualmente para Y y Z). Las hojas de especificación indican que pueden ser leídos valores desde -2048 a 2047 en decimal, o lo que es igual de 0XF800 al 0X07FF. Mi problema es que he estado muestreando los valores en cada uno de los ejes y tengo problemas con el Byte más significativo (XMSB) ya que solo me muestra los valores 0XFF, 0XFE, 0XFD(en ocasiones), 0X00 y 0X01. El byte menos significativo parece no tener problemas. ya que he observado que cambia continuamente de valores desde 0X00 a 0XFF. El problema está en el Byte más significativo. Los datos que arroja el sensor son comunicados a través de una interfaz I2C al PIC16F887. He estado buscando la solución a este problema pero no he podido dar con ella. He sido cuidadoso en revisar el circuito. He colocado las resistencias de Pull Up de 2.2k como lo indica la hoja de especificaciones. Estoy alimentando el circuito con dos fuentes independientes, por un lado alimento al PIC con 5v y al sensor con 3v ya que estoy utilizando una LCD para observar los datos que me arroja, la tierra de ambas fuentes está conectada a un punto común y las resistencias de Pull Up están conectadas a 5V. Para programar el PIC estoy utilizando el MikroC PRO, estoy utilizando las librerías de la I2C. Les dejo un ejemplo del código que estoy utilizando. No se si estoy adquiriendo mal los datos, pero la parte "extraña" es que solo los Bytes más significativos de cada eje tiene este problema, los Bytes menos significativos parecen estar bien. Espero me ayuden, me URGE una respuesta, Se los voy a agradecer mucho, he escuchado muy buenas opiniones sobre este foro.