Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
2886a7f48This file is pinned to the selected release. Download the original to open it in your design tool.
#include "hal.h"
HAL_COMP(ac);
HAL_PIN(in);
HAL_PIN(ac);
HAL_PIN(out);
struct ac_ctx_t {
float avg;
};
static void rt_func(float period, volatile void *ctx_ptr, volatile hal_pin_inst_t *pin_ptr) {
struct ac_ctx_t *ctx = (struct ac_ctx_t *)ctx_ptr;
struct ac_pin_ctx_t *pins = (struct ac_pin_ctx_t *)pin_ptr;
float i = PIN(in);
float a = PIN(ac);
ctx->avg = i * a + ctx->avg * (1 - a);
PIN(out) = i - ctx->avg;
}
const hal_comp_t ac_comp_struct = {
.name = "ac",
.nrt = 0,
.rt = rt_func,
.frt = 0,
.nrt_init = 0,
.hw_init = 0,
.rt_start = 0,
.frt_start = 0,
.rt_stop = 0,
.frt_stop = 0,
.ctx_size = sizeof(struct ac_ctx_t),
.pin_count = sizeof(struct ac_pin_ctx_t) / sizeof(struct hal_pin_inst_t),
};