реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> АЦП в AT91SAM7S256, Пропуск кода
Александр_Алексе...
сообщение Jan 14 2008, 05:18
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 10-12-07
Из: Тверь
Пользователь №: 33 140



Здравствуйте, такая проблема: при измерении напряжения с помощью внутреннего АЦП появляются пропуски кода, например, напряжение 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);
}
Go to the top of the page
 
+Quote Post
deadman
сообщение Jan 14 2008, 07:27
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 21
Регистрация: 13-09-07
Пользователь №: 30 506



Были такие же проблемы изза грязного питания процессора.
Проверьте питание?
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Jan 14 2008, 07:31
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(Александр_Алексеев @ 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 контроллировали???
Если плавает опора, код тоже плавать будет. Чем стабилизировали??? Как задавали???
Go to the top of the page
 
+Quote Post
Александр_Алексе...
сообщение Jan 15 2008, 04:34
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 10-12-07
Из: Тверь
Пользователь №: 33 140



Цитата(deadman @ Jan 14 2008, 10:27) *
Были такие же проблемы изза грязного питания процессора.
Проверьте питание?


Плата olimex SAM7-MT-256, опорное +3,3В с этой же платы
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 03:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.02718 секунд с 7
ELECTRONIX ©2004-2016