From 32a6de6b79e7d34c14351a30fecfb13c2b265ab1 Mon Sep 17 00:00:00 2001 From: Laurent Lalanne Date: Sun, 1 May 2016 02:04:01 +0200 Subject: [PATCH] LP-233 Support OneShot42 --- flight/modules/Actuator/actuator.c | 10 ++++++++++ .../targets/boards/coptercontrol/firmware/pios_board.c | 6 ++++-- flight/targets/boards/revonano/firmware/pios_board.c | 3 ++- shared/uavobjectdefinition/actuatorsettings.xml | 2 +- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/flight/modules/Actuator/actuator.c b/flight/modules/Actuator/actuator.c index f3f77ca41..7276e27ef 100644 --- a/flight/modules/Actuator/actuator.c +++ b/flight/modules/Actuator/actuator.c @@ -77,6 +77,8 @@ static int8_t counter; #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 // Private types @@ -941,6 +943,10 @@ static bool set_channel(uint8_t mixer_channel, uint16_t value) // Remap 1000-2000 range to 125-250 PIOS_Servo_Set(actuatorSettings.ChannelAddr[mixer_channel], value / ACTUATOR_ONESHOT125_PULSE_SCALE); break; + case ACTUATORSETTINGS_BANKMODE_ONESHOT42: + // Remap 1000-2000 range to 41,666-83,333µs + PIOS_Servo_Set(actuatorSettings.ChannelAddr[mixer_channel], value / ACTUATOR_ONESHOT42_PULSE_SCALE); + break; default: PIOS_Servo_Set(actuatorSettings.ChannelAddr[mixer_channel], value); break; @@ -994,6 +1000,10 @@ static void actuator_update_rate_if_changed(bool force_update) 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 break; + case ACTUATORSETTINGS_BANKMODE_ONESHOT42: + freq[i] = 100; + clock[i] = ACTUATOR_ONESHOT42_CLOCK; + break; case ACTUATORSETTINGS_BANKMODE_PWMSYNC: freq[i] = 100; clock[i] = ACTUATOR_PWM_CLOCK; diff --git a/flight/targets/boards/coptercontrol/firmware/pios_board.c b/flight/targets/boards/coptercontrol/firmware/pios_board.c index 90cbfa8b9..5145ca3da 100644 --- a/flight/targets/boards/coptercontrol/firmware/pios_board.c +++ b/flight/targets/boards/coptercontrol/firmware/pios_board.c @@ -954,7 +954,8 @@ SystemAlarmsExtendedAlarmStatusOptions CopterControlConfigHook() if ((recmode == HWSETTINGS_CC_RCVRPORT_PPM_PIN8ONESHOT || flexiMode == HWSETTINGS_CC_FLEXIPORT_PPM) && (modes[3] == ACTUATORSETTINGS_BANKMODE_PWMSYNC || - modes[3] == ACTUATORSETTINGS_BANKMODE_ONESHOT125)) { + modes[3] == ACTUATORSETTINGS_BANKMODE_ONESHOT125 || + modes[3] == ACTUATORSETTINGS_BANKMODE_ONESHOT42)) { return SYSTEMALARMS_EXTENDEDALARMSTATUS_UNSUPPORTEDCONFIG_ONESHOT; } else { return SYSTEMALARMS_EXTENDEDALARMSTATUS_NONE; @@ -967,7 +968,8 @@ SystemAlarmsExtendedAlarmStatusOptions CopterControlConfigHook() case HWSETTINGS_CC_RCVRPORT_PWMNOONESHOT: for (uint8_t i = 0; i < ACTUATORSETTINGS_BANKMODE_NUMELEM; i++) { if (modes[i] == ACTUATORSETTINGS_BANKMODE_PWMSYNC || - modes[i] == ACTUATORSETTINGS_BANKMODE_ONESHOT125) { + modes[i] == ACTUATORSETTINGS_BANKMODE_ONESHOT125 || + modes[i] == ACTUATORSETTINGS_BANKMODE_ONESHOT42) { return SYSTEMALARMS_EXTENDEDALARMSTATUS_UNSUPPORTEDCONFIG_ONESHOT;; } diff --git a/flight/targets/boards/revonano/firmware/pios_board.c b/flight/targets/boards/revonano/firmware/pios_board.c index 4cc6f58d9..c3f42ad0e 100644 --- a/flight/targets/boards/revonano/firmware/pios_board.c +++ b/flight/targets/boards/revonano/firmware/pios_board.c @@ -893,7 +893,8 @@ SystemAlarmsExtendedAlarmStatusOptions RevoNanoConfigHook() case HWSETTINGS_RM_RCVRPORT_PWM: for (uint8_t i = 0; i < ACTUATORSETTINGS_BANKMODE_NUMELEM; i++) { if (modes[i] == ACTUATORSETTINGS_BANKMODE_PWMSYNC || - modes[i] == ACTUATORSETTINGS_BANKMODE_ONESHOT125) { + modes[i] == ACTUATORSETTINGS_BANKMODE_ONESHOT125 || + modes[i] == ACTUATORSETTINGS_BANKMODE_ONESHOT42) { return SYSTEMALARMS_EXTENDEDALARMSTATUS_UNSUPPORTEDCONFIG_ONESHOT;; } } diff --git a/shared/uavobjectdefinition/actuatorsettings.xml b/shared/uavobjectdefinition/actuatorsettings.xml index 4890a0c60..e57633f67 100644 --- a/shared/uavobjectdefinition/actuatorsettings.xml +++ b/shared/uavobjectdefinition/actuatorsettings.xml @@ -2,7 +2,7 @@ Settings for the @ref ActuatorModule that controls the channel assignments for the mixer based on AircraftType - +