Merge remote-tracking branch 'refs/remotes/origin/PID_from_eeprom' into PID

This commit is contained in:
johan9107 2016-10-17 11:59:41 +02:00
commit 4bb2d6fdaf
5 changed files with 205 additions and 11 deletions

View File

@ -194,7 +194,22 @@ typedef enum {
/* List of all profile EEPROM values */
typedef enum {
EEPROM_PID_ROLL_KP = 0,
EEPROM_PID_GYRO_P_ROLL,
EEPROM_PID_GYRO_P_PITCH,
EEPROM_PID_GYRO_P_YAW,
EEPROM_PID_GYRO_I_ROLL,
EEPROM_PID_GYRO_I_PITCH,
EEPROM_PID_GYRO_I_YAW,
EEPROM_PID_GYRO_D_ROLL,
EEPROM_PID_GYRO_D_PITCH,
EEPROM_PID_GYRO_D_YAW,
EEPROM_PID_ACCEL_P_ROLL,
EEPROM_PID_ACCEL_P_PITCH,
EEPROM_PID_ACCEL_I_ROLL,
EEPROM_PID_ACCEL_I_PITCH,
EEPROM_PID_ACCEL_D_ROLL,
EEPROM_PID_ACCEL_D_PITCH,
/* Counts the amount of settings in profile */
EEPROM_PROFILE_COUNT

View File

@ -14,7 +14,7 @@
#ifndef SYSTEM_VARIABLES_H_
#define SYSTEM_VARIABLES_H_
#define EEPROM_SYS_VERSION 101
#define EEPROM_SYS_VERSION 102
#define ADC_STATE
#include "stm32f4xx.h"

View File

@ -222,6 +222,32 @@ typedef enum
COMMAND_ID_FLAG_FLIGHTMODE_3_CHANNEL,
/* Profile values */
/* PID value */
//GYRO
COMMAND_ID_PID_GYRO_P_ROLL,
COMMAND_ID_PID_GYRO_P_PITCH,
COMMAND_ID_PID_GYRO_P_YAW,
COMMAND_ID_PID_GYRO_I_ROLL,
COMMAND_ID_PID_GYRO_I_PITCH,
COMMAND_ID_PID_GYRO_I_YAW,
COMMAND_ID_PID_GYRO_D_ROLL,
COMMAND_ID_PID_GYRO_D_PITCH,
COMMAND_ID_PID_GYRO_D_YAW,
//ACCEL
COMMAND_ID_PID_ACCEL_P_ROLL,
COMMAND_ID_PID_ACCEL_P_PITCH,
COMMAND_ID_PID_ACCEL_I_ROLL,
COMMAND_ID_PID_ACCEL_I_PITCH,
COMMAND_ID_PID_ACCEL_D_ROLL,
COMMAND_ID_PID_ACCEL_D_PITCH,
/* Counter for the amount of commands */
COMMAND_ID_COUNT,
@ -265,10 +291,6 @@ const cliCommandConfig_t commandTable[COMMAND_ID_COUNT] = {
{
"adc_scales_right", COMMAND_ID_ADC_SCALES_RIGHT, EEPROM_ADC_SCALES, EEPROM_VALUE_TYPE_SYSTEM, 8, VAL_UINT_32, .valueRange = {0, 200}
},
[COMMAND_ID_PID_ROLL_KP] =
{
"pid_roll_kp", COMMAND_ID_PID_ROLL_KP, EEPROM_PID_ROLL_KP, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
[COMMAND_ID_PERIOD_SYSTEM] =
{
"task_period_system", COMMAND_ID_PERIOD_SYSTEM, EEPROM_PERIOD_SYSTEM, EEPROM_VALUE_TYPE_SYSTEM, 0, VAL_UINT_32, .valueRange = {0, 1000000000}
@ -480,6 +502,79 @@ const cliCommandConfig_t commandTable[COMMAND_ID_COUNT] = {
},
//PROFILE VALUES
//PID VALUES
//GYRO P
[COMMAND_ID_PID_GYRO_P_ROLL] =
{
"pid_gyro_p_roll", COMMAND_ID_PID_GYRO_P_ROLL, EEPROM_PID_GYRO_P_ROLL, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
[COMMAND_ID_PID_GYRO_P_PITCH] =
{
"pid_gyro_p_pitch", COMMAND_ID_PID_GYRO_P_PITCH, EEPROM_PID_GYRO_P_PITCH, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
[COMMAND_ID_PID_GYRO_P_YAW] =
{
"pid_gyro_p_yaw", COMMAND_ID_PID_GYRO_P_YAW, EEPROM_PID_GYRO_P_YAW, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
//GYRO I
[COMMAND_ID_PID_GYRO_I_ROLL] =
{
"pid_gyro_i_roll", COMMAND_ID_PID_GYRO_I_ROLL, EEPROM_PID_GYRO_I_ROLL, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
[COMMAND_ID_PID_GYRO_I_PITCH] =
{
"pid_gyro_i_pitch", COMMAND_ID_PID_GYRO_I_PITCH, EEPROM_PID_GYRO_I_PITCH, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
[COMMAND_ID_PID_GYRO_I_YAW] =
{
"pid_gyro_i_yaw", COMMAND_ID_PID_GYRO_I_YAW, EEPROM_PID_GYRO_I_YAW, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
//GYRO D
[COMMAND_ID_PID_GYRO_D_ROLL] =
{
"pid_gyro_d_roll", COMMAND_ID_PID_GYRO_D_ROLL, EEPROM_PID_GYRO_D_ROLL, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
[COMMAND_ID_PID_GYRO_D_PITCH] =
{
"pid_gyro_d_pitch", COMMAND_ID_PID_GYRO_D_PITCH, EEPROM_PID_GYRO_D_PITCH, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
[COMMAND_ID_PID_GYRO_D_YAW] =
{
"pid_gyro_d_yaw", COMMAND_ID_PID_GYRO_D_YAW, EEPROM_PID_GYRO_D_YAW, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
//ACCEL P
[COMMAND_ID_PID_ACCEL_P_ROLL] =
{
"pid_accel_p_roll", COMMAND_ID_PID_ACCEL_P_ROLL, EEPROM_PID_ACCEL_P_ROLL, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
[COMMAND_ID_PID_ACCEL_P_PITCH] =
{
"pid_accel_p_pitch", COMMAND_ID_PID_ACCEL_P_PITCH, EEPROM_PID_ACCEL_P_PITCH, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
//ACCEL I
[COMMAND_ID_PID_ACCEL_I_ROLL] =
{
"pid_accel_i_roll", COMMAND_ID_PID_ACCEL_I_ROLL, EEPROM_PID_ACCEL_I_ROLL, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
[COMMAND_ID_PID_ACCEL_I_PITCH] =
{
"pid_accel_i_pitch", COMMAND_ID_PID_ACCEL_I_PITCH, EEPROM_PID_ACCEL_I_PITCH, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
//ACCEL D
[COMMAND_ID_PID_ACCEL_D_ROLL] =
{
"pid_accel_d_roll", COMMAND_ID_PID_ACCEL_D_ROLL, EEPROM_PID_ACCEL_D_ROLL, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
[COMMAND_ID_PID_ACCEL_D_PITCH] =
{
"pid_accel_d_pitch", COMMAND_ID_PID_ACCEL_D_PITCH, EEPROM_PID_ACCEL_D_PITCH, EEPROM_VALUE_TYPE_PROFILE, 0, VAL_UINT_8, .valueRange = {0, 100}
},
};

View File

@ -23,6 +23,7 @@
#include "Scheduler/scheduler.h"
#include "drivers/failsafe_toggles.h"
#include "drivers/motormix.h"
#include "Flight/pid.h"
/* Reads the EEPROM version from EEPROM - Is compared to EEPROM_SYS_VERSION */
uint8_t stored_eeprom_identifier;
@ -245,11 +246,93 @@ EEPROM_DATA_t eeprom_sys_Arr[EEPROM_SYS_COUNT] = {
/* Data pointers and sizes for profile content */
EEPROM_DATA_t eeprom_profile_Arr[EEPROM_PROFILE_COUNT] = {
[EEPROM_PID_ROLL_KP] =
//GYRO P VAL
[EEPROM_PID_GYRO_P_ROLL] =
{
.size = sizeof(pid_pitch_pk),
.dataPtr = &pid_pitch_pk,
}
.size = sizeof(PidGyroProfile.P[0]),
.dataPtr = &PidGyroProfile.P[0],
},
[EEPROM_PID_GYRO_P_PITCH] =
{
.size = sizeof(PidGyroProfile.P[1]),
.dataPtr = &PidGyroProfile.P[1],
},
[EEPROM_PID_GYRO_P_YAW] =
{
.size = sizeof(PidGyroProfile.P[2]),
.dataPtr = &PidGyroProfile.P[2],
},
//GYRO I VAL
[EEPROM_PID_GYRO_I_ROLL] =
{
.size = sizeof(PidGyroProfile.I[0]),
.dataPtr = &PidGyroProfile.I[0],
},
[EEPROM_PID_GYRO_I_PITCH] =
{
.size = sizeof(PidGyroProfile.I[1]),
.dataPtr = &PidGyroProfile.I[1],
},
[EEPROM_PID_GYRO_I_YAW] =
{
.size = sizeof(PidGyroProfile.I[2]),
.dataPtr = &PidGyroProfile.I[2],
},
//GYRO D VAL
[EEPROM_PID_GYRO_D_ROLL] =
{
.size = sizeof(PidGyroProfile.D[0]),
.dataPtr = &PidGyroProfile.D[0],
},
[EEPROM_PID_GYRO_D_PITCH] =
{
.size = sizeof(PidGyroProfile.D[1]),
.dataPtr = &PidGyroProfile.D[1],
},
[EEPROM_PID_GYRO_D_YAW] =
{
.size = sizeof(PidGyroProfile.D[2]),
.dataPtr = &PidGyroProfile.D[2],
},
//ACCEL P VAL
[EEPROM_PID_ACCEL_P_ROLL] =
{
.size = sizeof(PidAccelerometerProfile.P[0]),
.dataPtr = &PidAccelerometerProfile.P[0],
},
[EEPROM_PID_ACCEL_P_PITCH] =
{
.size = sizeof(PidAccelerometerProfile.P[1]),
.dataPtr = &PidAccelerometerProfile.P[1],
},
//ACCEL I VAL
[EEPROM_PID_ACCEL_I_ROLL] =
{
.size = sizeof(PidAccelerometerProfile.I[0]),
.dataPtr = &PidAccelerometerProfile.I[0],
},
[EEPROM_PID_ACCEL_I_PITCH] =
{
.size = sizeof(PidAccelerometerProfile.I[1]),
.dataPtr = &PidAccelerometerProfile.I[1],
},
//ACCEL_D_VAL
[EEPROM_PID_ACCEL_D_ROLL] =
{
.size = sizeof(PidAccelerometerProfile.D[0]),
.dataPtr = &PidAccelerometerProfile.D[0],
},
[EEPROM_PID_ACCEL_D_PITCH] =
{
.size = sizeof(PidAccelerometerProfile.D[1]),
.dataPtr = &PidAccelerometerProfile.D[1],
},
};
/* Data pointers and sizes for footer content */

View File

@ -45,6 +45,8 @@ void init_system()
//Configure the clock
system_clock_config();
pidInit();
/* read saved variables from eeprom, in most cases eeprom should be read after a lot of the initializes */
readEEPROM();
@ -57,7 +59,6 @@ void init_system()
//init motors to run with oneshot 125
pwmEnableAllMotors(Oneshot125);
pidInit();
#ifdef USE_LEDS
//Initialize the on board leds