Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
/*
* pid.c
*
* Created on: Mar 20, 2017
* Author: kbumsik
*/
#include "pid.h"
void pid_reset(pid_handler_t *h)
{
h->setpoint = 0;
h->error = 0;
h->error_old = 0;
h->error_diff = 0;
h->error_sum = 0;
}
void pid_set_pid(pid_handler_t *h, pid_value_t *pid)
{
h->pid.kp = pid->kp;
h->pid.ki = pid->ki;
h->pid.kd = pid->kd;
}
void pid_input_setpoint(pid_handler_t *h, int32_t setpoint)
{
h->setpoint = setpoint;
}
int32_t pid_compute(pid_handler_t *h, int32_t feedback)
{
h->error = h->setpoint - feedback;
h->error_diff = h->error - h->error_old;
h->error_sum += h->error;
int32_t output = (h->pid.kp * h->error) +
(h->pid.ki * h->error_sum) +
(h->pid.kd * h->error_diff);
h->error_old = h->error;
return output;
}
1fc1053c2This file is pinned to the selected release. Download the original to open it in your design tool.