1
0
Fork 0
mirror of https://github.com/iNavFlight/inav.git synced 2025-07-19 06:15:14 +03:00

Merge pull request #6106 from IVData/master

Added option to output servos on PWM and SBUS
This commit is contained in:
Paweł Spychalski 2021-01-31 20:03:18 +01:00 committed by GitHub
commit cbad665aee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 20 additions and 5 deletions

View file

@ -268,7 +268,8 @@ static bool motorsUseHardwareTimers(void)
static bool servosUseHardwareTimers(void)
{
return servoConfig()->servo_protocol == SERVO_TYPE_PWM;
return servoConfig()->servo_protocol == SERVO_TYPE_PWM ||
servoConfig()->servo_protocol == SERVO_TYPE_SBUS_PWM;
}
static void pwmInitMotors(timMotorServoHardware_t * timOutputs)

View file

@ -52,7 +52,8 @@ typedef enum {
typedef enum {
SERVO_TYPE_PWM = 0,
SERVO_TYPE_SERVO_DRIVER,
SERVO_TYPE_SBUS
SERVO_TYPE_SBUS,
SERVO_TYPE_SBUS_PWM
} servoProtocolType_e;
typedef enum {

View file

@ -501,6 +501,14 @@ static void pwmServoWriteStandard(uint8_t index, uint16_t value)
}
}
#ifdef USE_SERVO_SBUS
static void sbusPwmWriteStandard(uint8_t index, uint16_t value)
{
pwmServoWriteStandard(index, value);
sbusServoUpdate(index, value);
}
#endif
#ifdef USE_PWM_SERVO_DRIVER
static void pwmServoWriteExternalDriver(uint8_t index, uint16_t value)
{
@ -532,6 +540,11 @@ void pwmServoPreconfigure(void)
sbusServoInitialize();
servoWritePtr = sbusServoUpdate;
break;
case SERVO_TYPE_SBUS_PWM:
sbusServoInitialize();
servoWritePtr = sbusPwmWriteStandard;
break;
#endif
}
}

View file

@ -217,7 +217,7 @@ void validateAndFixConfig(void)
#endif
#ifndef USE_SERVO_SBUS
if (servoConfig()->servo_protocol == SERVO_TYPE_SBUS) {
if (servoConfig()->servo_protocol == SERVO_TYPE_SBUS || servoConfig()->servo_protocol == SERVO_TYPE_SBUS_PWM) {
servoConfigMutable()->servo_protocol = SERVO_TYPE_PWM;
}
#endif

View file

@ -346,7 +346,7 @@ void fcTasksInit(void)
setTaskEnabled(TASK_STACK_CHECK, true);
#endif
#if defined(USE_PWM_SERVO_DRIVER) || defined(USE_SERVO_SBUS)
setTaskEnabled(TASK_PWMDRIVER, (servoConfig()->servo_protocol == SERVO_TYPE_SERVO_DRIVER) || (servoConfig()->servo_protocol == SERVO_TYPE_SBUS));
setTaskEnabled(TASK_PWMDRIVER, (servoConfig()->servo_protocol == SERVO_TYPE_SERVO_DRIVER) || (servoConfig()->servo_protocol == SERVO_TYPE_SBUS) || (servoConfig()->servo_protocol == SERVO_TYPE_SBUS_PWM));
#endif
#ifdef USE_CMS
#ifdef USE_MSP_DISPLAYPORT

View file

@ -34,7 +34,7 @@ tables:
- name: motor_pwm_protocol
values: ["STANDARD", "ONESHOT125", "ONESHOT42", "MULTISHOT", "BRUSHED", "DSHOT150", "DSHOT300", "DSHOT600", "DSHOT1200", "SERIALSHOT"]
- name: servo_protocol
values: ["PWM", "SERVO_DRIVER", "SBUS"]
values: ["PWM", "SERVO_DRIVER", "SBUS", "SBUS_PWM"]
- name: failsafe_procedure
values: ["SET-THR", "DROP", "RTH", "NONE"]
- name: current_sensor