ацп настроен вот так:
Код
void InitAdc(void)
{
ADMUX = (0 << REFS2) | (0 << REFS1) | (1 << REFS0) | (0 << ADLAR) |
(0 << MUX3) | (0 << MUX2) | (0 << MUX1) | (1 << MUX0);
ADCSRA = (1 << ADEN) | (1 << ADSC) | (0 << ADATE) | (0 << ADIF) |
(1 << ADIE) | (1 << ADPS2) | (1 << ADPS1) | 0 << (ADPS0);
ADCSRB = 0;
DIDR0 = (INT8U)(1 << ADC1D);
}
{
ADMUX = (0 << REFS2) | (0 << REFS1) | (1 << REFS0) | (0 << ADLAR) |
(0 << MUX3) | (0 << MUX2) | (0 << MUX1) | (1 << MUX0);
ADCSRA = (1 << ADEN) | (1 << ADSC) | (0 << ADATE) | (0 << ADIF) |
(1 << ADIE) | (1 << ADPS2) | (1 << ADPS1) | 0 << (ADPS0);
ADCSRB = 0;
DIDR0 = (INT8U)(1 << ADC1D);
}
электрическая схема сделана таким образом, что происходит измерение напряжения на движке потенциометра (потенциометр - в скважинном приборе). Нижний конец резистора на земле, верхний - через подстроечник запитан от стабилизатора. Подстроечник нужен для регулировки тока через потенциометр. Опора АЦП подключена прямо к верхнему концу потенциометра. Таким образом, при изменении положения подстроечника, меняется ток и напряжение на потенциометре, но показания АЦП меняться не должны, т.к. опора меняется пропорционально измеряемому напряжению.
Но на самом деле при напряжении на верхнем конце потенциометра (т.е. опорное напряжение АЦП) ниже примерно 2 В, сначала показания ползут вверх, потом вообще начинается зашкал.