#include
#include
#include
/* === System tick and scheduling === */
#define TICK_1MS 1
#define LOOP_1MS_DIV 1
#define LOOP_10MS_DIV 10
#define LOOP_100MS_DIV 100
/* === Engine and tooth model (example: 60-2 wheel) === */
#define TEETH_PER_REV 58u
#define MISSING_TOOTH_GAP 2.0f // relative gap threshold
#define MAX_ENGINE_RPM 6000.0f
#define MIN_CRANK_SYNC_RPM 50.0f
/* === Injection limits (demo values) === */
#define MAX_FUEL_MG_STROKE 60.0f
#define MIN_INJ_US 150.0f
#define MAX_INJ_US 3000.0f
/* === Simple PI controller struct === */
typedef struct {
float kp, ki;
float i_term;
float out_min, out_max;
} PI_t;
static inline float pi_step(PI_t * pi, float err, float dt_s) {
pi -> i_term += pi -> ki * err * dt_s;