Перейти к содержанию
    

Похоже очередная "особенность" AVR

Может уже кто заметил...

У AtMega48 наблюдается "перетекание" напряжения из одного канала АЦП в другой если переключение происходит при работе со SLEEP-сорежимом (в т.ч. IDLE). Если SLEEP-а нет или делать холостое преобразование (можно принудительно выключая, а затем включая АЦП сделать 25-тактное преобразование), то проблем с взаимной связью между каналами не наблюдается.

Эффект связан только с переключением MUX-ов, с переключением REFS-ов вроде все Ок...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вроде я мельком в даташите читал о необходимости холостого измерения при выходе из sleep. Написано просто - данные не верны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В даташите не нашел :( . Тем более ADC Noise Canceler завязан на Sleep.

Они не просто не верны - они взяты с некоторым коэффициентом из предыдушего канала. Если не делать переключения каналов - никаких замечаний не обнаружено.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В m16/32 наблюдается тот же эффект и без sleep'a.

Я просто пропускаю первый рез-тат преобразования после смены канала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этой особенности сто лет в обед сёдня. Конденсаторные АЦП с фиксированным временем сэмплирования и узкой полосой пропускания этой болезнью болеют от рождения.

Работай на низкой тактовой АЦП. И всё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Конденсаторные АЦП с фиксированным временем сэмплирования и узкой полосой пропускания этой болезнью болеют от рождения.

Работай на низкой тактовой АЦП. И всё.

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

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

 

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

Изменено пользователем ArtemKAD

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тысячу раз здесь на форуме уже разжёвывали -> сменил канал - пропусти одно преобразование.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тысячу раз здесь на форуме уже разжёвывали -> сменил канал - пропусти одно преобразование.

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

 

Как по мне - проще избавиться от sleep-а

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

Слип тут побоку. Просто при полосе пропускания канала АЦП Меги около 20-40КГц, имеешь все шанцы огрести остаточный заряд на УВХ от предыдущего канала/измерения. Бо время сэмпла УВХ=1,5 такта АЦП. А Р-Ц, типа, остаёцца постоянным. Одно дело когда Тсэмпл=15мкс, другое - когда 1,5мкс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так я и говорю - сэмпл 20мкс. На переключение более чем достаточно. Пробовал не засыпать в течении первых 3-х сэмплов - эффект без изменений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так я и говорю - сэмпл 20мкс. На переключение более чем достаточно. Пробовал не засыпать в течении первых 3-х сэмплов - эффект без изменений.

ХЗ.На 1МГц у м128 был заметный эффект. Канал со значением 1000 вызывал на другом ~10. Да и то удалось убрать. Забыл как, правда. Наверное частотой. А м48 у меня очень хорошо работала. Правда на ней BPF был. Всё отфильтровывалось, наверное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какое выходное сопротивление источника? Если это высокоомный делитель или медленный ОУ - вот и будет проникновение каналов при коммутации больше. На следующей неделе ради интереса посмотрю - есть ли отличие у M88 по сравнению со старыми мегами по проникновению.

Я обычно коммутирую мультиплексор по окончании текущего преобразования. К началу следующего все устаканивается. Делается что-то типа AutoScan в MSP.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Согласен с NVade - сопротивление источника напряжения играет очень важную роль. Если источник напряжения - резестивный делитель (к примеру, мониторинг напряжения питания, батарейки и т.п.) и частота изменений мала - советую поставить конденсатор на вход АЦП мк - 0.1-1мк - смазанные предыдущие значения исчезнут.

 

К стати, по ДШ выходное сопротивление источника - не больше 10кОм, надо учитывать....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Один вход - 300 ом, второй - 220ком||0,15мкФ. Взаимное влияние в обе стороны.

Еще раз - без sleep-а не "перетекает"...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Как по мне - проще избавиться от sleep-а

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

 

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

 

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

 

Одновременно вы решите вопрос переносимости на старые меги, где вляние на соседние каналы есть и без sleep.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...