Полная версия этой страницы:
АЦП
Zelepuk
Mar 12 2011, 10:54
Здравствуйте!
Хочу считать данные с АЦП. АЦП 8-ми канальный, данные считываю по паралельной шине микроконтроллером, а затем вывожу числа на экран компьютера (через COM-порт).
Тестирую АЦП, подавая на первый вход 5в (максимальное напряжение)
Так вот считанные данные поступают в циклический буфер. Когда забираю данные только с одного канала (один раз дёргаю RD), то данные отображаются как и должно быть один за другим:
32657
32657
32657
32657
.
.
.
Когда считываю данные из 8-ми каналов(8 раз дёргаю RD) и вывожу на экран циклически все данные то видно что по первому каналу наблюдаются аномалии время от времени:
32657 // 1 канал
10323 // 2 канал
10323 // 3 канал
10323 // 4 канал
10323 // 5 канал
10323 // 6 канал
10323 // 7 канал
10323 // 8 канал
5324 // 1 канал
.
.
.
16323 // 1 канал
.
.
.
32657 // 1 канал
С чём это может быть связано? Странно что эти аномалии проявляются толкьо если считываю больше 1 канала. (значит с самим сигналом всё впорядке и дело в связке АЦП+процессор)
Может кто сталкивался?...
alexPec
Mar 12 2011, 11:49
АЦП какой? Числа на первом канале всегда одинаково меняются или случайно, т.е. одни и те же числа на выходе первого канала или случайные? На остальные каналы что подключено? На атмеге похожий эффект был, после переключения канала надо было подождать, иначе влияло как-то напряжение того канала который до этого был включен. Так и не поборол. Пришлось ожидание оставить, скорость опроса снижалась.
нечитатель
Mar 12 2011, 17:26
Цитата(alexPec @ Mar 12 2011, 14:49)

после переключения канала надо было подождать,
пока ёмкость входа АЦП зарядится либо разрядится до нового напряжения.
Можно "бороть" увеличением тока зарядки/разрядки. Если удастся организовать бесконечно большой этот ток, то ждать придётся ровно 0 микросекунд.
По сабжу:
1). добрый вечер,
2). это может быть связано с ошибкой в программе,
3). да, кто-нибудь сталкивался может.
alexPec
Mar 12 2011, 20:02
Цитата(нечитатель @ Mar 12 2011, 20:26)

Можно "бороть" увеличением тока зарядки/разрядки.
Как если коммутатор внутри? На вход коммутатора помню с опера ad831 подавалось, крутой опер по тем временам, куда уж больше ток?
Stepanov
Mar 12 2011, 21:02
Вопрос задан слабо. Нет информации о ситуации. Какие МС? Какая схема? Какая программа?
нечитатель
Mar 13 2011, 01:55
Цитата(alexPec @ Mar 12 2011, 23:02)

Как (...) ?
Любыми способами, которые а). доступны + б). целесообразны.
Ещё раз: для
мгновенной перезарядки конденсатора ток должен быть
бесконечным...
... а процессор, работающий на бесконечно большой тактовой частоте, сможет потом мгновенно же обработать любое количество любых результатов любых измерений. И тоже было бы интересно: как?
Цитата
крутой опер по тем временам, куда уж больше ток?
ээээ... извините, отстаю от прогресса. Раньше ток от учёного Ома зависел.
ТС - 2 с минусом! "Как челобитную царю подаешь?" "ИВМП"
TM
Если речь идёт о том, что МК бежит вперёд АЦП (паровоза) - всё понятно.
Если речь идёт о сигма-дельтовых АЦП, то ничего непонятно!
Если речь идёт о АЦП на компараторах, например, как у Maxim, тоже непонятно!
"Огласите весь список пжлст!"
Цитата(Stepanov @ Mar 13 2011, 00:02)

Вопрос задан слабо. Нет информации о ситуации. Какие МС? Какая схема? Какая программа?

Это фирменный стиль автора(ов) (иногда их двое).
Если автор не напишет ничего толкового в ближайшее время, эта тема пойдет в корзину, а автору воздастся за флуд.
Zelepuk
Mar 13 2011, 11:42
АЦП AD7606 (АЦП одновременной выборки по всем 8 каналам) и микроконтроллер AVR.
В прерывании от АЦП делаю следующее:
Выставляю сигнал CS/RD (они объеденены - закорочены).
Забираю данные в паралельном виде и ложу в буфер по указателю,
затем убираю CS/RD и икрементирую указатель,
Затем опять выставляю CS/RD и так далее.... 8раз!
Про само прерывание: микроконтроллер подаёт на АЦП импульсы с периодом 20мкс(запуская преобразование), микроконтроллер по положительному фронту каждого такого импульса запускает преобразование по всем 8-ми каналам, и посылает сигнла на микрокотроллер на вход внешнего прерывания, по спаду на котором и запускается программа описаная выше....
Надеюсь исчерпывающе написал....
___________________________________
для Tanya:
какой ещё флуд? Ла однажды я написал от чужого ника случайно.... никак не пойму что тут такого?
Вот у кого-то была похожая проблема. Значит тема не флуд.
DpInRock
Mar 13 2011, 12:29
Неисчерпывающе.
Параллельного интерфейса там 2 вида.
Zelepuk
Mar 13 2011, 12:41
Я использую Reading After Converstion и CS and RD, Linked Parallel Mode
DpInRock
Mar 13 2011, 12:45
Страница 27.
Какой вид интерфейса 8 разрядов или 16?
---
Судя по всему это для вас полная неожиданность.
Когда используешь новую для себя микросхему, обычно скачиваешь примере применения от производителя.
Со всей схемотехникой и программами.
И тогда неожиданностей существенно меньше.
На сайте аналога есть подобная информация. 61.7 мегабайт информации по этой микросхеме.
Zelepuk
Mar 13 2011, 12:57
Да простите забыл использую интерфейс 8 разрядов. Так как работаю c AVR и складываю потом данные правильно, так как преобразование по одному каналу работает сиправно.
Просто если забираю больше одного - появляются "аномалии" описаные выше...
DpInRock
Mar 13 2011, 13:02
1. Тогда описание вашего алгоритма неверное. Данные идут в два пульса РД.
2. Что дает вам уверенность, что микросхема ЗНАЕТ о том, что вы работаете именно по этому интерфейсу?
--
3. До кучи. Что дает вам уверенность, что старший бит считываемого слова на самом деле не является МЛАДШИМ битом значения напряжения?
Цитата(Zelepuk @ Mar 13 2011, 14:42)

Надеюсь исчерпывающе написал....
___________________________________
для Tanya:
какой ещё флуд? Ла однажды я написал от чужого ника случайно.... никак не пойму что тут такого?
Вот у кого-то была похожая проблема. Значит тема не флуд.
Почитайте правила. Вы и Ваши действия подпадают. Следите за словами и их смыслом. Думаю, что такая форма выражения уважения собеседника, будет всеми адекватно оценена.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.