void voltageMeterADCRefresh(void) { for (uint8_t i = 0; i < MAX_VOLTAGE_SENSOR_ADC && i < ARRAYLEN(voltageMeterAdcChannelMap); i++) { voltageMeterADCState_t *state = &voltageMeterADCStates[i]; #ifdef USE_ADC // store the battery voltage with some other recent battery voltage readings const voltageSensorADCConfig_t *config = voltageSensorADCConfig(i); uint8_t channel = voltageMeterAdcChannelMap[i]; uint16_t rawSample = adcGetChannel(channel); uint16_t filteredSample = biquadFilterApply(&state->filter, rawSample); // always calculate the latest voltage, see getLatestVoltage() which does the calculation on demand. state->voltageFiltered = voltageAdcToVoltage(filteredSample, config); state->voltageUnfiltered = voltageAdcToVoltage(rawSample, config); #else UNUSED(voltageAdcToVoltage); state->voltageFiltered = 0; state->voltageUnfiltered = 0; #endif } }
static long cmsx_menuMiscOnEnter(void) { motorConfig_minthrottle = motorConfig()->minthrottle; motorConfig_digitalIdleOffsetValue = motorConfig()->digitalIdleOffsetValue / 10; voltageSensorADCConfig_vbatscale = voltageSensorADCConfig(VOLTAGE_SENSOR_ADC_VBAT)->vbatscale; batteryConfig_vbatmaxcellvoltage = batteryConfig()->vbatmaxcellvoltage; return 0; }
static long cmsx_Power_onEnter(void) { batteryConfig_voltageMeterSource = batteryConfig()->voltageMeterSource; batteryConfig_currentMeterSource = batteryConfig()->currentMeterSource; batteryConfig_vbatmaxcellvoltage = batteryConfig()->vbatmaxcellvoltage; voltageSensorADCConfig_vbatscale = voltageSensorADCConfig(0)->vbatscale; currentSensorADCConfig_scale = currentSensorADCConfig()->scale; currentSensorADCConfig_offset = currentSensorADCConfig()->offset; #ifdef USE_VIRTUAL_CURRENT_METER currentSensorVirtualConfig_scale = currentSensorVirtualConfig()->scale; currentSensorVirtualConfig_offset = currentSensorVirtualConfig()->offset; #endif return 0; }