Re: Sobre calculos. Primero comprueba que en MSB y LSB tienes valores. Suponiendo que tengan
valores, ya que no se cómo ni cuando cambia los unsigned char a int, lo
haría yo explicitamente así:
temp_c = (float)((((unsigned int)MSB)<<8u + (unsigned int)LSB) - 65536u) *
0.0625;
O si tienes int de 16 bits, te podrías ahorrar el desplazamiento y la suma
con un union de un int con dos unsigned char.
<jgenicio***gmail.com> escribió en el mensaje
news:1175846983.935227.103210***o5g2000hsb.googlegro ups.com...
Hola:
Estoy programando un microcontrolador atmel atmega32 y atraves del
"puerto" i2c tengo conectado un termometro DS1631 que me da la
temperatura en 2 palabrase de 8 bits. Lo que hago para pasar eso a
grados centigrados es:
unsigned char MSB;
unsigned char LSB;
float temp_c;
temp_c = (float)((MSB<<8 + LSB) - 65536) * 0.0625;
Es correcto, ya que no me da lectura ninguna. ¿?
S2. |