X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=firmware%2Fpwmled.c;h=d5d947be2d011a396353b11cc7f88f93824a5ae9;hb=64a3d3a699cd60b7a6b4b06c5c38689975a3d460;hp=b76f219fb32b1c597358832f333be26c621d50f4;hpb=e971b58770e16921fab0d94fcca8be4ff0a057f5;p=bike-lights.git diff --git a/firmware/pwmled.c b/firmware/pwmled.c index b76f219..d5d947b 100644 --- a/firmware/pwmled.c +++ b/firmware/pwmled.c @@ -4,9 +4,9 @@ static uint16_t pwm_vals[N_PWMLEDS*N_PWMLED_MODES]; static uint16_t pwm_max[N_PWMLEDS] = { - PWM_MAX/2, + 2*PWM_MAX/3, PWM_MAX - (PWM_MAX >> 4), // step-up - PWM_MAX/2 + 2*PWM_MAX/3 }; #define PWMLED2_TESTING_WITH_350MA_LED @@ -86,15 +86,6 @@ void pwmled_init() } } -unsigned char pwmled_needs_adc(unsigned char n) -{ - unsigned char st = pwmled_state[n]; - if (st == ST_PROBING || st == ST_ON) - return 1; - else - return 0; -} - unsigned char pwmled_enabled(unsigned char n) { unsigned char st = pwmled_state[n]; @@ -146,7 +137,7 @@ static void inline probing_adc(unsigned char n, uint16_t adcval) #endif if (adcval > adc_max[n] // Too high - || (pwm == 0 && adcval > 0) // non-zero voltage with zero PWM + || (pwm == 0 && adcval > 2) // non-zero voltage with zero PWM ) { pwm_off(n); pwmled_state[n] = ST_DISABLED; @@ -239,7 +230,14 @@ static void inline on_adc(unsigned char n, uint16_t adcval) if (new_pwm > (int16_t)pwm_max[n]) { // FIXME: disconnected? - new_pwm = pwm_max[n]; + log_byte(0xE1); + log_byte(n); + log_word(new_pwm); + log_word(adcval); + log_word(jiffies); + pwmled_state[n] = ST_DISABLED; + pwm_off(n); + return; } if (new_pwm < 1) { @@ -270,6 +268,8 @@ void pwmled_adc(unsigned char n, uint16_t adcval) probing = 1; if (!probing) { + log_word(0x5555); + log_word(jiffies); for (i = 0; i < N_PWMLEDS; i++) log_byte(pwmled_state[i]); @@ -277,6 +277,8 @@ void pwmled_adc(unsigned char n, uint16_t adcval) log_word(pwm_vals[i]); log_flush(); log_set_state(4); + for (i = 0; i < N_PWMLEDS; i++) + led_set_pattern(i, mode1_pattern); } #endif