История изменений
Исправление
Eddy_Em,
(текущая версия)
:
int32_t getMCUtemp(){
int32_t ADval = getADCval(4);
int32_t temperature = (int32_t) *TEMP30_CAL_ADDR - ADval;
temperature *= (int32_t)(1100 - 300);
temperature /= (int32_t)(*TEMP30_CAL_ADDR - *TEMP110_CAL_ADDR);
temperature += 300;
return(temperature);
}
Накалякал эту функцию исключительно по данным из даташита. А функция getADCval
выполняет медианное усреднение по девяти последним измерениям для уменьшения шумов (АЦП молотит через ПДП непрерывно).
Флоаты в МК без их поддержки стараюсь использовать только в крайних случаях. Обхожусь числами с фиксированной запятой.
Исправление
Eddy_Em,
:
int32_t getMCUtemp(){
int32_t ADval = getADCval(4);
int32_t temperature = (int32_t) *TEMP30_CAL_ADDR - ADval;
temperature *= (int32_t)(1100 - 300);
temperature /= (int32_t)(*TEMP30_CAL_ADDR - *TEMP110_CAL_ADDR);
temperature += 300;
return(temperature);
}
Накалякал эту функцию исключительно по данным из даташита. А функция getADCval
выполняет медианное усреднение по девяти последним измерениям для уменьшения шумов (АЦП молотит через ПДП непрерывно).
Исходная версия
Eddy_Em,
:
int32_t getMCUtemp(){
int32_t ADval = getADCval(4);
int32_t temperature = (int32_t) *TEMP30_CAL_ADDR - ADval;
temperature *= (int32_t)(1100 - 300);
temperature /= (int32_t)(*TEMP30_CAL_ADDR - *TEMP110_CAL_ADDR);
temperature += 300;
return(temperature);
}