Added PG config definitions 8
This commit is contained in:
parent
3be6441e74
commit
7ae57eb8cf
|
@ -403,7 +403,7 @@ static OSD_Entry cmsx_menuImuEntries[] =
|
||||||
{"MISC PP", OME_Submenu, cmsMenuChange, &cmsx_menuProfileOther, 0},
|
{"MISC PP", OME_Submenu, cmsMenuChange, &cmsx_menuProfileOther, 0},
|
||||||
{"FILT PP", OME_Submenu, cmsMenuChange, &cmsx_menuFilterPerProfile, 0},
|
{"FILT PP", OME_Submenu, cmsMenuChange, &cmsx_menuFilterPerProfile, 0},
|
||||||
|
|
||||||
{"RATE PROF", OME_UINT8, cmsx_rateProfileIndexOnChange, &(OSD_UINT8_t){ &tmpRateProfileIndex, 1, MAX_RATEPROFILES, 1}, 0},
|
{"RATE PROF", OME_UINT8, cmsx_rateProfileIndexOnChange, &(OSD_UINT8_t){ &tmpRateProfileIndex, 1, CONTROL_RATE_PROFILE_COUNT, 1}, 0},
|
||||||
{"RATE", OME_Submenu, cmsMenuChange, &cmsx_menuRateProfile, 0},
|
{"RATE", OME_Submenu, cmsMenuChange, &cmsx_menuRateProfile, 0},
|
||||||
|
|
||||||
{"FILT GLB", OME_Submenu, cmsMenuChange, &cmsx_menuFilterGlobal, 0},
|
{"FILT GLB", OME_Submenu, cmsMenuChange, &cmsx_menuFilterGlobal, 0},
|
||||||
|
|
|
@ -309,7 +309,7 @@ typedef struct master_s {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
profile_t profile[MAX_PROFILE_COUNT];
|
profile_t profile[MAX_PROFILE_COUNT];
|
||||||
controlRateConfig_t controlRateProfile[MAX_RATEPROFILES];
|
controlRateConfig_t controlRateProfile[CONTROL_RATE_PROFILE_COUNT];
|
||||||
|
|
||||||
modeActivationProfile_t modeActivationProfile;
|
modeActivationProfile_t modeActivationProfile;
|
||||||
adjustmentProfile_t adjustmentProfile;
|
adjustmentProfile_t adjustmentProfile;
|
||||||
|
|
|
@ -3422,7 +3422,7 @@ static void cliRateProfile(char *cmdline)
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
const int i = atoi(cmdline);
|
const int i = atoi(cmdline);
|
||||||
if (i >= 0 && i < MAX_RATEPROFILES) {
|
if (i >= 0 && i < CONTROL_RATE_PROFILE_COUNT) {
|
||||||
changeControlRateProfile(i);
|
changeControlRateProfile(i);
|
||||||
cliRateProfile("");
|
cliRateProfile("");
|
||||||
}
|
}
|
||||||
|
@ -3451,7 +3451,7 @@ static void cliDumpProfile(uint8_t profileIndex, uint8_t dumpMask, const master_
|
||||||
|
|
||||||
static void cliDumpRateProfile(uint8_t rateProfileIndex, uint8_t dumpMask, const master_t *defaultConfig)
|
static void cliDumpRateProfile(uint8_t rateProfileIndex, uint8_t dumpMask, const master_t *defaultConfig)
|
||||||
{
|
{
|
||||||
if (rateProfileIndex >= MAX_RATEPROFILES) {
|
if (rateProfileIndex >= CONTROL_RATE_PROFILE_COUNT) {
|
||||||
// Faulty values
|
// Faulty values
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -4136,7 +4136,7 @@ static void printConfig(char *cmdline, bool doDiff)
|
||||||
cliProfile("");
|
cliProfile("");
|
||||||
|
|
||||||
const uint8_t controlRateProfileIndexSave = getCurrentControlRateProfileIndex();
|
const uint8_t controlRateProfileIndexSave = getCurrentControlRateProfileIndex();
|
||||||
for (uint32_t rateIndex = 0; rateIndex < MAX_RATEPROFILES; rateIndex++) {
|
for (uint32_t rateIndex = 0; rateIndex < CONTROL_RATE_PROFILE_COUNT; rateIndex++) {
|
||||||
cliDumpRateProfile(rateIndex, dumpMask, &defaultConfig);
|
cliDumpRateProfile(rateIndex, dumpMask, &defaultConfig);
|
||||||
}
|
}
|
||||||
changeControlRateProfile(controlRateProfileIndexSave);
|
changeControlRateProfile(controlRateProfileIndexSave);
|
||||||
|
|
|
@ -181,6 +181,7 @@ static void resetControlRateProfile(controlRateConfig_t *controlRateConfig)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef USE_PARAMETER_GROUPS
|
||||||
static void resetPidProfile(pidProfile_t *pidProfile)
|
static void resetPidProfile(pidProfile_t *pidProfile)
|
||||||
{
|
{
|
||||||
pidProfile->P8[ROLL] = 44;
|
pidProfile->P8[ROLL] = 44;
|
||||||
|
@ -231,11 +232,14 @@ static void resetPidProfile(pidProfile_t *pidProfile)
|
||||||
pidProfile->itermThrottleThreshold = 350;
|
pidProfile->itermThrottleThreshold = 350;
|
||||||
pidProfile->itermAcceleratorGain = 1.0f;
|
pidProfile->itermAcceleratorGain = 1.0f;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef USE_PARAMETER_GROUPS
|
||||||
void resetProfile(profile_t *profile)
|
void resetProfile(profile_t *profile)
|
||||||
{
|
{
|
||||||
resetPidProfile(&profile->pidProfile);
|
resetPidProfile(&profile->pidProfile);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef GPS
|
#ifdef GPS
|
||||||
void resetGpsProfile(gpsProfile_t *gpsProfile)
|
void resetGpsProfile(gpsProfile_t *gpsProfile)
|
||||||
|
@ -1011,13 +1015,10 @@ void createDefaultConfig(master_t *config)
|
||||||
resetSerialPinConfig(&config->serialPinConfig);
|
resetSerialPinConfig(&config->serialPinConfig);
|
||||||
|
|
||||||
resetSerialConfig(&config->serialConfig);
|
resetSerialConfig(&config->serialConfig);
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
for (int ii = 0; ii < MAX_PROFILE_COUNT; ++ii) {
|
for (int ii = 0; ii < MAX_PROFILE_COUNT; ++ii) {
|
||||||
resetProfile(&config->profile[ii]);
|
resetProfile(&config->profile[ii]);
|
||||||
}
|
}
|
||||||
#ifndef USE_PARAMETER_GROUPS
|
|
||||||
for (int ii = 0; ii < CONTROL_RATE_PROFILE_COUNT; ++ii) {
|
for (int ii = 0; ii < CONTROL_RATE_PROFILE_COUNT; ++ii) {
|
||||||
resetControlRateProfile(&config->controlRateProfile[ii]);
|
resetControlRateProfile(&config->controlRateProfile[ii]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,12 +30,6 @@
|
||||||
#include "drivers/sound_beeper.h"
|
#include "drivers/sound_beeper.h"
|
||||||
#include "drivers/vcd.h"
|
#include "drivers/vcd.h"
|
||||||
|
|
||||||
#if FLASH_SIZE <= 128
|
|
||||||
#define MAX_PROFILE_COUNT 2
|
|
||||||
#else
|
|
||||||
#define MAX_PROFILE_COUNT 3
|
|
||||||
#endif
|
|
||||||
#define MAX_RATEPROFILES 3
|
|
||||||
#define MAX_NAME_LENGTH 16
|
#define MAX_NAME_LENGTH 16
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|
|
@ -1275,7 +1275,7 @@ static mspResult_e mspFcProcessInCommand(uint8_t cmdMSP, sbuf_t *src)
|
||||||
} else {
|
} else {
|
||||||
value = value & ~RATEPROFILE_MASK;
|
value = value & ~RATEPROFILE_MASK;
|
||||||
|
|
||||||
if (value >= MAX_RATEPROFILES) {
|
if (value >= CONTROL_RATE_PROFILE_COUNT) {
|
||||||
value = 0;
|
value = 0;
|
||||||
}
|
}
|
||||||
changeControlRateProfile(value);
|
changeControlRateProfile(value);
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#include <platform.h>
|
#include <platform.h>
|
||||||
|
@ -30,6 +31,7 @@
|
||||||
|
|
||||||
#include "config/parameter_group.h"
|
#include "config/parameter_group.h"
|
||||||
#include "config/parameter_group_ids.h"
|
#include "config/parameter_group_ids.h"
|
||||||
|
#include "config/config_reset.h"
|
||||||
|
|
||||||
#include "fc/fc_core.h"
|
#include "fc/fc_core.h"
|
||||||
#include "fc/fc_rc.h"
|
#include "fc/fc_rc.h"
|
||||||
|
@ -71,6 +73,63 @@ PG_RESET_TEMPLATE(pidConfig_t, pidConfig,
|
||||||
.pid_process_denom = PID_PROCESS_DENOM_DEFAULT
|
.pid_process_denom = PID_PROCESS_DENOM_DEFAULT
|
||||||
);
|
);
|
||||||
|
|
||||||
|
PG_REGISTER_ARRAY_WITH_RESET_FN(pidProfile_t, MAX_PROFILE_COUNT, pidProfiles, PG_PID_PROFILE, 0);
|
||||||
|
|
||||||
|
void pgResetFn_pidProfiles(pidProfile_t *pidProfiles)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < MAX_PROFILE_COUNT; i++) {
|
||||||
|
RESET_CONFIG(const pidProfile_t, &pidProfiles[i],
|
||||||
|
.P8[ROLL] = 44,
|
||||||
|
.I8[ROLL] = 40,
|
||||||
|
.D8[ROLL] = 20,
|
||||||
|
.P8[PITCH] = 58,
|
||||||
|
.I8[PITCH] = 50,
|
||||||
|
.D8[PITCH] = 22,
|
||||||
|
.P8[YAW] = 70,
|
||||||
|
.I8[YAW] = 45,
|
||||||
|
.D8[YAW] = 20,
|
||||||
|
.P8[PIDALT] = 50,
|
||||||
|
.I8[PIDALT] = 0,
|
||||||
|
.D8[PIDALT] = 0,
|
||||||
|
.P8[PIDPOS] = 15, // POSHOLD_P * 100,
|
||||||
|
.I8[PIDPOS] = 0, // POSHOLD_I * 100,
|
||||||
|
.D8[PIDPOS] = 0,
|
||||||
|
.P8[PIDPOSR] = 34, // POSHOLD_RATE_P * 10,
|
||||||
|
.I8[PIDPOSR] = 14, // POSHOLD_RATE_I * 100,
|
||||||
|
.D8[PIDPOSR] = 53, // POSHOLD_RATE_D * 1000,
|
||||||
|
.P8[PIDNAVR] = 25, // NAV_P * 10,
|
||||||
|
.I8[PIDNAVR] = 33, // NAV_I * 100,
|
||||||
|
.D8[PIDNAVR] = 83, // NAV_D * 1000,
|
||||||
|
.P8[PIDLEVEL] = 50,
|
||||||
|
.I8[PIDLEVEL] = 50,
|
||||||
|
.D8[PIDLEVEL] = 100,
|
||||||
|
.P8[PIDMAG] = 40,
|
||||||
|
.P8[PIDVEL] = 55,
|
||||||
|
.I8[PIDVEL] = 55,
|
||||||
|
.D8[PIDVEL] = 75,
|
||||||
|
|
||||||
|
.yaw_p_limit = YAW_P_LIMIT_MAX,
|
||||||
|
.pidSumLimit = PIDSUM_LIMIT,
|
||||||
|
.yaw_lpf_hz = 0,
|
||||||
|
.itermWindupPointPercent = 50,
|
||||||
|
.dterm_filter_type = FILTER_BIQUAD,
|
||||||
|
.dterm_lpf_hz = 100, // filtering ON by default
|
||||||
|
.dterm_notch_hz = 260,
|
||||||
|
.dterm_notch_cutoff = 160,
|
||||||
|
.vbatPidCompensation = 0,
|
||||||
|
.pidAtMinThrottle = PID_STABILISATION_ON,
|
||||||
|
.levelAngleLimit = 55,
|
||||||
|
.levelSensitivity = 55,
|
||||||
|
.setpointRelaxRatio = 20,
|
||||||
|
.dtermSetpointWeight = 100,
|
||||||
|
.yawRateAccelLimit = 10.0f,
|
||||||
|
.rateAccelLimit = 0.0f,
|
||||||
|
.itermThrottleThreshold = 350,
|
||||||
|
.itermAcceleratorGain = 1.0f
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void pidSetTargetLooptime(uint32_t pidLooptime)
|
void pidSetTargetLooptime(uint32_t pidLooptime)
|
||||||
{
|
{
|
||||||
targetPidLooptime = pidLooptime;
|
targetPidLooptime = pidLooptime;
|
||||||
|
|
|
@ -87,6 +87,12 @@ typedef struct pidProfile_s {
|
||||||
} pidProfile_t;
|
} pidProfile_t;
|
||||||
|
|
||||||
//PG_DECLARE_PROFILE(pidProfile_t, pidProfile);
|
//PG_DECLARE_PROFILE(pidProfile_t, pidProfile);
|
||||||
|
#if FLASH_SIZE <= 128
|
||||||
|
#define MAX_PROFILE_COUNT 2
|
||||||
|
#else
|
||||||
|
#define MAX_PROFILE_COUNT 3
|
||||||
|
#endif
|
||||||
|
PG_DECLARE_ARRAY(pidProfile_t, MAX_PROFILE_COUNT, pidProfiles);
|
||||||
|
|
||||||
typedef struct pidConfig_s {
|
typedef struct pidConfig_s {
|
||||||
uint8_t pid_process_denom; // Processing denominator for PID controller vs gyro sampling rate
|
uint8_t pid_process_denom; // Processing denominator for PID controller vs gyro sampling rate
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
#include "config/parameter_group_ids.h"
|
#include "config/parameter_group_ids.h"
|
||||||
|
|
||||||
#include "fc/config.h"
|
#include "fc/config.h"
|
||||||
|
#include "fc/controlrate_profile.h"
|
||||||
#include "fc/rc_controls.h"
|
#include "fc/rc_controls.h"
|
||||||
#include "fc/runtime_config.h"
|
#include "fc/runtime_config.h"
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include "drivers/io.h"
|
#include "drivers/io.h"
|
||||||
|
|
||||||
#include "fc/rc_controls.h"
|
#include "fc/rc_controls.h"
|
||||||
|
#include "fc/controlrate_profile.h"
|
||||||
|
|
||||||
#include "flight/failsafe.h"
|
#include "flight/failsafe.h"
|
||||||
#include "flight/mixer.h"
|
#include "flight/mixer.h"
|
||||||
|
@ -72,7 +73,7 @@ void targetConfiguration(master_t *config)
|
||||||
config->profile[profileId].pidProfile.P8[PIDLEVEL] = 30;
|
config->profile[profileId].pidProfile.P8[PIDLEVEL] = 30;
|
||||||
config->profile[profileId].pidProfile.D8[PIDLEVEL] = 30;
|
config->profile[profileId].pidProfile.D8[PIDLEVEL] = 30;
|
||||||
|
|
||||||
for (int rateProfileId = 0; rateProfileId < MAX_RATEPROFILES; rateProfileId++) {
|
for (int rateProfileId = 0; rateProfileId < CONTROL_RATE_PROFILE_COUNT; rateProfileId++) {
|
||||||
config->controlRateProfile[rateProfileId].rcRate8 = 100;
|
config->controlRateProfile[rateProfileId].rcRate8 = 100;
|
||||||
config->controlRateProfile[rateProfileId].rcYawRate8 = 110;
|
config->controlRateProfile[rateProfileId].rcYawRate8 = 110;
|
||||||
config->controlRateProfile[rateProfileId].rcExpo8 = 0;
|
config->controlRateProfile[rateProfileId].rcExpo8 = 0;
|
||||||
|
|
Loading…
Reference in New Issue