44 if (pwm_percent > 100U) {
47 if (
s_ctx[
id].status.overcurrent) {
61 if (pwm_percent > 100U) {
64 if (
s_ctx[
id].status.overcurrent) {
99 if (current_sample_ma >
s_ctx[
id].status.peak_current_ma) {
105 if (
s_ctx[
id].over_ms < UINT16_MAX) {
120 const uint32_t force = ((uint32_t)
s_ctx[
id].status.peak_current_ma
123 (force > UINT16_MAX) ? UINT16_MAX : (uint16_t)force;
EpbStatus actuator_release(ActuatorId id, uint8_t pwm_percent)
static ActuatorCtx s_ctx[ACTUATOR_COUNT]
EpbStatus actuator_init(void)
ActuatorStatus actuator_get_status(ActuatorId id)
EpbStatus actuator_apply(ActuatorId id, uint8_t pwm_percent)
void actuator_isr_1khz(ActuatorId id, uint16_t current_sample_ma)
ISR-Hook fuer Strom-Sampling.
EpbStatus actuator_stop(ActuatorId id)
static bool is_valid_id(ActuatorId id)
Low-Level-Ansteuerung der EPB-Aktoren.
#define ACT_FORCE_PER_AMP_N
#define ACT_OVERCURRENT_WINDOW_MS
#define ACT_OVERCURRENT_LIMIT_MA
Strom-Limit (Spec) und Zeitfenster fuer Cutoff (Spec).
uint16_t clamping_force_n
ActuatorDirection direction