+ if (current_adc == ADC1_GAIN20) {
+ // running average
+ adc1_gain20_offset += adcval
+ - (adc1_gain20_offset >> ADC1_GAIN20_OFFSET_SHIFT);
+ } else if (current_adc == 0 || current_adc == 1) {
+ uint16_t offset = adc1_gain20_offset
+ >> (ADC1_GAIN20_OFFSET_SHIFT - sum_shift);
+ if (adc_sum > offset)
+ adc_sum -= offset;
+ else
+ adc_sum = 0;
+ }
+