Hola Amigos, despues de horas y horas de quemarme la cabeza, decidí probar con otro compilador ya que no tenia nada que perder
. Usé
CCS y anduvo a la primera, asique que creo que con XC8 debo tener algun problema con las librerias o puede ser alguno de los Fuses(esto ultimo no creo).
Ahora bien, este sensor me esta dando mas dolores de cabezas pero creo que estoy cerca...
Espero que me puedan ayudar
El SENSOR(bmp180) no da el valor de la temperatura sino te da un valor de 16 bits que hay que hacer multiples opereaciones que estan indicadas en el datasheet... aqui el problema, en XC8 pude realizar estas operaciones obteniendo el valor correcto, pero aqui en CCS creo que no maneja de la misma manera los datos.
El código que me está dando problemas es el siguiente:
long long X2_1, X2_2, X2;
long T,MC,MD, B5 ;
long MC= -8711;
long MD = 2868;
X2_1 =(MC*2048); // DE ESTA MANERA TENGO PROBLEMAS
// X2_1 = -8711*2048; // DE ESTA MANERA TENGO EL RESULTADO CORRECTO
X2_2 = (X1 + MD);
X2= (X2_1 / X2_2);
B5 = X1+X2;
T = (B5+8)/16;
Los valores de las variables MC y MD son propias de cada sensor, pero estoy tomando las de ejemplo que figuran en el datasheet(-8711 y 2868 respectivamente), en fin... si declaro como esta en el código, MC como variable y le asigno un valor(como dije arriba, que me indica de ejemplo el datasheet que por cierto es negativo)o leo el dato directamente del sensor(en proteus, que es el mismo que esta en la hoja de datos) y lo guardo en esa variable, luego de hacer los calculos me da erroneo... perooo... si directamente en la linea X2_1 realizo la operación de multiplicación -8711*2048, el valor de la operación final B5 es correcto...
Para X1, tenia un problema similar, pero estimaba que era el tratamiento de variables y que estaban quedando muy chicas por las operaciones asique las declare como long long.
X1 = ((long long)(UT-AC6) * AC5) / 32768;
Como creen que puedo solucionar esto?
De paso muchas gracias por su ayuda en los comentarios anteriores!