--------------------------------------------------------- ADMUX=0b01100001; // АЦП --------------------------------------------------------- //ADMUX //1... .... REFS1 - опорное напряжение - 0 //.1.. .... REFS0 - опорное напряжение - 1 - AVCC //..1. .... ADLAR - Выравнивание результата //...1 .... - //.... 1... MUX3 - номер канала //.... .1.. MUX2 - номер канала //.... ..1. MUX1 - номер канала //.... ...1 MUX0 - номер канала - ADC0...ADC7 (0000=ADC0) --------------- //REFS1=0 REFS0=0 - ИОН=AREF //REFS1=0 REFS0=1 - ИОН=AVCC //REFS1=1 REFS0=0 - не используется (зарезервировано) //REFS1=1 REFS0=1 - ИОН=2.56V (встроенный ИОН 2.56V) --------------- //ADLAR=1 // Выравнивание результата в левую сторону < (8-бит): // ADCH // 1111 1111 - читать вторым (или первым, тогда последии 2 бит теряем) // ADCL // 0000 0011 - читать первым //ADLAR=0 // Выравнивание результата в правую сторону > (10-бит): // ADCH // 0000 0011 - читать вторым // ADCL // 1111 1111 - читать первым --------------- // MUX3...MUX0 - номер канала: // 0000 - ADC0 // 0001 - ADC1 // ................. // 0111 - ADC7 // 1110 - ИОН (1,23V) ! ------------------------------------------------------ ADCSRA|=0b01000000; // Старт АЦП. ------------------------------------------------------ //ADCSRA //1... .... ADEN - 1- вкл ADC. (0-ADC не потребляет мощности) //.1.. .... ADSC - 1- Старт. При завершении преобразования сбрасывается аппаратно. //..1. .... ADFR - 1- режим Непрерывного Преобразования. //...1 .... ADIF - 1- флаг завершения преобразования -сброс программно. -для прерывания очищается аппаратно. //.... 1... ADIE - 1- Разрешение прерывания //.... .1.. ADPS2 - предделитель //.... ..1. ADPS1 - предделитель //.... ...1 ADPS0 - предделитель предделитель ADC: ADPS2 -ADPS1 -ADPS0 ------------------------------------- // 000: 1 МГц/2=500.000 Hz // 001: 1 МГц/2=500.000 Hz // 010: 1 МГц/4=250.000 Hz // 011: 1 МГц/8=125.000 Hz // 100: 1 МГц/16=62.500 Hz // 101: 1 МГц/32=31.250 Hz // 110: 1 МГц/64=15.625 Hz // 111: 1 МГц/128=7.812,5 Hz ------------------------------------- int a; int p,pb; ADCSRA=0b10000100; // вкл ADC. 250.000 Hz. //////////////////////////////////////////// ADC: ADMUX=0b01000101; // канал 5 delay_us(10); // стабилизация входа... ADCSRA|=0b01000000; // Старт преобразования. while (ADCSRA & 0b01000000); // При завершении преобразования сбрасывается аппаратно. ////////////////////////////////////////////// АЦП: adc(7); a=ADCW/2; if (a>ub+1) {u=a/2; ub=a;}; if (a