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

 
 
> ADC+MUX, засада
bodja74
сообщение Jan 24 2007, 22:15
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Проблема такая ,пытаюсь мерять 2 напряжения с помощью ADC ,попеременно переключая входы в прерывании от АЦП ,в результате у меня получаемые значения как будто я меряю только на одном входе и как правило того входа АЦП ,которое я инициализирую первым ,хотя бывают "глюки-исключения" smile.gif

MUX меняю точно ,пробовал отключать и заново запускать АЦП ,что битами ,что полностью регистрами-результат одинаков,похоже есть какой то ньюанс при переключении АЦП,но какой не знаю sad.gif

Вот такие лыжи на асфальте ,и не могу понять в чем дело.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bodja74
сообщение Jan 25 2007, 21:38
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Kovrov ,респект,дали правильное направление в поиске трабла. smile.gif

Сделал по прерыванию от АЦП ,так как уже были наброски.
Вот что выяснилось ,при переключении (вне зависимости дергаем ADEN или нет) ,АЦП делает 1 холостой ход ,при этом генерируя прерывание.
А при включеном бите ADATE нужно пропустить 2 цикла конверсии,и после этого уже считывать результат.
Я знал что на переинациализацию нужно дополнительное время ,но не думал что будут генерироваться прерывания.

В принципе проблема решена ,всем спасибо за советы. smile.gif
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 25 2007, 22:56
Сообщение #3


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(bodja74 @ Jan 25 2007, 21:38) *
Kovrov ,респект,дали правильное направление в поиске трабла. smile.gif

Сделал по прерыванию от АЦП ,так как уже были наброски.
Вот что выяснилось ,при переключении (вне зависимости дергаем ADEN или нет) ,АЦП делает 1 холостой ход ,при этом генерируя прерывание.
А при включеном бите ADATE нужно пропустить 2 цикла конверсии,и после этого уже считывать результат.
Я знал что на переинациализацию нужно дополнительное время ,но не думал что будут генерироваться прерывания.

В принципе проблема решена ,всем спасибо за советы. smile.gif

bodja74
А Вы запускаете АЦП в режиме Single Conversion Mode или Free Running ?

Если в Free Running, то Вы просто не вовремя меняеете ADMUX, его нельзя менять
в том же прерывании где считывали последний результат
В режиме Free Running новое преобразование начинается еще до того как Вы попали
в прерывание и если Вы в прерывании меняете ADMUX пока не прошло 1,5 ADC clock cycles
то следующий результат будет просто мусором
Если Вам нужно после каждого результата менять канал ADC и режим Free Running, то
тогда после считывания результата нужно подождать > 1,5 ADC clock cycles и до наступления
нового прерывания успеть сменить ADMUX
Удачи
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- bodja74   ADC+MUX   Jan 24 2007, 22:15
- - Kovrov   после смены мукса попробуйте дернуть ADEN.   Jan 24 2007, 22:32
- - Dopler   Не надо после Mux ничего дергать, все должно работ...   Jan 24 2007, 22:47
|- - Kovrov   Цитата(Dopler @ Jan 24 2007, 22:47) Не на...   Jan 24 2007, 23:24
|- - bodja74   Цитата(Dopler @ Jan 24 2007, 22:47) Не на...   Jan 25 2007, 00:08
- - SasaVitebsk   Привет Богдан! Было бы приятно тебе помочь....   Jan 24 2007, 23:13
- - singlskv   А битик ADFR в регистре ADCSRA в нуле ? То есть т...   Jan 25 2007, 01:02
- - sseett   1. Опора включена заранее? Может долго устанавлива...   Jan 25 2007, 03:35
- - rat   Сталкивался с подобным траблом, после переключения...   Jan 25 2007, 04:51
|- - bodja74   Цитата(singlskv @ Jan 25 2007, 22:56) bod...   Jan 26 2007, 00:35
- - muravei   Цитата(bodja74 @ Jan 25 2007, 02:15) Проб...   Sep 24 2009, 18:25
- - Павлик   На ATmega8 делал вольтметр + амперметр CODE//ADC...   Sep 25 2009, 03:55
- - troy97   Вот мой кусок кода на С, работает как надо: Код ...   Sep 25 2009, 06:40
|- - muravei   Цитата(troy97 @ Sep 25 2009, 10:40) Вот м...   Sep 25 2009, 07:37
- - Rst7   ЦитатаА почему так низя? while (!ADIF); Т.к...   Sep 25 2009, 07:48


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

 


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


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