mirror of
https://gitee.com/xiaohuolufeihua/bizhang_-obav.git
synced 2026-05-21 01:12:11 +00:00
PWM12 mode for pwm_out and dshot
This commit is contained in:
@@ -232,12 +232,13 @@ typedef uint16_t servo_position_t;
|
||||
#define PWM_SERVO_MODE_5PWM1CAP 10
|
||||
#define PWM_SERVO_MODE_6PWM 11
|
||||
#define PWM_SERVO_MODE_8PWM 12
|
||||
#define PWM_SERVO_MODE_14PWM 13
|
||||
#define PWM_SERVO_MODE_4CAP 14
|
||||
#define PWM_SERVO_MODE_5CAP 15
|
||||
#define PWM_SERVO_MODE_6CAP 16
|
||||
#define PWM_SERVO_ENTER_TEST_MODE 17
|
||||
#define PWM_SERVO_EXIT_TEST_MODE 18
|
||||
#define PWM_SERVO_MODE_12PWM 13
|
||||
#define PWM_SERVO_MODE_14PWM 14
|
||||
#define PWM_SERVO_MODE_4CAP 15
|
||||
#define PWM_SERVO_MODE_5CAP 16
|
||||
#define PWM_SERVO_MODE_6CAP 17
|
||||
#define PWM_SERVO_ENTER_TEST_MODE 18
|
||||
#define PWM_SERVO_EXIT_TEST_MODE 19
|
||||
#define PWM_SERVO_SET_MODE _PX4_IOC(_PWM_SERVO_BASE, 34)
|
||||
|
||||
/*
|
||||
|
||||
@@ -221,6 +221,18 @@ int DShot::set_mode(const Mode mode)
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12
|
||||
|
||||
case MODE_12PWM:
|
||||
PX4_DEBUG("MODE_12PWM");
|
||||
// default output rates
|
||||
_output_mask = 0xfff;
|
||||
_outputs_initialized = false;
|
||||
_num_outputs = 12;
|
||||
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14
|
||||
|
||||
case MODE_14PWM:
|
||||
@@ -642,6 +654,9 @@ int DShot::ioctl(file *filp, int cmd, unsigned long arg)
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8
|
||||
case MODE_8PWM:
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12
|
||||
case MODE_12PWM:
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14
|
||||
case MODE_14PWM:
|
||||
#endif
|
||||
@@ -680,6 +695,13 @@ int DShot::pwm_ioctl(file *filp, const int cmd, const unsigned long arg)
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12
|
||||
|
||||
case MODE_12PWM:
|
||||
*(unsigned *)arg = 12;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8
|
||||
|
||||
case MODE_8PWM:
|
||||
@@ -1003,6 +1025,9 @@ int DShot::module_new_mode(const PortMode new_mode)
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 8
|
||||
mode = DShot::MODE_8PWM;
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 12
|
||||
mode = DShot::MODE_12PWM;
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 14
|
||||
mode = DShot::MODE_14PWM;
|
||||
#endif
|
||||
@@ -1268,6 +1293,16 @@ int DShot::custom_command(int argc, char *argv[])
|
||||
|
||||
} else if (!strcmp(verb, "mode_pwm8")) {
|
||||
new_mode = PORT_PWM8;
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12
|
||||
|
||||
} else if (!strcmp(verb, "mode_pwm12")) {
|
||||
new_mode = PORT_PWM12;
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14
|
||||
|
||||
} else if (!strcmp(verb, "mode_pwm14")) {
|
||||
new_mode = PORT_PWM14;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1371,23 +1406,29 @@ After saving, the reversed direction will be regarded as the normal one. So to r
|
||||
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_gpio");
|
||||
PRINT_MODULE_USAGE_COMMAND_DESCR("mode_pwm", "Select all available pins as PWM");
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm14");
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm12");
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm8");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm8");
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 6
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm6");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm5");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm5cap1");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm6");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm5");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm5cap1");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm4");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm4cap1");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm4cap2");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm3");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm3cap1");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm4cap1");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm4cap2");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm3");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm3cap1");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm2");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm2cap2");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm2cap2");
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM)
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm1");
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm1");
|
||||
#endif
|
||||
|
||||
PRINT_MODULE_USAGE_COMMAND_DESCR("telemetry", "Enable Telemetry on a UART");
|
||||
|
||||
@@ -78,6 +78,7 @@ public:
|
||||
MODE_5PWM1CAP,
|
||||
MODE_6PWM,
|
||||
MODE_8PWM,
|
||||
MODE_12PWM,
|
||||
MODE_14PWM,
|
||||
MODE_4CAP,
|
||||
MODE_5CAP,
|
||||
@@ -90,6 +91,7 @@ public:
|
||||
PORT_FULL_GPIO,
|
||||
PORT_FULL_PWM,
|
||||
PORT_PWM14,
|
||||
PORT_PWM12,
|
||||
PORT_PWM8,
|
||||
PORT_PWM6,
|
||||
PORT_PWM5,
|
||||
|
||||
@@ -256,6 +256,22 @@ int PWMOut::set_mode(Mode mode)
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12
|
||||
|
||||
case MODE_12PWM:
|
||||
PX4_DEBUG("MODE_12PWM");
|
||||
/* default output rates */
|
||||
_pwm_default_rate = 50;
|
||||
_pwm_alt_rate = 50;
|
||||
_pwm_alt_rate_channels = 0;
|
||||
_pwm_mask = 0xFFF;
|
||||
_pwm_initialized = false;
|
||||
_num_outputs = 12;
|
||||
update_params();
|
||||
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14
|
||||
|
||||
case MODE_14PWM:
|
||||
@@ -751,6 +767,9 @@ int PWMOut::ioctl(file *filp, int cmd, unsigned long arg)
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8
|
||||
case MODE_8PWM:
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12
|
||||
case MODE_12PWM:
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14
|
||||
case MODE_14PWM:
|
||||
#endif
|
||||
@@ -1192,6 +1211,13 @@ int PWMOut::pwm_ioctl(file *filp, int cmd, unsigned long arg)
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12
|
||||
|
||||
case MODE_12PWM:
|
||||
*(unsigned *)arg = 12;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8
|
||||
|
||||
case MODE_8PWM:
|
||||
@@ -1292,6 +1318,10 @@ int PWMOut::pwm_ioctl(file *filp, int cmd, unsigned long arg)
|
||||
ret = set_mode(MODE_8PWM);
|
||||
break;
|
||||
|
||||
case PWM_SERVO_MODE_12PWM:
|
||||
ret = set_mode(MODE_12PWM);
|
||||
break;
|
||||
|
||||
case PWM_SERVO_MODE_14PWM:
|
||||
ret = set_mode(MODE_14PWM);
|
||||
break;
|
||||
@@ -1546,6 +1576,9 @@ int PWMOut::fmu_new_mode(PortMode new_mode)
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 8
|
||||
servo_mode = PWMOut::MODE_8PWM;
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 12
|
||||
servo_mode = PWMOut::MODE_12PWM;
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 14
|
||||
servo_mode = PWMOut::MODE_14PWM;
|
||||
#endif
|
||||
@@ -1563,6 +1596,13 @@ int PWMOut::fmu_new_mode(PortMode new_mode)
|
||||
servo_mode = PWMOut::MODE_14PWM;
|
||||
break;
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12
|
||||
|
||||
case PORT_PWM12:
|
||||
/* select 12-pin PWM mode */
|
||||
servo_mode = PWMOut::MODE_12PWM;
|
||||
break;
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8
|
||||
|
||||
case PORT_PWM8:
|
||||
@@ -1986,7 +2026,12 @@ int PWMOut::custom_command(int argc, char *argv[])
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8
|
||||
|
||||
} else if (!strcmp(verb, "mode_pwm8")) {
|
||||
new_mode = PORT_PWM14;
|
||||
new_mode = PORT_PWM8;
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 12
|
||||
|
||||
} else if (!strcmp(verb, "mode_pwm12")) {
|
||||
new_mode = PORT_PWM12;
|
||||
#endif
|
||||
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14
|
||||
|
||||
@@ -2042,6 +2087,8 @@ int PWMOut::print_status()
|
||||
|
||||
case MODE_8PWM: mode_str = "pwm8"; break;
|
||||
|
||||
case MODE_12PWM: mode_str = "pwm12"; break;
|
||||
|
||||
case MODE_14PWM: mode_str = "pwm14"; break;
|
||||
|
||||
case MODE_4CAP: mode_str = "cap4"; break;
|
||||
@@ -2113,6 +2160,9 @@ mixer files.
|
||||
# if BOARD_HAS_PWM >= 14
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm14");
|
||||
# endif
|
||||
# if BOARD_HAS_PWM >= 12
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm12");
|
||||
# endif
|
||||
# if BOARD_HAS_PWM >= 8
|
||||
PRINT_MODULE_USAGE_COMMAND("mode_pwm8");
|
||||
# endif
|
||||
|
||||
@@ -70,6 +70,7 @@ enum PortMode {
|
||||
PORT_FULL_GPIO,
|
||||
PORT_FULL_PWM,
|
||||
PORT_PWM14,
|
||||
PORT_PWM12,
|
||||
PORT_PWM8,
|
||||
PORT_PWM6,
|
||||
PORT_PWM5,
|
||||
@@ -109,6 +110,7 @@ public:
|
||||
MODE_5PWM1CAP,
|
||||
MODE_6PWM,
|
||||
MODE_8PWM,
|
||||
MODE_12PWM,
|
||||
MODE_14PWM,
|
||||
MODE_4CAP,
|
||||
MODE_5CAP,
|
||||
|
||||
Reference in New Issue
Block a user