Прошу совет - где и что посмотреть по данному вопросу - опрос 6 кнопок с помощью АЦП.(по тексту пока одна)
Делаю так(побитная запись для моего же понимания ) -
//....Инициализация АЦП
//
ADCSRA.0=1; // ADPS0=1
ADCSRA.1=1; // ADPS0=1
ADCSRA.2=0; // ADPS0=0 коеффициент делителя частоты = 8
ADCSRA.5=1; //ADATE=1, непрерывное преобразование
ADCSRA.6=1; //ADSC=1, запуск цикла преобразования
ADCSRA.7=1; //ADEN=1, запуск АЦП
ADMUX.0=0; // выбор входа АЦП ADC0 (PA0)
ADMUX.1=0;
ADMUX.2=0;
ADMUX.3=0;
ADMUX.4=0; //
ADMUX.5=1; // выравнивание результата по левому краю
ADMUX.6=0; // REFS0=0
ADMUX.7=0; // REFS1=0 Опорное напряжение = AVcc
SFIOR=0; // режим непрерывного преобразования
////////////////////////////
if (ADCSRA.4==1) // проверка флага конца преобразования
ee_input1=ADCL; // блокировка доступа к регистрам данных(вроде надо)
ee_input=ADCH; // чтение регистра результата.
delay_ms(200);
if (ee_input<0b01100100) // сравнение (ee_input<100)
{
if (!state)
{
state=1;
startup();
} else
{
state=0;
shutdown();
}
} else
Главный вопрос - почему результат преобразования не соответствует посчитанному по ADC=1024*Vin/Vref?
для значений Vin
0,01
0,46
0,84
1,16
1,44
1,67, при любом Vin значение ee_input меньше 100 (b 1100100), положительный результат при проверке ee_input<0b01100100. Почему так выходит, что делаю не так?
Изложение путаное, может, но надеюсь на понимание
Социальные закладки