次のコードを検討してください。
unsigned int beta;
unsigned int theta;
unsigned int m = 4;
unsigned int c = 986;
unsigned int Rpre = 49900;
unsigned int getUAnalog(unsigned char channel) // to get the PT1000 Signal
{
unsigned int result;
unsigned int f_temp;
//select channel and initiate conversion
ADCSC1 |= (channel & 0b11111);
//wait until conversion is complete
while(!ADCSC1_COCO);
f_temp = ADCRH;
f_temp <<= 8;
f_temp += ADCRL;
beta = (((f_temp) / (4096*28))*1000); // warning: possible loss of data.
theta = ((((beta)*(Rpre))/(1-beta))*1000);
result = (theta-c)/(m);
return result;
}
CodeWarrior バージョン 5.9.0 の PT1000-Temperature Sensor でMC9S08DZ60 ( http://www.freescale.com/files/microcontrollers/doc/data_sheet/MC9S08DZ60.pdf ) を使用しています。この関数は、一時を計算して「結果」を返すことを目的としています。しかし、「ベータ」と「シータ」の値は 0 のままです。変更はありません。
また、C2705: データ損失の可能性という警告が表示されます。「結果」の値が正しくありません。何が悪いのか手がかりがないので助けてください!!
前もって感謝します!