VREF - половина питания. Входы ADC подтянуты к питанию через 51к. Меряю статический сигнал (опрос кнопок подлюченных по принципу R2R) на 4 канале. 5 канал - только подтяжка, сигнал не подается.
#define TRGEN (0x0) #define TRGSEL (0x0) #define LOWRES (0x0) #define SLEEP (0x0) #define PRESCAL (0x0) #define STARTUP (0x11) #define SHTIM (0x3) Инициализация: AT91C_BASE_ADC->ADC_CR = AT91C_ADC_SWRST; AT91C_BASE_ADC->ADC_MR = (SHTIM << 24) | (STARTUP << 16) | (PRESCAL << 8) | (SLEEP << 5) | (LOWRES <<4) | (TRGSEL << 1) | (TRGEN ); AT91C_BASE_ADC->ADC_CHER = (1<<CHANNEL4)|(1<<CHANNEL5); AT91C_BASE_ADC->ADC_CR = AT91C_ADC_START;
Считывание в цикле: while (!( (AT91C_BASE_ADC->ADC_SR & (1<<CHANNEL4)|(1<<CHANNEL5)) == (1<<CHANNEL4)|(1<<CHANNEL5)) ); scan_data4 = AT91C_BASE_ADC->ADC_CDR4; scan_data5 = AT91C_BASE_ADC->ADC_CDR5; AT91C_BASE_ADC->ADC_CR = AT91C_ADC_START;
При подаче какого либо уровня на 4 канал изменяется не только scan_data4, но и scan_data5. т.е. если было 3FF то становится 3FE, 3F0 - младшие глючат. В чем причина? Еррату смотрел, вроде ничего нет такого.
|