document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. temperature read_internal_temperature(void)
  2. {
  3.   temperature temp_sensor;
  4.  
  5.   ADC10CTL1 |= INCH_10 | ADC10DIV_7 | ADC10SSEL_3;
  6.   ADC10CTL0 |= REFON | ADC10ON | SREF_1 | ADC10SHT_3;// | REF2_5V;
  7.   delay(480);
  8.   ADC10CTL0 |= ENC | ADC10SC;
  9.   delay(48);
  10.   while (ADC10CTL1 & ADC10BUSY) {};
  11.   ADC10CTL0 &= ~ENC;
  12.   ADC10CTL0 &= ~(REFON | ADC10ON);
  13.  
  14.   // (raw * 0.0024414 - 0.986) / 0.00355
  15.   unsigned long temp_tmp;
  16.   int temp_sensor_int;
  17.   div_t temp_sensor_main_digits;
  18.  
  19.   //temp_tmp = (ADC10MEM - 404) * 11;
  20.   temp_tmp = (ADC10MEM - 673) * 423;
  21.   //temp_sensor_int = temp_tmp / 16;
  22.   temp_sensor_int = temp_tmp / 1024;
  23.   temp_sensor.negative = 0;
  24.   if (temp_sensor_int < 0) {
  25.     temp_sensor.negative = 1;
  26.   }
  27.   temp_sensor_main_digits = div(temp_sensor_int, 10);
  28.   //temp_tmp = temp_tmp * 10 / 16;
  29.   temp_tmp = temp_tmp * 10 / 1024;
  30.   temp_sensor.digit_3 = div(temp_tmp, 10).rem;
  31.   temp_sensor.digit_1 = temp_sensor_main_digits.quot;
  32.   temp_sensor.digit_2 = temp_sensor_main_digits.rem;
  33.  
  34.   return temp_sensor;
  35. }
');