Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Похоже очередная "особенность" AVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
ArtemKAD
Может уже кто заметил...
У AtMega48 наблюдается "перетекание" напряжения из одного канала АЦП в другой если переключение происходит при работе со SLEEP-сорежимом (в т.ч. IDLE). Если SLEEP-а нет или делать холостое преобразование (можно принудительно выключая, а затем включая АЦП сделать 25-тактное преобразование), то проблем с взаимной связью между каналами не наблюдается.
Эффект связан только с переключением MUX-ов, с переключением REFS-ов вроде все Ок...
SasaVitebsk
Вроде я мельком в даташите читал о необходимости холостого измерения при выходе из sleep. Написано просто - данные не верны.
ArtemKAD
В даташите не нашел sad.gif . Тем более ADC Noise Canceler завязан на Sleep.
Они не просто не верны - они взяты с некоторым коэффициентом из предыдушего канала. Если не делать переключения каналов - никаких замечаний не обнаружено.
defunct
В m16/32 наблюдается тот же эффект и без sleep'a.
Я просто пропускаю первый рез-тат преобразования после смены канала.
mse
Этой особенности сто лет в обед сёдня. Конденсаторные АЦП с фиксированным временем сэмплирования и узкой полосой пропускания этой болезнью болеют от рождения.
Работай на низкой тактовой АЦП. И всё.
ArtemKAD
Цитата
Конденсаторные АЦП с фиксированным временем сэмплирования и узкой полосой пропускания этой болезнью болеют от рождения.
Работай на низкой тактовой АЦП. И всё.

Не думаю, что тут дело именно в конденсаторе - без использования Sleep-а в AtMega48 никаких проблем не обнаружил.
Собственно так на грабли и наткнулся. В одной части программы был Sleep, а в другой небыло. Вот оно и работало полностью корректно тогда, когда проц. не засыпал. Как только убрал Sleep-ы во всей программе - так проблема и исчезла...

Кроме того, не думаю, что 260мкс преобразование это "быстрая тактовая" для АЦП AVR
VDG
Тысячу раз здесь на форуме уже разжёвывали -> сменил канал - пропусти одно преобразование.
ArtemKAD
Цитата
Тысячу раз здесь на форуме уже разжёвывали -> сменил канал - пропусти одно преобразование.

Т.е. тысячу раз советовали увеличивать в два раза частоту выборок?!

Как по мне - проще избавиться от sleep-а
mse
Цитата(ArtemKAD @ May 7 2007, 18:41) *
Не думаю, что тут дело именно в конденсаторе - без использования Sleep-а в AtMega48 никаких проблем не обнаружил.
Собственно так на грабли и наткнулся. В одной части программы был Sleep, а в другой небыло. Вот оно и работало полностью корректно тогда, когда проц. не засыпал. Как только убрал Sleep-ы во всей программе - так проблема и исчезла...

Кроме того, не думаю, что 260мкс преобразование это "быстрая тактовая" для АЦП AVR

Слип тут побоку. Просто при полосе пропускания канала АЦП Меги около 20-40КГц, имеешь все шанцы огрести остаточный заряд на УВХ от предыдущего канала/измерения. Бо время сэмпла УВХ=1,5 такта АЦП. А Р-Ц, типа, остаёцца постоянным. Одно дело когда Тсэмпл=15мкс, другое - когда 1,5мкс.
ArtemKAD
Так я и говорю - сэмпл 20мкс. На переключение более чем достаточно. Пробовал не засыпать в течении первых 3-х сэмплов - эффект без изменений.
mse
Цитата(ArtemKAD @ May 8 2007, 12:51) *
Так я и говорю - сэмпл 20мкс. На переключение более чем достаточно. Пробовал не засыпать в течении первых 3-х сэмплов - эффект без изменений.

ХЗ.На 1МГц у м128 был заметный эффект. Канал со значением 1000 вызывал на другом ~10. Да и то удалось убрать. Забыл как, правда. Наверное частотой. А м48 у меня очень хорошо работала. Правда на ней BPF был. Всё отфильтровывалось, наверное.
NVade
А какое выходное сопротивление источника? Если это высокоомный делитель или медленный ОУ - вот и будет проникновение каналов при коммутации больше. На следующей неделе ради интереса посмотрю - есть ли отличие у M88 по сравнению со старыми мегами по проникновению.
Я обычно коммутирую мультиплексор по окончании текущего преобразования. К началу следующего все устаканивается. Делается что-то типа AutoScan в MSP.
sadat
Согласен с NVade - сопротивление источника напряжения играет очень важную роль. Если источник напряжения - резестивный делитель (к примеру, мониторинг напряжения питания, батарейки и т.п.) и частота изменений мала - советую поставить конденсатор на вход АЦП мк - 0.1-1мк - смазанные предыдущие значения исчезнут.

К стати, по ДШ выходное сопротивление источника - не больше 10кОм, надо учитывать....
ArtemKAD
Один вход - 300 ом, второй - 220ком||0,15мкФ. Взаимное влияние в обе стороны.
Еще раз - без sleep-а не "перетекает"...
defunct
Цитата(ArtemKAD @ May 8 2007, 09:26) *
Т.е. тысячу раз советовали увеличивать в два раза частоту выборок?!
Как по мне - проще избавиться от sleep-а

Неизвестно что будет эффективнее - удвоенная частота выборок или отключение sleep.

Убрав sleep вы не сможете воспользоваться фичей sleep mode noise canceller. А значит потеряете в точности преобразования..

Вы можете увеличить частоту семплирования АЦП вдвое - ( у вас это будет 130mks на преобразование) 7Khz - без ущерба точности. Первое преобразование после смены канала делать грубым (без перехода в Sleep режим) во время этого преобразования можно обрабатывать данные полученные с предыдущего канала. Второе преобразование делать с помощью sleep.

Одновременно вы решите вопрос переносимости на старые меги, где вляние на соседние каналы есть и без sleep.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.