Merge branch 'pinkywafer-VCM_motor_stop_fix'

This commit is contained in:
Dominic Clifton 2015-03-30 19:30:13 +01:00
commit f48fcd5a32
4 changed files with 29 additions and 7 deletions

View File

@ -246,7 +246,7 @@ void annexCode(void)
} }
if (feature(FEATURE_CURRENT_METER)) { if (feature(FEATURE_CURRENT_METER)) {
updateCurrentMeter(vbatCycleTime); updateCurrentMeter(vbatCycleTime, &masterConfig.rxConfig, masterConfig.flight3DConfig.deadband3d_throttle);
} }
vbatCycleTime = 0; vbatCycleTime = 0;
} }

View File

@ -20,16 +20,18 @@
#include "common/maths.h" #include "common/maths.h"
#include "config/runtime_config.h"
#include "drivers/adc.h" #include "drivers/adc.h"
#include "drivers/system.h" #include "drivers/system.h"
#include "rx/rx.h" #include "config/runtime_config.h"
#include "io/rc_controls.h" #include "config/config.h"
#include "sensors/battery.h" #include "sensors/battery.h"
#include "rx/rx.h"
#include "io/rc_controls.h"
// Battery monitoring stuff // Battery monitoring stuff
uint8_t batteryCellCount = 3; // cell count uint8_t batteryCellCount = 3; // cell count
uint16_t batteryWarningVoltage; uint16_t batteryWarningVoltage;
@ -111,7 +113,7 @@ int32_t currentSensorToCentiamps(uint16_t src)
return (millivolts * 1000) / (int32_t)batteryConfig->currentMeterScale; // current in 0.01A steps return (millivolts * 1000) / (int32_t)batteryConfig->currentMeterScale; // current in 0.01A steps
} }
void updateCurrentMeter(int32_t lastUpdateAt) void updateCurrentMeter(int32_t lastUpdateAt, rxConfig_t *rxConfig, uint16_t deadband3d_throttle)
{ {
static int32_t amperageRaw = 0; static int32_t amperageRaw = 0;
static int64_t mAhdrawnRaw = 0; static int64_t mAhdrawnRaw = 0;
@ -127,6 +129,9 @@ void updateCurrentMeter(int32_t lastUpdateAt)
case CURRENT_SENSOR_VIRTUAL: case CURRENT_SENSOR_VIRTUAL:
amperage = (int32_t)batteryConfig->currentMeterOffset; amperage = (int32_t)batteryConfig->currentMeterOffset;
if(ARMING_FLAG(ARMED)) { if(ARMING_FLAG(ARMED)) {
throttleStatus_e throttleStatus = calculateThrottleStatus(rxConfig, deadband3d_throttle);
if (throttleStatus == THROTTLE_LOW && feature(FEATURE_MOTOR_STOP))
throttleOffset = 0;
throttleFactor = throttleOffset + (throttleOffset * throttleOffset / 50); throttleFactor = throttleOffset + (throttleOffset * throttleOffset / 50);
amperage += throttleFactor * (int32_t)batteryConfig->currentMeterScale / 1000; amperage += throttleFactor * (int32_t)batteryConfig->currentMeterScale / 1000;
} }

View File

@ -17,6 +17,8 @@
#pragma once #pragma once
#include "rx/rx.h"
#define VBAT_SCALE_DEFAULT 110 #define VBAT_SCALE_DEFAULT 110
#define VBAT_SCALE_MIN 0 #define VBAT_SCALE_MIN 0
#define VBAT_SCALE_MAX 255 #define VBAT_SCALE_MAX 255
@ -62,7 +64,7 @@ batteryState_e calculateBatteryState(void);
void updateBatteryVoltage(void); void updateBatteryVoltage(void);
void batteryInit(batteryConfig_t *initialBatteryConfig); void batteryInit(batteryConfig_t *initialBatteryConfig);
void updateCurrentMeter(int32_t lastUpdateAt); void updateCurrentMeter(int32_t lastUpdateAt, rxConfig_t *rxConfig, uint16_t deadband3d_throttle);
int32_t currentMeterToCentiamps(uint16_t src); int32_t currentMeterToCentiamps(uint16_t src);
uint8_t calculateBatteryPercentage(void); uint8_t calculateBatteryPercentage(void);

View File

@ -22,6 +22,8 @@
extern "C" { extern "C" {
#include "sensors/battery.h" #include "sensors/battery.h"
#include "io/rc_controls.h"
} }
#include "unittest_macros.h" #include "unittest_macros.h"
@ -88,6 +90,19 @@ extern "C" {
uint8_t armingFlags = 0; uint8_t armingFlags = 0;
int16_t rcCommand[4] = {0,0,0,0}; int16_t rcCommand[4] = {0,0,0,0};
bool feature(uint32_t mask)
{
UNUSED(mask);
return false;
}
throttleStatus_e calculateThrottleStatus(rxConfig_t *rxConfig, uint16_t deadband3d_throttle)
{
UNUSED(*rxConfig);
UNUSED(deadband3d_throttle);
return THROTTLE_HIGH;
}
uint16_t adcGetChannel(uint8_t channel) uint16_t adcGetChannel(uint8_t channel)
{ {
UNUSED(channel); UNUSED(channel);