void light_dh_pwm_adj_proc(void *Targ) { uint8 i; for (i = 0; i < PWM_CHANNEL; i++) { duty_now[i] = (duty_now[i] * 15 + current_duty[i]) >> 4; if ( ABS_MINUS(duty_now[i],current_duty[i]) < 20) duty_now[i] = current_duty[i]; user_light_set_duty(duty_now[i], i); } //os_printf("duty:%u,%u,%u\r\n", pwm.duty[0],pwm.duty[1],pwm.duty[2] ); pwm_start(); if (check_pwm_current_duty_diff()) { change_finish = 0; os_timer_disarm(&timer_pwm_adj); os_timer_setfn(&timer_pwm_adj, (os_timer_func_t *) light_dh_pwm_adj_proc, NULL); os_timer_arm(&timer_pwm_adj, min_ms, 0); } else { os_printf("finish\n"); change_finish = 1; //light_save_target_duty(); os_timer_disarm(&timer_pwm_adj); light_pwm_smooth_adj_proc(); } }
void light_pwm_dh_adj_proc(void *Targ) { uint8 i; for(i=0;i<PWM_CHANNEL;i++){ duty_now[i] = (duty_now[i]*7 + current_duty[i])>>3; if( ABS_MINUS(duty_now[i],current_duty[i])<20 ){ duty_now[i] = current_duty[i]; } user_light_set_duty(duty_now[i],i); } //printf("duty:%u,%u,%u\r\n", duty_now[0],duty_now[1],duty_now[2] ); // pwm_init(light_param.pwm_period, light_param.pwm_duty,PWM_CHANNEL,pwmio_info); //lujian pwm_start(); if(check_pwm_current_duty_diff()){ change_finish = 0; os_timer_disarm(&timer_pwm_adj); os_timer_setfn(&timer_pwm_adj, (os_timer_func_t *)light_pwm_dh_adj_proc, NULL); os_timer_arm(&timer_pwm_adj, min_ms, 0); } else{ //printf("finish\n"); change_finish = 1; //light_save_target_duty(); os_timer_disarm(&timer_pwm_adj); light_pwm_smooth_adj_proc(); } }