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

 
 
> переключение каналов АЦП в C8051F320, задержка при считывании
NikP
сообщение Mar 18 2010, 08:20
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 168
Регистрация: 25-08-05
Пользователь №: 7 944



Делаю устройство в котором постоянно измеряется сигнал с одного входа (однофазный режим ). При наступлении некоторых условий нужно переключить вход АЦП на другой канал, измерить сигнал, и вернуться на первый. Все что касается этой части привожу ниже.
//-------------------------
// Adc_Init
//-------------------------

void Adc_Init(void)
{
REF0CN = 0x0E;
AMX0P = 0x08; // начало измерения с P2.0
AMX0N = 0x1F; // однофазный режим

ADC0CF = 0x08; // частота дискретизации, формат выходных данных
ADC0CN = 0x80; // преобразование начинается при установке бита AD0BUSY

}
//---------------------------
// Main Routine
//---------------------------


while (1)
{
.
.
.
if(k)
{

AMX0P = 0x09; // на вход АЦП подключается напряжение
// с калибровочного канала
AD0BUSY = 1;
//**3
V_out_k=Cena_razr*ADC_out; //**1
.
//***1
.
AMX0P = 0x08; // на вход АЦП подключается рабочий канал
AD0BUSY = 1;
//**4
V_out=Cena_razr*ADC_out; //**2
.
//***2
.
}

.
.
.
При работе в отладчике заметил, что в точке , помеченной //**1 V_out_k показывает не значение на входе канала k , а значение рабочего канала. Соответственно, в точке //**2 V_out наоборот показывает значение на входе канала k, а не значение рабочего ( происходил останов программы в точках,условно обозначенных //***1 и //***2).
Попытался в точки //**3 и //**4 вставить задержку порядка 65 мс - не помогло.
Когда в эти точки вставил пустой цикл ( т.е. считывал данные в пустоту)

for(N=0;N<5;N++)

{

ADC_out_buf=ADC_out;
AD0BUSY = 1;
}

показания стали соответствовать истинным.
В даташите заметил только замечания насчет необходимости дать время зарядиться входным конденсаторам ( порядка нескольких пф), и ничего насчет пустого считывания. Но неужели задержки 65 мс мало для заряда пикофарадной емкости?
Вопрос такой: что может приводить к такой ситуации и можно ли сделать более грамотно ( с точки зрения работы микроконтроллера).
Go to the top of the page
 
+Quote Post



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

 


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


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