Fix calculation of safety ADC monitors.

This commit is contained in:
Mario Hüttel 2021-01-09 22:28:22 +01:00
parent 69ff13a991
commit d6356de1b6

View File

@ -107,16 +107,16 @@ float safety_adc_convert_channel(enum safety_adc_meas_channel channel, uint16_t
switch (channel) { switch (channel) {
case SAFETY_ADC_MEAS_TEMP: case SAFETY_ADC_MEAS_TEMP:
converted_val = (((float)analog_value / 4095.0f * 2500.0f - SAFETY_ADC_TEMP_NOM_MV) / converted_val = (((float)analog_value / 4096.0f * 2500.0f - SAFETY_ADC_TEMP_NOM_MV) /
SAFETY_ADC_TEMP_MV_SLOPE) + SAFETY_ADC_TEMP_NOM; SAFETY_ADC_TEMP_MV_SLOPE) + SAFETY_ADC_TEMP_NOM;
break; break;
case SAFETY_ADC_MEAS_VREF: case SAFETY_ADC_MEAS_VREF:
converted_val = (SAFETY_ADC_INT_REF_MV * 4095.0f) / (float)analog_value; converted_val = (SAFETY_ADC_INT_REF_MV * 4096.0f) / (float)analog_value;
break; break;
case SAFETY_ADC_MEAS_SUPPLY: case SAFETY_ADC_MEAS_SUPPLY:
hw_rev = get_pcb_hardware_version(); hw_rev = get_pcb_hardware_version();
if (hw_rev >= HW_REV_V1_3) if (hw_rev >= HW_REV_V1_3)
converted_val = ((float)analog_value) / 4095.0f * 2500.0f * 2.0f; converted_val = ((float)analog_value) / 4096.0f * 2500.0f * 2.0f;
else else
converted_val = 3300.0f; converted_val = 3300.0f;
break; break;