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

 
 
> 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
Ответов
SasaVitebsk
сообщение Jan 24 2007, 23:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Привет Богдан! smile.gif
Было бы приятно тебе помочь. smile.gif

Привожу пример на любимом твоём АСМе. smile.gif

Код
; Сменить канал АЦП
izm1:
    mov        wpl,chan
    andi    wpl,7    ; выделить номер канала
    subi    wpl,-2    ; начать с канала 2
    ori        wpl,kadmux
.if chip == 88
    sts        admux,wpl; включить новый канал
.else
    out        admux,wpl; включить новый канал
.endif
.......
; Инициализация

.if chip == 88
    .equ    kadcsra    = exp2(aden)+exp2(adsc)+exp2(adate)+exp2(adps1)+exp2(adps0)
.else
    .equ    kadcsra    = exp2(aden)+exp2(adsc)+exp2(adfr)+exp2(adps1)+exp2(adps0)
.endif
; Для внутреннего АЦП
;.equ    kadmux    = exp2(refs1)+exp2(refs0)+exp2(adlar)
; Для внешнего АЦП
.equ    kadmux    = exp2(adlar)

    ldi        chan,0
    ldi        wl,kadcsra+exp2(adif)
.if chip == 88
    sts        adcsra,wl; сбросить флаг завершения преобразования
.else
    out        adcsr,wl; сбросить флаг завершения преобразования
.endif
    mov        wl,chan
    subi    wl,-2    ; начать с канала 2
    ori        wl,kadmux
.if chip == 88
    sts        admux,wpl; включить новый канал
.else
    out        admux,wpl; включить новый канал
.endif


Я, в данном случае использовал автоматический режим.



Вожможная причина твоей проблемы.

Я измеряю в прерывании от таймера. Интервал выбран по времени измерения. Я сначала измеряю, а потом переключаю канал. То есть должно пройти время от переключения до измерения.

С уважением.
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
- - singlskv   А битик ADFR в регистре ADCSRA в нуле ? То есть т...   Jan 25 2007, 01:02
- - sseett   1. Опора включена заранее? Может долго устанавлива...   Jan 25 2007, 03:35
- - rat   Сталкивался с подобным траблом, после переключения...   Jan 25 2007, 04:51
- - bodja74   Kovrov ,респект,дали правильное направление в поис...   Jan 25 2007, 21:38
|- - singlskv   Цитата(bodja74 @ Jan 25 2007, 21:38) Kovr...   Jan 25 2007, 22:56
|- - 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 Текстовая версия Сейчас: 18th July 2025 - 22:28
Рейтинг@Mail.ru


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