1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-03-16 08:29:15 +01:00

LP-233 Increase Oneshot output resolution

This commit is contained in:
Laurent Lalanne 2016-05-01 14:10:49 +02:00
parent 32a6de6b79
commit 49107e4007

View File

@ -61,25 +61,25 @@ static int8_t counter;
#endif
// Private constants
#define MAX_QUEUE_SIZE 2
#define MAX_QUEUE_SIZE 2
#if defined(PIOS_ACTUATOR_STACK_SIZE)
#define STACK_SIZE_BYTES PIOS_ACTUATOR_STACK_SIZE
#define STACK_SIZE_BYTES PIOS_ACTUATOR_STACK_SIZE
#else
#define STACK_SIZE_BYTES 1312
#define STACK_SIZE_BYTES 1312
#endif
#define TASK_PRIORITY (tskIDLE_PRIORITY + 4) // device driver
#define FAILSAFE_TIMEOUT_MS 100
#define MAX_MIX_ACTUATORS ACTUATORCOMMAND_CHANNEL_NUMELEM
#define TASK_PRIORITY (tskIDLE_PRIORITY + 4) // device driver
#define FAILSAFE_TIMEOUT_MS 100
#define MAX_MIX_ACTUATORS ACTUATORCOMMAND_CHANNEL_NUMELEM
#define CAMERA_BOOT_DELAY_MS 7000
#define CAMERA_BOOT_DELAY_MS 7000
#define ACTUATOR_ONESHOT125_CLOCK 2000000
#define ACTUATOR_ONESHOT125_PULSE_SCALE 4
#define ACTUATOR_ONESHOT42_CLOCK 6000000
#define ACTUATOR_ONESHOT42_PULSE_SCALE 4
#define ACTUATOR_PWM_CLOCK 1000000
#define ACTUATOR_ONESHOT125_CLOCK 12000000
#define ACTUATOR_ONESHOT125_PULSE_FACTOR 1.5f
#define ACTUATOR_ONESHOT42_CLOCK 12000000
#define ACTUATOR_ONESHOT42_PULSE_SCALE 2
#define ACTUATOR_PWM_CLOCK 1000000
// Private types
@ -941,7 +941,7 @@ static bool set_channel(uint8_t mixer_channel, uint16_t value)
switch (mode) {
case ACTUATORSETTINGS_BANKMODE_ONESHOT125:
// Remap 1000-2000 range to 125-250
PIOS_Servo_Set(actuatorSettings.ChannelAddr[mixer_channel], value / ACTUATOR_ONESHOT125_PULSE_SCALE);
PIOS_Servo_Set(actuatorSettings.ChannelAddr[mixer_channel], value * ACTUATOR_ONESHOT125_PULSE_FACTOR);
break;
case ACTUATORSETTINGS_BANKMODE_ONESHOT42:
// Remap 1000-2000 range to 41,666-83,333µs
@ -998,11 +998,11 @@ static void actuator_update_rate_if_changed(bool force_update)
switch (actuatorSettings.BankMode[i]) {
case ACTUATORSETTINGS_BANKMODE_ONESHOT125:
freq[i] = 100; // Value must be small enough so CCr isn't update until the PIOS_Servo_Update is triggered
clock[i] = ACTUATOR_ONESHOT125_CLOCK; // Setup an 2MHz timer clock
clock[i] = ACTUATOR_ONESHOT125_CLOCK; // Setup an 12MHz timer clock
break;
case ACTUATORSETTINGS_BANKMODE_ONESHOT42:
freq[i] = 100;
clock[i] = ACTUATOR_ONESHOT42_CLOCK;
clock[i] = ACTUATOR_ONESHOT42_CLOCK; // Setup an 12MHz timer clock
break;
case ACTUATORSETTINGS_BANKMODE_PWMSYNC:
freq[i] = 100;