|
Вопрос по АЦП, Free running mode |
|
|
|
Jan 14 2008, 22:53
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
При работе с АЦП делаю заранее заданное демпфирование по каналам. То есть порядок выборки каналов у меня постоянно скачет. Это поменять нельзя. АЦП запущено в "Free running mode" и проверяется по таймеру. Время с момента переключения канала и до выборки значения АЦП вдвое превышает означенные 25 тактов (пробовал и увеличивать). По каким-то, для меня непонятным причинам, иногда (достаточно редко) с АЦП в память попадает не текущее значение АЦП (точнее не то, что должно быть), а с предыдущего канала. Причём если я в данной точке останавливаюсь по JTAG, то в АЦП микросхемы вижу правильное значение. Например: Код 127 default: 128 x0=Adc[TekChan].X1=ADCH; // Прочитать значение АЦП \ ??pvPWWLvl1_7: \ 000000B8 91300079 LDS R19, 121 \ ??pvPWWLvl1_9: \ 000000BC 8334 STD Z+4, R19 \ 000000BE 2E23 MOV R2, R19 То есть по databreakpoint останавливаюсь в последней строчке и вижу в АЦП значение FF к примеру, а в ячейку уже занесено 83. Каналы и всё прочее выставляется верно. Создаётся впечатление, что АЦП не успевает завершить операцию. Но, как я уже писал, при увеличении времени в разы сама ошибка остаётся. Может я чего не знаю. Может необходимо как то обновить значение. Типа прочитать два раза или что-то ещё. Я в непонятках.
|
|
|
|
|
 |
Ответов
|
Jan 16 2008, 23:33
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Ещё раз поясняю младший бит не может "отличаться устойчивостью". Это ваша точность. Чтобы вам понятнее было представьте что у вас измеряемое значение 212.5 (в единицах АЦП). Соответственно АЦП будет показывать то 212, то 213. Несмотря на устойчивость. Поэтому сколько бы разрядов АЦП не имело всегда точность не менее +/- единица младшего разряда. По поводу погрешностей и прочего - почитайте даташит - там достаточно детально всё расписано и сведено в графики. От себя замечу, что точность АЦП AVR мне не понравилась. Правда я и не пытался добиваться высокоточных результатов. Применение внешнего АЦП как правило даёт более хорошие результаты по стабильности и точности.
По поводу каких-то ошибок в озу - нигде и никогда не слышал. То что вы видите в распечатке - это кусок листинга который формирует Си компилятор. Мне и в голову не приходило самому распределять там память. Как линкер её распределил, так я и работал. Из того что я уже приводил - понятно что ошибка возникает именно при чтении из АЦП. Вроде в этой ветке разобрались с её природой. То есть виноват я сам, так как нечего притягивать за уши те способы работы, которые для этого не предназначены. FRM предназначен для слежения за сигналом из одного канала, на сколько я понял. При применении перебора каналов необходимо использовать другие режимы работы АЦП, так как FRM не имеет в этом случае абсолютно никакого выигрыша, а доставляет головную боль.
2 _Diman_. По поводу задаваемого вами вопроса - поищите по форуму. Месяца два-три назад мощная тема была где спецы аналоговые это обсасывают. Так как есть понятие "максимальная частота преобразований" для АЦП, а есть понятие "полоса пропускания".
|
|
|
|
|
Jan 17 2008, 15:38
|
Местный
  
Группа: Свой
Сообщений: 313
Регистрация: 7-01-07
Из: Севастополь
Пользователь №: 24 170

|
Цитата(SasaVitebsk @ Jan 17 2008, 01:33)  ... FRM предназначен для слежения за сигналом из одного канала, на сколько я понял. При применении перебора каналов необходимо использовать другие режимы работы АЦП, так как FRM не имеет в этом случае абсолютно никакого выигрыша, а доставляет головную боль. Не выдержал... Саша, Вы же здесь один из гуру, не делайте таких скоропалительных выводов. Нормально этот режим работает, если точно привязываться к записи мультиплексора. А это можно правильно сделать, только используя прерывание самого АЦП... У меня в серийном изделии нормально оцифровываются все 8 каналов. Прерываний всего 3. Прерывание ADC используется для диспетчера задач и переключения каналов. Но есть одно но :-), может, Вы именно на него наткнулись. Переключать каналы надо осторожно, у меня были глюки с данными, когда я слишком рано записывал новый адрес канала в ADMUX, до завершения новой выборки. Вот тогда и было некое дрожание и привирание в результатах. Тогда я увеличил выдержку до задания нового канала - вставил фоновую прогу формирования вспомогательных ШИМов,- и все зааработало. Еще одно неудобство для меня заключалось в том, что я коммутирую входные сигналы на АЦП, и было довольно трудно рассчитать правильное время коммутации - нужно учитывать время успокоения усилителя и прочее. Сейчас все работает правильно.
|
|
|
|
Сообщений в этой теме
SasaVitebsk Вопрос по АЦП Jan 14 2008, 22:53 Baser Может быть там присутствуют наложения циклов АЦП и... Jan 15 2008, 08:38 GDI При переключении мультиплексора, вроде, рекомендую... Jan 15 2008, 08:52 Сергей Борщ Я тоже склоняюсь к мысли, что это биения от несовп... Jan 15 2008, 08:58 xemul Цитата(Сергей Борщ @ Jan 15 2008, 11:58) ... Jan 15 2008, 12:04 GDI Ну может не в даташитах но на форуме эта тема под... Jan 15 2008, 10:04 Сергей Борщ Цитата(GDI @ Jan 15 2008, 12:04) "ну... Jan 15 2008, 10:48  singlskv Цитата(Сергей Борщ @ Jan 15 2008, 13:48) ... Jan 15 2008, 20:56   SasaVitebsk Цитата(singlskv @ Jan 16 2008, 00:56) Он ... Jan 15 2008, 23:54    pokos Цитата(SasaVitebsk @ Jan 16 2008, 02:54) ... Jan 16 2008, 08:24     SasaVitebsk Цитата(pokos @ Jan 16 2008, 12:24) Ну, во... Jan 16 2008, 11:36    singlskv Цитата(SasaVitebsk @ Jan 16 2008, 02:54) ... Jan 18 2008, 09:36     _Pasha Цитата(singlskv @ Jan 18 2008, 13:36) ...... Jan 18 2008, 14:26      singlskv Цитата(_Pasha @ Jan 18 2008, 17:26) Вообщ... Jan 18 2008, 14:35   Сергей Борщ Цитата(singlskv @ Jan 15 2008, 22:56) Ну ... Jan 16 2008, 15:19    singlskv Цитата(Сергей Борщ @ Jan 16 2008, 18:19) ... Jan 16 2008, 20:16 pokos Насколько я понимаю процесс жизнедеятельности этог... Jan 15 2008, 14:01 xemul Цитата(pokos @ Jan 15 2008, 17:01) Наскол... Jan 15 2008, 14:32 Сергей Борщ Цитата(pokos @ Jan 15 2008, 16:01) Наскол... Jan 15 2008, 14:36 Anjey_N Хочу тоже задать вопрос!
МК ATmega8, задейств... Jan 15 2008, 17:03 Baser Цитата(Anjey_N @ Jan 15 2008, 19:03) При ... Jan 15 2008, 17:24  Anjey_N Цитата(Baser @ Jan 15 2008, 21:24) Можно ... Jan 15 2008, 17:40 SasaVitebsk Не буду утверждать, так как для каких либо утвержд... Jan 15 2008, 17:46 pokos "ADMUX can be safely updated in the following... Jan 16 2008, 11:49 oran-be Я отжимался со свободным режимом - отлично работае... Jan 16 2008, 18:26 _Pasha В самом первом посте увидел инструкцию STD. У меня... Jan 16 2008, 21:18 _Diman_ Разьясните пожалуйста пару моментов.
13 - 260 ... Jan 16 2008, 21:42 _Pasha Цитата(_Diman_ @ Jan 17 2008, 01:42) По э... Jan 16 2008, 22:09 _Diman_ Небольшоё, аккумулятор-> 510 ом и 0,2uF на земл... Jan 16 2008, 23:20 SasaVitebsk Сейчас изделие отправили на натурные испытания на ... Jan 17 2008, 17:08 _Pasha Цитата(IGK @ Jan 17 2008, 19:38) Но есть ... Jan 17 2008, 20:14 IGK Цитата(_Pasha @ Jan 17 2008, 22:14) Чушь... Jan 17 2008, 22:47 _Pasha Цитата(singlskv @ Jan 18 2008, 18:35) А г... Jan 19 2008, 04:54 SasaVitebsk Ну это не мой вариант. Я работаю с 8-ми битным реж... Jan 19 2008, 14:18 singlskv Цитата(SasaVitebsk @ Jan 19 2008, 17:18) ... Jan 19 2008, 15:55  _Pasha Цитата(singlskv @ Jan 19 2008, 19:55) Ну ... Jan 19 2008, 19:43   singlskv Цитата(_Pasha @ Jan 19 2008, 22:43) Вы, с... Jan 19 2008, 20:04    _Pasha Цитата(singlskv @ Jan 20 2008, 00:04) Вы ... Jan 19 2008, 20:45 defunct 2 SashaVitebsk.
IMHO считывать АЦП по таймеру нем... Jan 20 2008, 01:56 alux Имею проблему с выводом по UART результата измерен... Apr 15 2008, 08:02 SasaVitebsk А Flags у вас объявлен как volatile?
Просто похоже... Apr 15 2008, 09:19 alux Цитата(SasaVitebsk @ Apr 15 2008, 12:19) ... Apr 15 2008, 12:38  Сергей Борщ Цитата(alux @ Apr 15 2008, 15:38) volatil... Apr 15 2008, 14:07   alux Цитата(Сергей Борщ @ Apr 15 2008, 17:07) ... Apr 15 2008, 16:12 SasaVitebsk Предложу вам другой вариант работы с флагами. Комп... Apr 15 2008, 20:36
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|