mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-13 03:20:00 +03:00
Merge 3da099c4b7
into acbab53d13
This commit is contained in:
commit
a3b38fed27
1 changed files with 37 additions and 15 deletions
|
@ -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,29 +271,50 @@ 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);
|
{
|
||||||
if (escData) {
|
escSensorData_t *escData = getEscSensorData(ESC_SENSOR_COMBINED);
|
||||||
voltageMeterESCState.voltageUnfiltered = escData->dataAge <= ESC_BATTERY_AGE_MAX ? escData->voltage : 0;
|
if (escData) {
|
||||||
voltageMeterESCState.voltageDisplayFiltered = pt1FilterApply(&voltageMeterESCState.displayFilter, voltageMeterESCState.voltageUnfiltered);
|
voltageMeterESCState.voltageUnfiltered = escData->dataAge <= ESC_BATTERY_AGE_MAX ? escData->voltage : 0;
|
||||||
|
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)) {
|
||||||
escSensorData_t *escData = getEscSensorData(motorNumber);
|
voltageMeter->unfiltered = 25 * dshotTelemetryState.motorState[motorNumber].telemetryData[DSHOT_TELEMETRY_TYPE_VOLTAGE];
|
||||||
if (escData) {
|
voltageMeter->displayFiltered = voltageMeter->unfiltered; // no filtering for ESC motors currently.
|
||||||
voltageMeter->unfiltered = escData->dataAge <= ESC_BATTERY_AGE_MAX ? escData->voltage : 0;
|
} else
|
||||||
voltageMeter->displayFiltered = voltageMeter->unfiltered; // no filtering for ESC motors currently.
|
#endif
|
||||||
} else {
|
#ifdef USE_ESC_SENSOR
|
||||||
voltageMeterReset(voltageMeter);
|
{
|
||||||
|
escSensorData_t *escData = getEscSensorData(motorNumber);
|
||||||
|
if (escData) {
|
||||||
|
voltageMeter->unfiltered = escData->dataAge <= ESC_BATTERY_AGE_MAX ? escData->voltage : 0;
|
||||||
|
voltageMeter->displayFiltered = voltageMeter->unfiltered; // no filtering for ESC motors currently.
|
||||||
|
} else {
|
||||||
|
voltageMeterReset(voltageMeter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue