uint read_adc(uchar adc_input) { ADMUX=adc_input | (0x00 & 0xff); delay_us(10); ADCSRA|=0x40; //START THE CONVERSION while ((ADCSRA & 0x10)==0); // wait for the conversion to complete ADCSRA|=0x10; //clear the ADC flag return ADCW; }
В: Что означает «ADMUX = adc_input | (0x00 & 0xff)»? какой входной канал мы выбрали здесь?
0x00 & 0xFF не имеет смысла, так как всегда будет иметь значение 0. Вы можете переписать эту строку как ADCMUX = adc_input;
0x00 & 0xFF
ADCMUX = adc_input;
Выбранный вами канал будет значением, сохраненным в adc_input
adc_input