1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-13 03:20:00 +03:00
This commit is contained in:
Steve Evans 2025-07-10 22:10:09 +01:00 committed by GitHub
commit a3b38fed27
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -35,6 +35,7 @@
#include "config/config_reset.h" #include "config/config_reset.h"
#include "drivers/adc.h" #include "drivers/adc.h"
#include "drivers/dshot.h"
#include "flight/mixer.h" #include "flight/mixer.h"
#include "flight/pid.h" #include "flight/pid.h"
@ -270,21 +271,42 @@ void voltageMeterESCInit(void)
void voltageMeterESCRefresh(void) void voltageMeterESCRefresh(void)
{ {
#ifdef USE_DSHOT_TELEMETRY
// Just check motor 0 EDT data validity
if (useDshotTelemetry &&
((dshotTelemetryState.motorState[0].telemetryTypes & (1 << DSHOT_TELEMETRY_TYPE_VOLTAGE)) != 0) &&
(dshotTelemetryState.motorState[0].telemetryData[DSHOT_TELEMETRY_TYPE_VOLTAGE] > 0)) {
uint32_t accumulatedVoltage = 0;
for (int motor = 0; motor < getMotorCount(); motor++) {
accumulatedVoltage += dshotTelemetryState.motorState[motor].telemetryData[DSHOT_TELEMETRY_TYPE_VOLTAGE];
}
voltageMeterESCState.voltageUnfiltered = 25 * accumulatedVoltage / getMotorCount();
voltageMeterESCState.voltageDisplayFiltered = pt1FilterApply(&voltageMeterESCState.displayFilter, voltageMeterESCState.voltageUnfiltered);
} else
#endif
#ifdef USE_ESC_SENSOR #ifdef USE_ESC_SENSOR
{
escSensorData_t *escData = getEscSensorData(ESC_SENSOR_COMBINED); escSensorData_t *escData = getEscSensorData(ESC_SENSOR_COMBINED);
if (escData) { if (escData) {
voltageMeterESCState.voltageUnfiltered = escData->dataAge <= ESC_BATTERY_AGE_MAX ? escData->voltage : 0; voltageMeterESCState.voltageUnfiltered = escData->dataAge <= ESC_BATTERY_AGE_MAX ? escData->voltage : 0;
voltageMeterESCState.voltageDisplayFiltered = pt1FilterApply(&voltageMeterESCState.displayFilter, voltageMeterESCState.voltageUnfiltered); voltageMeterESCState.voltageDisplayFiltered = pt1FilterApply(&voltageMeterESCState.displayFilter, voltageMeterESCState.voltageUnfiltered);
} }
}
#endif #endif
} }
void voltageMeterESCReadMotor(uint8_t motorNumber, voltageMeter_t *voltageMeter) void voltageMeterESCReadMotor(uint8_t motorNumber, voltageMeter_t *voltageMeter)
{ {
#ifndef USE_ESC_SENSOR #ifdef USE_DSHOT_TELEMETRY
UNUSED(motorNumber); if (useDshotTelemetry &&
voltageMeterReset(voltageMeter); ((dshotTelemetryState.motorState[motorNumber].telemetryTypes & (1 << DSHOT_TELEMETRY_TYPE_VOLTAGE)) != 0) &&
#else (dshotTelemetryState.motorState[motorNumber].telemetryData[DSHOT_TELEMETRY_TYPE_VOLTAGE] > 0)) {
voltageMeter->unfiltered = 25 * dshotTelemetryState.motorState[motorNumber].telemetryData[DSHOT_TELEMETRY_TYPE_VOLTAGE];
voltageMeter->displayFiltered = voltageMeter->unfiltered; // no filtering for ESC motors currently.
} else
#endif
#ifdef USE_ESC_SENSOR
{
escSensorData_t *escData = getEscSensorData(motorNumber); escSensorData_t *escData = getEscSensorData(motorNumber);
if (escData) { if (escData) {
voltageMeter->unfiltered = escData->dataAge <= ESC_BATTERY_AGE_MAX ? escData->voltage : 0; voltageMeter->unfiltered = escData->dataAge <= ESC_BATTERY_AGE_MAX ? escData->voltage : 0;
@ -292,7 +314,7 @@ void voltageMeterESCReadMotor(uint8_t motorNumber, voltageMeter_t *voltageMeter)
} else { } else {
voltageMeterReset(voltageMeter); voltageMeterReset(voltageMeter);
} }
}
#endif #endif
} }