Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: АЦП PIC16F690
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
asp
Добрый день уважаемый ALL!

При тестировании работы модуля АЦП в контроллере PIC16F690 столкнулся с такой ситуацией:

Опрашиваю три канала (по очередно, для исключения лишних влияющих факторов перед каждым опросом изменяю прошивку, изменяя только номер канала).

Настройки и фрагмент кода отвечающий за преобразование и передачу в ПЭВМ:

GIE = 0; // Запрещаем все прерывания (глобально)

TRISA = 1; // ANSEL = 0b00000111; // AN0, AN1, AN2 аналоговый вход
ANSELH = 0b00000100; // AN10 аналоговый вход


/* кофигурирование АЦП ADCON0
bit_0 (1) (ADON) включение АЦП - 1/0 включен/выключен,
bit_1 (0) (GODONE) - 1/0 - включение преобразования/преобразование закончено
bit_5:2 (0000) (CHSx) - выбор канала считывания (0000 = канал 0)
bit_6 (0)(VCFG) - выбор источника опрного напряжения 1/0 pin/VDD
bit_7 (1)(ADFM) - выравнивание результата 1/0 правое/левое */

ADCON0 = 0b10101001;

/* кофигурирование АЦП ADCON1
bit_3:0 резерв
bit_6:4 (101) (ADCSx) - выбор частоты преобразования для 4 МГц Fosc/16 (Fosc/8 !!! Работает некорректно)
bit_7 резерв */

ADCON1 = 0b00010000;

Delay(2);

for (i = 0; i < 40; i += 2)
{
GODONE = 1;
while(GODONE); // ждем окончания преобразования

gData.Data[i] = ADRESL;
gData.Data[i+1] = ADRESH;
Delay(2);
}

SendByte(START_BYTE);
SendByte(44);
SendByte(gData.DeviceId);

for (i = 0; i < 40; i++)
{
SendByte(gData.Data[i]);
}

SendByte(gData.DataCRC);
gState = stWaitStartByte;
}

Не понятно почему 2 канала (AN0 и AN2) считываются приблизительно одинаковые значения, а канал АN1 выдает существенно заниженные результаты, причем если подать на вход напряжение питания (Uref для эксперемента используюю Udd), то вместо 1023 выдает 1021.

в каналах AN0 и AN2 первые три считывания массива как правило отличаются от всех остальных (17), причем результат первого считывания уходит за пределы 3-сигма, повторяемость этого феномена очень высокая, что наводит мысль о систематической его природе.
Вход АЦП подключен к емкости (1 мкф) опорного источника (может его резистором нужно подтягивать к GND ?)

Подскажите пожалуйста может я что то упустил?
asp
Уже разобрался сам, smile.gif , проблема с задержкой и настрокой рег. TRISA,
разброс результатов практически не выходит за один младший зн. разряд.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.