АЦП Cygnal (ADC Cygnal) unstable?

Hi, ALL!

Используем 12-bit АЦП Cygnal. (8051F020) Значения получаются крайне не устойчивые. Камень работает на опорной частоте > ~22 MHz. Скорость преобразования установлена как рекомендуется: ADC0CF = (SYSCLK/2500000) << 3;

Значения не стабильны даже при подключении эталонного сигнала (элемента питания). Не стабильность заключается в том, что периодически значения падают к нулю (или около того). При подключении к входу земли --- ноль держится нормально.

Куда копать?

WBR, Alexei K.

Reply to
Alexei K.
Loading thread data ...

Hello, Alexei! You wrote in conference fido7.RU.EMBEDDED to All on Sun, 11 Apr 2004

08:46:25 +0400: AK> ADC0CF = (SYSCLK/2500000) << 3; это максимум, попробуй частоту поменьше сделать

AK> Значения не стабильны даже при подключении AK> эталонного сигнала (элемента питания). подробнее схему - может времени hold не хватать.

AK> Hе стабильность заключается в том, что AK> периодически значения падают к нулю (или около того). говорите точно - сколько в отсчетах ;=)

AK> Куда копать? в сторону обеда.

With best regards, Peter Kostenko.

----

formatting link

Reply to
Peter Kostenko

"Peter Kostenko" snipped-for-privacy@p2.f.n5015.z2.fidonet.org> сообщил/сообщила в новостях следующее: news: snipped-for-privacy@p2.f.n5015.z2.ftn...

ADC0CF скорость преобразования меняется от 0 до 31. Частоту поменьше сделать, т.е. увеличивать значение?

Время hold. Чтоб его хватило, что нужно устанавливать? ADC0CF?

Схему подключения батарейки? Да там вроде все элементарно.

Измерения производятся программным опросом. AD0BUSY=1; while(AD0INT==0); // имеем результат ADC0H и ADC0L

период я не определял. фиг его знает.

В проге задействовано много прерываний. (serial, timers, external int0) Измерения всех 8 каналов производится в обработчике external int0. типа: for( i=0; i<8; ++i) { // выбрать канал // измерить (процедура выше) // сохранить результат в буфере };

Используется внутреннее опорное напряжение.

WBR, Alexei K.

Reply to
Alexei K.

Hello, Alexei! You wrote in conference fido7.RU.EMBEDDED to Peter Kostenko on Wed, 14 Apr

2004 19:04:30 +0400: AK>>> ADC0CF = (SYSCLK/2500000) << 3; ??>> это максимум, попробуй частоту поменьше сделать AK> ADC0CF скорость преобразования меняется от 0 до 31. AK> Частоту поменьше сделать, т.е. увеличивать значение?

то что пишется в ADCOFC увеличивать

??>> подробнее схему - может времени hold не хватать. AK> Время hold. Чтоб его хватило, что нужно устанавливать? AK> ADC0CF?

см ниже

AK>>> периодически значения падают к нулю (или около того). ??>> говорите точно - сколько в отсчетах ;=) AK> период я не определял. фиг его знает.

разрядов сколько "плавает"?

AK> for( i=0; i<8; ++i) AK> { AK> // выбрать канал AK> // измерить (процедура выше) AK> // сохранить результат в буфере AK> };

внимательно прочитать

46Rev. 1.45.2.3.Settling Time Requirements

после выбора канала необходимо a minimum settling (or tracking) time is required before an accurate conversion can be performed.

если время это не выдержать (hold), то АЦП "схватит" непонятное значение со входа.

With best regards, Peter Kostenko.

----

formatting link

Reply to
Peter Kostenko

"Peter Kostenko" snipped-for-privacy@p2.f.n5015.z2.fidonet.org> сообщил/сообщила в новостях следующее: news: snipped-for-privacy@p2.f.n5015.z2.ftn...

Большое спасибо! Теперь все работает.

WBR, Alexei K.

Reply to
Alexei K.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.