X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=tinyboard.git;a=blobdiff_plain;f=projects%2Fstep-up%2Fpwmled.c;h=2ede13b3026bec1ac80ef2d68bf755125ff045b2;hp=b066c59e8824bd67e1f84e645ac95f9bda66dceb;hb=HEAD;hpb=e207868d62200cd821bc1a1893913fbafe1efc77 diff --git a/projects/step-up/pwmled.c b/projects/step-up/pwmled.c index b066c59..2ede13b 100644 --- a/projects/step-up/pwmled.c +++ b/projects/step-up/pwmled.c @@ -25,8 +25,7 @@ static uint16_t adc_max = MA_TO_ADC(30); static uint16_t targets[N_PWMLED_MODES] = { MA_TO_ADC( 2), - MA_TO_ADC( 8), - MA_TO_ADC(14), + MA_TO_ADC(10), MA_TO_ADC(20), }; @@ -46,18 +45,25 @@ void init_pwmled() state = ST_OFF; } -void pwmled_set_mode(unsigned char mode) +void pwmled_set_target(unsigned char mode) +{ + target = targets[mode]; + mode_changed = 1; +} + +void pwmled_on_off(unsigned char mode) { if (!ST_CAN_SET_MODE(state)) return; if (mode) { - target = targets[mode - 1]; state = ST_ON; mode_changed = 1; + need_pwmled_adc = 1; pwm_set(pwm_val); } else { state = ST_OFF; + need_pwmled_adc = 0; pwm_off(); } } @@ -69,6 +75,8 @@ static inline void pwmled_err() log_byte(0xF1); log_flush(); + + set_error(ERR_PWMLED); } @@ -106,6 +114,7 @@ void pwmled_adc(uint16_t adcval) if (pwm_val >= PWM_MAX || (pwm_val > (2*PWM_MAX/3) && adcval < 0x08)) { pwmled_err(); + need_pwmled_adc = 0; return; }