Merge pull request #3435 from martinbudden/bf_motor_enable

Remove duplication in motor enable/disable
This commit is contained in:
Michael Keller 2017-07-08 10:12:59 +12:00 committed by GitHub
commit 2cc1bb309f
9 changed files with 17 additions and 29 deletions

View File

@ -45,8 +45,8 @@ static pwmOutputPort_t beeperPwm;
static uint16_t freqBeep = 0;
#endif
bool pwmMotorsEnabled = false;
bool isDshot = false;
static bool pwmMotorsEnabled = false;
static bool isDshot = false;
static void pwmOCConfig(TIM_TypeDef *tim, uint8_t channel, uint16_t value, uint8_t output)
{
@ -169,9 +169,7 @@ static uint8_t loadDmaBufferProshot(motorDmaOutput_t *const motor, uint16_t pack
void pwmWriteMotor(uint8_t index, float value)
{
if (pwmMotorsEnabled) {
pwmWrite(index, value);
}
pwmWrite(index, value);
}
void pwmShutdownPulsesForAllMotors(uint8_t motorCount)
@ -397,8 +395,7 @@ void pwmWriteDshotCommand(uint8_t index, uint8_t command)
for (; repeats; repeats--) {
motor->requestTelemetry = true;
pwmWriteDshotInt(index, command);
pwmCompleteMotorUpdate(0);
pwmCompleteDshotMotorUpdate(0);
delay(1);
}
}

View File

@ -125,8 +125,6 @@ typedef struct {
motorDmaOutput_t *getMotorDmaOutput(uint8_t index);
extern bool pwmMotorsEnabled;
struct timerHardware_s;
typedef void pwmWriteFunc(uint8_t index, float value); // function pointer used to write motors
typedef void pwmCompleteWriteFunc(uint8_t motorCount); // function pointer used after motors are written
@ -134,11 +132,11 @@ typedef void pwmCompleteWriteFunc(uint8_t motorCount); // function pointer use
typedef struct {
volatile timCCR_t *ccr;
TIM_TypeDef *tim;
float pulseScale;
float pulseOffset;
bool forceOverflow;
bool enabled;
IO_t io;
float pulseScale;
float pulseOffset;
} pwmOutputPort_t;
typedef struct motorDevConfig_s {

View File

@ -74,10 +74,6 @@ void pwmCompleteDshotMotorUpdate(uint8_t motorCount)
{
UNUSED(motorCount);
if (!pwmMotorsEnabled) {
return;
}
for (int i = 0; i < dmaMotorTimerCount; i++) {
TIM_SetCounter(dmaMotorTimers[i].timer, 0);
TIM_DMACmd(dmaMotorTimers[i].timer, dmaMotorTimers[i].timerDmaSources, ENABLE);

View File

@ -2231,7 +2231,7 @@ static void cliDshotProg(char *cmdline)
break;
default:
motorControlEnable = false;
pwmDisableMotors();
int command = atoi(pch);
if (command >= 0 && command < DSHOT_MIN_THROTTLE) {
@ -2259,7 +2259,7 @@ static void cliDshotProg(char *cmdline)
pch = strtok_r(NULL, " ", &saveptr);
}
motorControlEnable = true;
pwmEnableMotors();
}
#endif

View File

@ -108,7 +108,6 @@ int16_t magHold;
int16_t headFreeModeHold;
uint8_t motorControlEnable = false;
static bool reverseMotors = false;
static uint32_t disarmAt; // Time of automatic disarm when "Don't spin the motors when armed" is enabled and auto_disarm_delay is nonzero
@ -627,9 +626,8 @@ static void subTaskMotorUpdate(void)
}
#endif
if (motorControlEnable) {
writeMotors();
}
writeMotors();
DEBUG_SET(DEBUG_PIDLOOP, 3, micros() - startTime);
}

View File

@ -27,8 +27,6 @@ extern int16_t magHold;
extern bool isRXDataNew;
extern int16_t headFreeModeHold;
extern uint8_t motorControlEnable;
typedef struct throttleCorrectionConfig_s {
uint16_t throttle_correction_angle; // the angle when the throttle correction is maximal. in 0.1 degres, ex 225 = 22.5 ,30.0, 450 = 45.0 deg
uint8_t throttle_correction_value; // the correction that will be applied at throttle_correction_angle.

View File

@ -137,8 +137,6 @@
void targetPreInit(void);
#endif
extern uint8_t motorControlEnable;
#ifdef SOFTSERIAL_LOOPBACK
serialPort_t *loopbackPort;
#endif
@ -709,7 +707,7 @@ void init(void)
// Latch active features AGAIN since some may be modified by init().
latchActiveFeatures();
motorControlEnable = true;
pwmEnableMotors();
#ifdef USE_OSD_SLAVE
osdSlaveTasksInit();

View File

@ -469,9 +469,8 @@ void writeMotors(void)
for (int i = 0; i < motorCount; i++) {
pwmWriteMotor(i, motor[i]);
}
pwmCompleteMotorUpdate(motorCount);
}
pwmCompleteMotorUpdate(motorCount);
}
static void writeAllMotors(int16_t mc)

View File

@ -374,7 +374,7 @@ int timeval_sub(struct timespec *result, struct timespec *x, struct timespec *y)
// PWM part
bool pwmMotorsEnabled = false;
static bool pwmMotorsEnabled = false;
static pwmOutputPort_t motors[MAX_SUPPORTED_MOTORS];
static pwmOutputPort_t servos[MAX_SUPPORTED_SERVOS];
@ -406,6 +406,10 @@ pwmOutputPort_t *pwmGetMotors(void) {
return motors;
}
void pwmEnableMotors(void) {
pwmMotorsEnabled = true;
}
bool pwmAreMotorsEnabled(void) {
return pwmMotorsEnabled;
}