further optimize ntc math

This commit is contained in:
Moritz Ruffer 2025-03-28 16:48:52 +01:00
parent 1abe7bfed6
commit e5dd0e0012

View File

@ -20,11 +20,12 @@
// With R_T/R_0 and R_0 = R_T@25C
// R_T/R_0 = 1 / V_REF / ADC - 1
[[gnu::optimize("fast-math")]]
static inline uint16_t ntc_adc_to_celsius(int16_t adc_codes) {
// Calculate voltage from ADC
int16_t adc_mV = mV_from_ADBMS6830(adc_codes);
float log_ohms = logf(1/((VREF_mV/adc_mV)-1));
float log_ohms = logf(1 / ((VREF_mV/adc_mV) - 1));
return (uint16_t) (TEMP_CONV / (NTC_A1 + NTC_B1 * log_ohms + NTC_C1 * log_ohms * log_ohms + NTC_D1 * log_ohms * log_ohms * log_ohms) - CELSIUS_TO_KELVIN_SCALED);
}