Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: АЦП в AT91SAM7S256
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Александр_Алексеев
Здравствуйте, такая проблема: при измерении напряжения с помощью внутреннего АЦП появляются пропуски кода, например, напряжение 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);
}
deadman
Были такие же проблемы изза грязного питания процессора.
Проверьте питание?
DmitryM
Цитата(Александр_Алексеев @ Jan 14 2008, 08:18) *
Здравствуйте, такая проблема: при измерении напряжения с помощью внутреннего АЦП появляются пропуски кода, например, напряжение 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);
}


Дык самое первое что приходит на ум, ADVREF контроллировали???
Если плавает опора, код тоже плавать будет. Чем стабилизировали??? Как задавали???
Александр_Алексеев
Цитата(deadman @ Jan 14 2008, 10:27) *
Были такие же проблемы изза грязного питания процессора.
Проверьте питание?


Плата olimex SAM7-MT-256, опорное +3,3В с этой же платы
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.