int led_pwm_servo_init_group_map(uint8_t timer_map, uint32_t channel_map) { if (timer_map == 0 || channel_map == 0) { return -EINVAL; } uint8_t tim_idx = 0; while (((timer_map >> tim_idx) & 1) == 0) { tim_idx ++; } while (((1 << tim_idx) & timer_map) != 0) { io_timer_init_timer(tim_idx); tim_idx ++; } /* uint8_t ch_idx = 0; while ((channel_map & 1) == 0) { channel_map >>= 1; } while (((1 << ch_idx) & channel_map) != 0) { led_pwm_channel_init(ch_idx); ch_idx ++; } */ up_pwm_servo_init(channel_map, 0); return OK; }
int led_pwm_servo_init(void) { /* do basic timer initialisation first */ for (unsigned i = 0; i < arraySize(led_pwm_timers); i++) { io_timer_init_timer(i); } /* now init channels */ for (unsigned i = 0; i < arraySize(led_pwm_channels); i++) { led_pwm_channel_init(i); } led_pwm_servo_arm(true); return OK; }
int led_pwm_servo_init(void) { /* do basic timer initialisation first */ for (unsigned i = 0; i < arraySize(led_pwm_timers); i++) { #if defined(BOARD_HAS_SHARED_PWM_TIMERS) io_timer_init_timer(i); #else led_pwm_timer_init_timer(i); #endif } /* now init channels */ for (unsigned i = 0; i < arraySize(led_pwm_channels); i++) { led_pwm_channel_init(i); } led_pwm_servo_arm(true); return OK; }