rendered paste bodystruct pwm_s {
int port;
int interval_len;
int interval_done;
}
pwm_s g_pwm[3];
void irq_handler(int msec_elapsed) {
controll_handler(msec_elapsed);
for (int i = 0; i < 3; i++)
pwm_handler(i, msec_elapsed);
}
void controll_handler(int msec_elapsed) {
// handle fades, set pwm intervals
}
void pwm_handler(int i, int msec_elapsed) {
g_pwm[i].interval_done += msec_elapsed;
if (g_pwm[i].interval_done >= g_pwm[i].interval_len) {
flip_port(g_pwm[i].port);
g_pwm[i].interval_done = 0;
}
}