zpu: use define for PID coeffs, save extra space

This commit is contained in:
Sergey Kostanbaev
2017-08-02 12:51:38 +03:00
parent 76f0a92574
commit dd16447884

View File

@@ -73,11 +73,16 @@ _get_vctcxo_dac(void)
#define MAX_INT ((1<<31)-1) #define MAX_INT ((1<<31)-1)
#define G_PID_PK 64
#define G_PID_IK 16
#define G_PID_DK 256
typedef struct { typedef struct {
/* Loop constants */ /* Loop constants */
int16_t Pk; // int16_t Pk;
int16_t Ik; // int16_t Ik;
int16_t Dk; // int16_t Dk;
int32_t max_error; int32_t max_error;
int32_t max_sum_error; int32_t max_sum_error;
@@ -97,9 +102,9 @@ static void
_gpsdo_pid_init(int32_t init_val) _gpsdo_pid_init(int32_t init_val)
{ {
/* Configure loop */ /* Configure loop */
g_pid.Pk = 64; //g_pid.Pk = 64;
g_pid.Ik = 16; //g_pid.Ik = 16;
g_pid.Dk = 256; /* Seems high but we LPF PID input so d is dampened */ //g_pid.Dk = 256; /* Seems high but we LPF PID input so d is dampened */
/* Reset state */ /* Reset state */
g_pid.val_prev = PID_TARGET; g_pid.val_prev = PID_TARGET;
@@ -129,14 +134,14 @@ _gpsdo_pid_step(int32_t val)
error = -PID_MAX_ERR; error = -PID_MAX_ERR;
/* Compute P term */ /* Compute P term */
p_term = error * g_pid.Pk; p_term = error * G_PID_PK;
/* Compute I term */ /* Compute I term */
g_pid.err_sum += error; g_pid.err_sum += error;
i_term = g_pid.err_sum * g_pid.Ik; i_term = g_pid.err_sum * G_PID_IK;
/* Compute D term */ /* Compute D term */
d_term = (g_pid.val_prev - val) * g_pid.Dk; d_term = (g_pid.val_prev - val) * G_PID_DK;
g_pid.val_prev = val; g_pid.val_prev = val;
/* Final value */ /* Final value */