atmega2560を使用して温度センサーtmp36から温度を読み取っています。温度センサーのデジタル値を読み取り、2 つの atmega2560 マイクロコントローラーで読み取り可能な形式に変換した後、異なる答えが得られます。なぜこのような答えが得られるのか。? コードの一部を以下に示します。
float temp; // global variable
{
unsigned long temp_volt;
unsigned char temp_h, temp_l;
unsigned int temp_buf;
temp_l=ADCL;
temp_h=ADCH;
temp_buf=((int)temp_h<<8)|temp_l;
temp_volt =(((unsigned long)temp_buf*256*10)/1023) - 993; // subtract offset gain
temp = ((float)temp_volt*1000/1014*100/196)/10; // adjust the gain
printf("temp_buf: %d, temp_volt: %d, temp: %0.2f\r\n", temp_buf, temp_volt, temp);
}
私が得た1つのATMEGA2560の回答は次のとおりです。
temp_buf: 55、temp_volt: 447、temp: 22.4
別の ATMEGA2560 で得たものは次のとおりです。
temp_buf: 53、temp_volt: -861、temp: 0.00
このため、この調整を行いました
temp_volt =(((unsigned long)temp_buf*256*100)/1023) - 904;
同じコードを使用しているのに、2 つのマイクロコントローラーの動作が異なるのはなぜですか?