|
|
|
|
@ -131,11 +131,11 @@ inline uint16_t linearize_temp(uint16_t temp_in)
|
|
|
|
|
65535, 1520, // made-up, not from datasheet
|
|
|
|
|
};
|
|
|
|
|
uint8_t i=2;
|
|
|
|
|
for (; i < (sizeof(coeffs)>>1)-2; i+=2)
|
|
|
|
|
for(; i < sizeof(coeffs) / sizeof(coeffs[0]); i += 2)
|
|
|
|
|
{
|
|
|
|
|
if ( temp_in < pgm_read_word(&coeffs[i]) )
|
|
|
|
|
if(temp_in < pgm_read_word(&coeffs[i]))
|
|
|
|
|
{
|
|
|
|
|
temp_out = (uint16_t) ( pgm_read_word(&coeffs[i-1]) + (uint32_t) ( (uint32_t) (temp_in - pgm_read_word(&coeffs[i-2])) * (pgm_read_word(&coeffs[i+1])-pgm_read_word(&coeffs[i-1])) ) / (pgm_read_word(&coeffs[i])-pgm_read_word(&coeffs[i-2])));
|
|
|
|
|
temp_out = (uint16_t) (pgm_read_word(&coeffs[i-1]) + (uint32_t) ( (uint32_t) (temp_in - pgm_read_word(&coeffs[i-2])) * (pgm_read_word(&coeffs[i+1]) - pgm_read_word(&coeffs[i-1])) ) / (pgm_read_word(&coeffs[i]) - pgm_read_word(&coeffs[i-2])));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -226,7 +226,9 @@ int main(void)
|
|
|
|
|
adc_sum += ADC;
|
|
|
|
|
if(++adc_pos == 64)
|
|
|
|
|
{
|
|
|
|
|
adc_sum = 47000;
|
|
|
|
|
temperature = linearize_temp(adc_sum);
|
|
|
|
|
temperature = 1100;
|
|
|
|
|
adc_sum = 0;
|
|
|
|
|
adc_pos = 0;
|
|
|
|
|
if(1)//dev_state)
|
|
|
|
|
|