Здравствуйте, такая проблема: при измерении напряжения с помощью внутреннего АЦП появляются пропуски кода, например, напряжение 1.2В может резко перескочить на 0.8В и с 2.4В на 1.8. И так на 5 контроллерах, к источнику сигнала претензий нет. Код инициализации и считывания результата:
void ADC_Open(void)
{
a_pPMC-> PMC_PCER |= (1 << AT91C_ID_ADC);
a_pADC-> ADC_MR = (AT91C_ADC_STARTUP+AT91C_ADC_SHTIM+AT91C_ADC_PRESCAL&0x63 + AT91C_ADC_LOWRES_10_BIT);
a_pADC-> ADC_CR |= AT91C_ADC_SWRST;
}
float ADC_meas(char number)
{
a_pADC-> ADC_CHER = (1<<number);
a_pADC->ADC_CR = AT91C_ADC_START;
while((a_pADC->ADC_SR&(1<<number))!=(1<<number)){}
a_pADC-> ADC_CHDR |= (1<<number);
return (((a_pADC->ADC_LCDR&0x3ff)*3.3)/1024);
}