В общем, проблема такова. Никак не могу заставить работать АЦП в полном диапазоне. Опорное напряжение - 2,5 в, подается на VREF+ (земля, соответственно, на VREF-). Соорудил я делитель напряжения. Однако, когда я подаю на вход АЦП больше 1,2 В - цифровое значение максимально. Такое ощущение, что используется внутреннее опорное напряжение. Как я не пытался, ни дифференциальное измерение, ни обычное не измеряет больше 1,2 В (приблизительно). Может я что то не так делаю? В общем, прощу совета.
Настройка АЦП
Код
ADC0CON = ADC0EN | ADC0DIAG_OFF | HIGHEXTREF0 | ADC0CODE |
ADC0_ADC0_ADC1 | ADC0_EXT_REF | ADC0_PGA1;
ADCMDE = ADCCLKSEL | ADC_NORMAL_MODE | ADC_CONTINIUS;
ADC0_ADC0_ADC1 | ADC0_EXT_REF | ADC0_PGA1;
ADCMDE = ADCCLKSEL | ADC_NORMAL_MODE | ADC_CONTINIUS;
и на всякий случай определения макросов
Код
#define ADC0EN (1<<15)
#define ADC0DIAG_OFF (0<<13)
#define HIGHEXTREF0 (1<<12)
#define ADC0CODE (1<<10)
#define ADC0_ADC0_ADC1 (0<<6)
#define ADC0_EXT_REF (1<<4)
#define ADC0_PGA1 (0<<0)
#define ADCCLKSEL (1<<7)
#define ADC_NORMAL_MODE (0<<3)
#define ADC_CONTINIUS (1<<0)
#define ADC0DIAG_OFF (0<<13)
#define HIGHEXTREF0 (1<<12)
#define ADC0CODE (1<<10)
#define ADC0_ADC0_ADC1 (0<<6)
#define ADC0_EXT_REF (1<<4)
#define ADC0_PGA1 (0<<0)
#define ADCCLKSEL (1<<7)
#define ADC_NORMAL_MODE (0<<3)
#define ADC_CONTINIUS (1<<0)