He conectado un sensor TMP102 (en una placa de ruptura) de sparkfun. El cableado tenía sentido, el cableado i2c estándar. Aquí está la hoja de datos de TMP102 . Usé esta guía como una guía para el programa que escribí. El programa que se ejecuta en el fotón de partículas (el tablero del microcontrolador que estoy usando), tiene una línea de código confusa. La línea de código a la que me refiero hace esto: los bits de la MSB que recibe el microcontrolador (el byte más significativo, no el bit) se desplazan a la izquierda, 8 veces y luego se envían con el LSB (byte menos significativo) . Los bits del resultado se desplazan a la derecha 4 veces. Por último, todo se multiplica por 0.0625. Esta línea de código resume lo que acabo de decir y se puede ver en la guía que se encuentra arriba:
int temp = (((MSB < < 8) | LSB) > > 4) * 0.0625;
Tengo todo para trabajar (mide la temperatura), pero no sé why funciona. Mi pregunta es: ¿por qué se requiere la línea de código anterior? ¿Por qué estas operaciones necesitan ser completadas? Y como una pregunta complementaria, si los bits en un byte se desplazan a la izquierda 8 veces, ¿no resultaría en un valor de 0000 0000? Si mi pregunta es un poco vaga, por favor dígame.