1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-17 05:15:25 +03:00

Fixed a problem when the motor count for motorInit came from a custom

mixer table lookup which was 0.

1. took the motor count from the loading of the custom mixer table.
2. Moved the mixerconfig to before motorInit as motorInit needs the
motorCount.
3. removed pwmIsSynced checks as this was a order of init problem, and
not required as pwmCompleteMotorUpdate protects itself.
This commit is contained in:
atomiclama 2016-11-17 08:30:05 +00:00
parent 135231f289
commit d4a81879d8
5 changed files with 9 additions and 23 deletions

View file

@ -242,11 +242,6 @@ void motorInit(const motorConfig_t *motorConfig, uint16_t idlePulse, uint8_t mot
}
}
bool pwmIsSynced(void)
{
return pwmCompleteWritePtr != NULL;
}
pwmOutputPort_t *pwmGetMotors(void)
{
return motors;

View file

@ -253,11 +253,6 @@ void motorInit(const motorConfig_t *motorConfig, uint16_t idlePulse, uint8_t mot
}
}
bool pwmIsSynced(void)
{
return pwmCompleteWritePtr != NULL;
}
pwmOutputPort_t *pwmGetMotors(void)
{
return motors;

View file

@ -65,7 +65,6 @@ static flight3DConfig_t *flight3DConfig;
static motorConfig_t *motorConfig;
static airplaneConfig_t *airplaneConfig;
rxConfig_t *rxConfig;
static bool syncMotorOutputWithPidLoop = false;
mixerMode_e currentMixerMode;
static motorMixer_t currentMixer[MAX_SUPPORTED_MOTORS];
@ -301,8 +300,6 @@ void mixerConfigureOutput(void)
motorCount = 0;
syncMotorOutputWithPidLoop = pwmIsSynced();
if (currentMixerMode == MIXER_CUSTOM || currentMixerMode == MIXER_CUSTOM_TRI || currentMixerMode == MIXER_CUSTOM_AIRPLANE) {
// load custom mixer into currentMixer
for (i = 0; i < MAX_SUPPORTED_MOTORS; i++) {
@ -354,8 +351,6 @@ void mixerLoadMix(int index, motorMixer_t *customMixers)
#else
void mixerConfigureOutput(void)
{
syncMotorOutputWithPidLoop = pwmIsSynced();
motorCount = QUAD_MOTOR_COUNT;
for (uint8_t i = 0; i < motorCount; i++) {
@ -380,9 +375,7 @@ void writeMotors(void)
pwmWriteMotor(i, motor[i]);
}
if (syncMotorOutputWithPidLoop) {
pwmCompleteMotorUpdate(motorCount);
}
pwmCompleteMotorUpdate(motorCount);
}
static void writeAllMotors(int16_t mc)

View file

@ -109,6 +109,7 @@ typedef struct airplaneConfig_s {
#define CHANNEL_FORWARDING_DISABLED (uint8_t)0xFF
extern uint8_t motorCount;
extern const mixer_t mixers[];
extern int16_t motor[MAX_SUPPORTED_MOTORS];
extern int16_t motor_disarmed[MAX_SUPPORTED_MOTORS];

View file

@ -263,10 +263,15 @@ void init(void)
idlePulse = 0; // brushed motors
}
mixerConfigureOutput();
#ifdef USE_SERVOS
servoConfigureOutput();
#endif
#ifdef USE_QUAD_MIXER_ONLY
motorInit(&masterConfig.motorConfig, idlePulse, QUAD_MOTOR_COUNT);
#else
motorInit(&masterConfig.motorConfig, idlePulse, mixers[masterConfig.mixerMode].motorCount);
motorInit(&masterConfig.motorConfig, idlePulse, motorCount);
#endif
#ifdef USE_SERVOS
@ -285,10 +290,7 @@ void init(void)
pwmRxSetInputFilteringMode(masterConfig.inputFilteringMode);
#endif
mixerConfigureOutput();
#ifdef USE_SERVOS
servoConfigureOutput();
#endif
systemState |= SYSTEM_STATE_MOTORS_READY;
#ifdef BEEPER