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

 
 
> AD7738 как ее правильно сконфигурировать
Pat
сообщение Nov 23 2006, 20:29
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Уважаемые, что то совсем впал в уныние с AD7738.
Подключил ее к SSC интерфейсу AT91SAM7S256.
Конфигурирую ее.
Устанавливаю частоту выборки 8500 Гц
Устанавливаю режим преобразования “Continuous Conversion Mode”
Включаю первый канал
Устанавливаю режим непрерывного чтения. Continuous Read mode
Даю команду чтения первого канала.

После этого на выходе готовности данных RDY появляются импульсы.
Так и должно быть, ну а дальше совсем все плохо.
По отрицательному импульсу RDY читаю данные.
По описанию (да и по опыту с AD7705) во время чтения данных на входе RDY должен установится высокий уровень. НО этого не происходит, высокий уровень устанавливается только при очередном внутреннем преобразовании.
На последовательном выходе данных постоянно висит 0.

Все сигналы уже проверил сотню раз вроде все нормально.
Уж и не знаю, на что грешить, может у кого есть пример инициализации данной микросхемы.
Буду очень благодарен.
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 37)
DS
сообщение Nov 23 2006, 20:37
Сообщение #2


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



DI должен быть в 0 во время операции чтения. В DUMP еще добавляется впереди байт состояния канала. Если читаете по байтно и CS дергается во время чтоения - смотрите внимательно га временные диаграммы. Если CLK в момент переключения CS не соответствует диаграмме, команда сбрасывается.

И еще - RDY в DUMP mode сбрасывается после чтения регистра статуса, а не сразу.

Подробнее напишите, что Вы пишите в АЦП.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Pat
сообщение Nov 23 2006, 21:11
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Цитата(DS @ Nov 23 2006, 19:37) *
DI должен быть в 0 во время операции чтения. В DUMP еще добавляется впереди байт состояния канала.

DI во время чтения постоянно равен 0
Режим DUMP не включен (да и включал его результат тот же)

Цитата(DS @ Nov 23 2006, 19:37) *
Если читаете по байтно и CS дергается во время чтения - смотрите внимательно га временные диаграммы. Если CLK в момент переключения CS не соответствует диаграмме, команда сбрасывается.


Вначале дергал CS при доступе. Сейчас для чистоты эксперимента он всегда равен 0

Цитата(DS @ Nov 23 2006, 19:37) *
Подробнее напишите, что Вы пишите в АЦП.


// Сбрасываем АЦП
reset_AD7738();

// Устанавливаем на входе CS = 0 (AD7738 )
pa_pin_clear(TF);

// Задержка
Sleep(50);

// Устанавливаем входное напряжение от 0 до 2.5 В
// Включаем первый канал
write_reg((COMM_REG | (CH_SETUP_REG | CH0)),(P_25V | ENABLE_CH));

// Задержка
Sleep(50);

// Устанавливаем частоту преобразования с Chop Enable Bit.
write_reg((COMM_REG | (CH_TIME_REG | CH0)),0x84);

// Задержка
Sleep(50);

// Устанавливаем MODE регистр
// Continuous Conversion Mode
// Continuous Read mode
write_reg(0x38,0x24);

// Производим первоначальное чтение канала 1
write_reg(0x48,0x00);

От всех этих манипуляций впечатление такое что на запись все работатет
По крайней мере на выходе RDY появляются импулься.
Причем если записать другое значение в TIME регистр то частота этих импульсов меняется
и она равна расчетной частоте.
Вот чтение никак не хочет работать
Go to the top of the page
 
+Quote Post
DS
сообщение Nov 23 2006, 21:23
Сообщение #4


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



А что подразумевается под write_reg(0x48,0x00) - Ведь надо записать 0х48, потом выдать еще 16/24 clkов при 0 на DI.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Pat
сообщение Nov 23 2006, 21:55
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Цитата(DS @ Nov 23 2006, 20:23) *
А что подразумевается под write_reg(0x48,0x00) - Ведь надо записать 0х48, потом выдать еще 16/24 clkов при 0 на DI.


Может в этом и причина.
Дело в том что я записываю вначале 0х48 потом 0х00.
После чего жду следующего RDY и считываю 16 бит данных
Спасибо за наводку.
Завтра проверю на работе
Go to the top of the page
 
+Quote Post
Roma_te
сообщение Dec 8 2006, 21:47
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 13-12-05
Из: Украина, Тернополь
Пользователь №: 12 161



Цитата(Pat @ Nov 23 2006, 22:55) *
Может в этом и причина.

Как успехи (У меня очень похожая проблема)? Напишите удалось запустить и в чем причина...
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 9 2006, 09:36
Сообщение #7


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Конкретно в чем проблема ?


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Pat
сообщение Dec 10 2006, 14:22
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Цитата(DS @ Dec 9 2006, 08:36) *
Конкретно в чем проблема ?


Я немного пожалуюсь. До чего дошол.
Короче все заработало как сделал правильную последовательность чтения, но
читает только служебные регистры а в регистрах данных нули.
Подаю на вход одного из каналов сигнал все по барабану читает только 0.
Пробовал разные каналы и варианты настроек регистров.
Убил опять кучу времени все впустую.
Потом оторвал 2 ноги выхода мультиплексора, и подал прямо на вход буфера и о чудо все заработало.
Правда сдвиг вылезает но по крайней мере есть зависимость от поданного напряжения.

Пришол к выводу что по какой то причине не работатет мультиплексор.


Пока прекратил дальнейшие исследования (чего то не могу купить второй AD7738 чтобы проверить).

По ходу вопрос не было ли у вас такой беды как не работающий мультиплексор?
Может конечно сам что не так делаю, но очень много беспокойства с этоим АЦП у меня вышло?
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 10 2006, 18:08
Сообщение #9


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Не наблюдал никаих глюков с коммутатором. Вряд ли один коммутатор сгорел, так что все остальное работает. Скорее все запрограммировано так, что имеется - переполнение.
Что у Вас запрограммировано - дифференциальные входы или нет. Если нет, то что с режимом AINCOM ?
Опишите напряжения на входах и режимы АЦП и коммутутора(регистры I/O и channel setup), что в channel status (бит переполнения случайно не 1 ?) , так не угадать, что не правильно.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Pat
сообщение Dec 17 2006, 13:37
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Извиняюсь, уезжал на неделю.

Цитата(DS @ Dec 10 2006, 17:08) *
Не наблюдал никаих глюков с коммутатором. Вряд ли один коммутатор сгорел, так что все остальное работает. Скорее все запрограммировано так, что имеется - переполнение.
Что у Вас запрограммировано - дифференциальные входы или нет. Если нет, то что с режимом AINCOM ?
Опишите напряжения на входах и режимы АЦП и коммутутора(регистры I/O и channel setup), что в channel status (бит переполнения случайно не 1 ?) , так не угадать, что не правильно.


Попробую описать настройку АЦП по порядку
1) Подаю на вход RESET лог. 0 где то 200 мС задержки и снова 1
2) В в регистре Channel SETUP для канала 0 устанавливаю
биты RNG0 – RNG2 для входного напряжения от 0 до 2.5В
бит ENABLE = 1 (вроде для однократного преобразования его устанавливать не надо, но в любом случае пробовал и без него результат был тот же)
биты COM1 COM2 равны 0 то есть вход канала 0 относительно AINCOM
В цифрах получается, что в регистр по адресу 0х28 заносим 0х0D

Все остальные регистры по умолчанию после сброса.

Далее произвожу однократное измерение канала 0 в MODE регистр (0x38) записываю 0x40.
Жду низкого уровня на RDY после чего читаю регистр данных канала 0 (последовательность 0x48 0x00 0x00)

Теперь о входах
Вход AINCOM сидит на земле на вход канала 0 ( да на другие каналы тоже) подавал напряжения от 0 до +2В. В регистре данных был 0.

Регистр Channel Status читал не всегда но когда читал бит OVR был равен 0

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

Что то я с ним совсем замучился.
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 18 2006, 09:50
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Может, дело в том, что нужно установить бит 5 в регистре I/O (Adress 01h), чтобы вывод AINCOM сконфигурировать, как аналоговый вход?

Цитата
РЕГИСТР ПОРТА ВВОДА-ВЫВОДА (I/O Port Register)
8 бит, чтение/запись, Адрес 01h, начальное значение 30h + входное значение х 40h
Биты этого регистра используются для определения и конфигурирования вывода I/O.
[attachment=8782:attachment]
Go to the top of the page
 
+Quote Post
Pat
сообщение Dec 18 2006, 18:46
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Цитата(Herz @ Dec 18 2006, 08:50) *
Может, дело в том, что нужно установить бит 5 в регистре I/O (Adress 01h), чтобы вывод AINCOM сконфигурировать, как аналоговый вход?


Так это понятно, но он же по сбросу дожен быть установлен в 1.
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 18 2006, 19:01
Сообщение #13


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(Pat @ Dec 18 2006, 17:46) *
Цитата(Herz @ Dec 18 2006, 08:50) *

Может, дело в том, что нужно установить бит 5 в регистре I/O (Adress 01h), чтобы вывод AINCOM сконфигурировать, как аналоговый вход?


Так это понятно, но он же по сбросу дожен быть установлен в 1.


Да, действительно, не на тот посмотрел.

Сообщение отредактировал Herz - Dec 18 2006, 19:03
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 18 2006, 21:20
Сообщение #14


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



0 нельзя подавать, минимальное напряжение 0.2 вольта. Я пользую от 0.5 для верности, может в этом дело. На входы можно подавать от 0.2 до 4.7 вольта.
По логике Вы все верно делаете, если только с CS не производится неправильных манипуляций.
Если после записи режима RDY идет вверх, потом через положенное время обратно, то управление правильное.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 18 2006, 22:04
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(DS @ Dec 18 2006, 20:20) *
0 нельзя подавать, минимальное напряжение 0.2 вольта. Я пользую от 0.5 для верности, может в этом дело. На входы можно подавать от 0.2 до 4.7 вольта.

Почему нельзя? Где об этом сказано? Очень странно...
Спецификация приведена только для:
Цитата
(–40C to +105C, AVDD = 5 V  5%, DVDD = 2.7 V to 3.6 V or 5 V  5%,
REFIN(+) = 2.5 V, REFIN(–) = 0 V, AINCOM = 2.5 V, MUXOUT(+) = ADCIN(+), MUXOUT(–) = ADCIN(–), Internal Buffer ON, AIN Range = 1.25 V,
fMCLK = 6.144 MHz; unless otherwise noted.)


Сообщение отредактировал Herz - Dec 18 2006, 22:07
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 18 2006, 22:06
Сообщение #16


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



В третьем предложении от начала datasheet и далее в таблице параметров.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 18 2006, 22:13
Сообщение #17


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(DS @ Dec 18 2006, 21:06) *
В третьем предложении от начала datasheet и далее в таблице параметров.

Это: accepts a common-mode
input voltage from 200 mV above AGND to AVDD – 300 mV. ?
Я это понимаю, как синфазное напряжение в биполярном режиме. Разве не так?
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 18 2006, 22:18
Сообщение #18


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Common mode - это напряжение на входе относительно земли.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 18 2006, 22:22
Сообщение #19


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



О каких же 24-х разрядах тогда можно говорить, особенно в диапазоне 0-1.25В , если минимальное 0.2В?
То есть, все Voltage Ranges определяются относительно AINCOM, которое не может быть ниже 0.2В относительно земли? Тогда понятно.

Сообщение отредактировал Herz - Dec 18 2006, 22:30
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 18 2006, 22:28
Сообщение #20


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



aincom должен быть смещен относительно земли. АЦП измеряет относительно него.
Если у Вас подано на него 0.2 вольта, то на вход надо подавать 0.2 - 1.45 вольта для режима 0 - 1.25

Посмотрите как в 7732 внутренний делитель устроен для привязки уровней к земле.

PS у меня все три (7732, 38, 39) работают в смысле точности, как обещано AD.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 18 2006, 22:38
Сообщение #21


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Вообще, жутко неудобно получается...
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 18 2006, 22:50
Сообщение #22


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



А это расплата за однополярное питание. И у этих АЦП еще не самая громоздкая схема согласования - можно резисторами обойтись. А то бывает и 2 - 3 ОУ на каждый вход надо.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Pat
сообщение Dec 18 2006, 23:04
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Цитата(DS @ Dec 18 2006, 20:20) *
0 нельзя подавать, минимальное напряжение 0.2 вольта. Я пользую от 0.5 для верности, может в этом дело. На входы можно подавать от 0.2 до 4.7 вольта.
По логике Вы все верно делаете, если только с CS не производится неправильных манипуляций.
Если после записи режима RDY идет вверх, потом через положенное время обратно, то управление правильное.


Дело в том что подавал на AINCOM половину опорного. Пытался диференциальный сигнал измерить между AIN0-AIN1 все без толку на выходе 0.
Да сам дурак , заказал 1 штуку AD7738 она шла месяца полтора.
А теперь все по новой ,вот сижу жду когда она приедет (но уже умный 2 штуки заказал).
Судя по вашим отзывам таки мултиплексор дохлый.
Вопрос только в том я ему помог или он такой приехал - загадка.


Цитата(DS @ Dec 18 2006, 21:28) *
aincom должен быть смещен относительно земли. АЦП измеряет относительно него.
Если у Вас подано на него 0.2 вольта, то на вход надо подавать 0.2 - 1.45 вольта для режима 0 - 1.25


Уважаемый DS, а нельзя ли вашу схему входных формирователей подсмотреть?
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 18 2006, 23:12
Сообщение #24


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Посмотрите вольтметром на выходе мультиплексора - должны быть напряжения, как на входах. Иначе действительно спалился мультиплексор.

Так я же отослал к ad7732 - если надо сделать двуполярный вход достаточно резисторов как у него внутри. А в остальных случаях по обстановке - каждая схема включения имеет какие-то недостатки, надо приноравливаться каждый раз, чтобы точность вытянуть. Если скажете, что измеряете, может смогу дать совет.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Pat
сообщение Dec 18 2006, 23:30
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Цитата(DS @ Dec 18 2006, 22:12) *
Посмотрите вольтметром на выходе мультиплексора - должны быть напряжения, как на входах. Иначе действительно спалился мультиплексор.


Измерял ничего там нет 0. Значит мультиплексор.

Цитата(DS @ Dec 18 2006, 22:12) *
Так я же отослал к ad7732 - если надо сделать двуполярный вход достаточно резисторов как у него внутри. А в остальных случаях по обстановке - каждая схема включения имеет какие-то недостатки, надо приноравливаться каждый раз, чтобы точность вытянуть. Если скажете, что измеряете, может смогу дать совет.


Измеряю ток от 0 до 5 мА, шунт 400 Ом
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 19 2006, 11:06
Сообщение #26


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Нижний конец шунта обязательно на земле ? Если его сместить на 0.5 вольта и подсоединить диф. входы АЦП прямо к шунту (может через дополнительные RC), точность будет максимальной.
Если надо привязывать к земле, то делителями напряжения можно загнать в неполный диапазон 0 - 1.25.
Точность будет на разряд-два похуже.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 19 2006, 11:21
Сообщение #27


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



А мне уже так просто не отделаться. smile.gif Придётся плату переразводить. Что ж, сам виноват. Как говорится, если уже ничего не помогает, прочтите, наконец, инструкцию!
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 19 2006, 18:56
Сообщение #28


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(DS @ Dec 18 2006, 21:50) *
А это расплата за однополярное питание. И у этих АЦП еще не самая громоздкая схема согласования - можно резисторами обойтись. А то бывает и 2 - 3 ОУ на каждый вход надо.

Вот ADS1210 тоже однополярный, но, похоже, эта проблема в них не стоит так остро. Теперь начинаю понимать суть упоминавшихся траблов. Помните?
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 19 2006, 23:20
Сообщение #29


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Там по-видимому трабл все-таки в другом. Судя по тому, что входное сопротивление этого АЦП не очень велико и зависит от режима работы, на входе могут тоже стоять резистивные делители для смещения диапазона.

Чтобы не возится с 0, надо было ad7732 брать, но я так понимаю, поздно уже.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 20 2006, 09:03
Сообщение #30


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Я подумал: может организовать ей независимое питание и поставить опторазвязку на цифровой интерфейс?
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 26 2006, 17:05
Сообщение #31


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(Pat @ Dec 17 2006, 12:37) *
Далее произвожу однократное измерение канала 0 в MODE регистр (0x38) записываю 0x40.

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

Что то я с ним совсем замучился.


Что-то я с MODЕ-регистром разобраться не могу. Вот цитата из PDF:
Цитата
Mode Register
8 Bits Read/Write Register, Address 38h–3Fh, Default Value 00h
The Mode register configures the part and determines the part’s operating mode. Writing to the Mode register will clear the ADC
Status register, set the RDY pin to logic high level, exit all current operations, and start the mode specified by the Mode bits.
The AD7738 contains only one Mode register. The three LSBs of the address used for writing to the Mode register specify the channel
selected for operation determined by the MD2 to MD0 bits. The address 38h only must be used for reading from the Mode register.

Если MODE-регистр только один, то почему адресов восемь (0х38 - 0х3F)?
Если эти адреса соответствуют каналам, то почему только адрес 0х38 можно читать? И можно ли в него писать? И как это делать правильно? Как понимать фразу о трёх младших битах адреса? Являются ли они одновременно страшими битами самого MODE-регистра? Я понял так, что запись в MODE-регистр инициирует начало конверсии. Следует ли понимать, что режим конверсии будет зависеть от того, по какому адресу я записываю в MODE-регистр данные (пять младших бит)?
Где я должен указать о том, что только нулевой канал будет использоваться?
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 29 2006, 20:33
Сообщение #32


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Если Вы запускаете continuous conversion, то начинается с оцифровки канала, по которому записан режим.
Разрешение канала ставится в channel setup, если надо работать только с первым каналом, то ставите 1 в 3 разряд setupа и ьщву пишете по 38 адресу. Кроме этого, еще запуск калибровок на соответствующий канал определяется адресом записи.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 30 2006, 00:22
Сообщение #33


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(DS @ Dec 29 2006, 19:33) *
Если Вы запускаете continuous conversion, то начинается с оцифровки канала, по которому записан режим.
Разрешение канала ставится в channel setup, если надо работать только с первым каналом, то ставите 1 в 3 разряд setupа и ьщву пишете по 38 адресу. Кроме этого, еще запуск калибровок на соответствующий канал определяется адресом записи.

Не очень-то понял, если честно. Но ничего, разберусь. По крайней мере, однократный запуск и continius conversion включить получилось. Дело упрощается одним каналом. smile.gif Нет ли у Вас кусочка кода на С с подпрограммой обслуживания АЦП?
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 30 2006, 11:09
Сообщение #34


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Да, как то я витиевато выразился. Адрес регистра mode, по которому пишется команда, определяет канал, с которого начинается преобразование в continuous режиме. Во всех остальных случаях (однократное преобразование, калибровка канала) адрес определяет канал, к которому относится команда.

Для управления АЦП я ассемблером пользуюсь. Программа не откомментирована, так что толку от нее для Вас немного. Если опишите, в какой режим надо его загнать, я последовательностькоманд напишу. Тактируете от кварца или генератора ? AINCOMом пользуетесь ?


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 30 2006, 12:45
Сообщение #35


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Спасибо, теперь понятнее. Я в общем-то, так и делаю:
- после сброса записываю по адресу 0х28 число 0х09 (AIN0 - AINCOM, range 0-1,25V, Continius conversion Enable)
- в регистры с адресами с 0х30 по 0х37 записываю число 0хAD (CHOP Enabled, FW=45) В принципе, наверное, достаточно было бы ограничиться лишь первым из адресов.
- запускаю конверсию записью в Mode Register по адресу 0х38 числа 0х20 (Continius conversion, channel 0, и т.д.)
Вроде работает, все остальные каналы у меня не задействованы, поэтому на этом пока остановился. Меня просто смутила фраза в DS:
Цитата
The AD7738 contains only one Mode register.

А также то, что существуют комбинации битов MD2-MD0, отвечающие за режимы АЦП в целом, например, 011 - Power Down. Такую комбинацию нет вроде смысла записывать по всем адресам 0х38 - 0x3F.
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 30 2006, 13:07
Сообщение #36


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Да, можно в Conversion time писать только для используемого канала. Также неплохо перед работой запустить Zero-scale calibration, и, если есть возможность обеспечить нулевой сигнал на входе, Zero scale channel calibration.

Если функция относится ко всему АЦП, а не к конкретному каналу, адрес в mode неважен. Обратите также внимание на p0/1 - если Вы ими не пользуетесь, программируйте их выходами. Если тактирование идет от внешнего генератора, в mode надо также ставить clkdis.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 30 2006, 23:04
Сообщение #37


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Ещё раз спасибо, кажется, разобрался. И ещё вопросик, если позволите: как Вы боретесь с сетевой наводкой? Усредняете замеры за 20 мс, "привязываетесь" ли к фазе сетевого? Подстраиваете ли частоту сэмплирования?
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 31 2006, 12:15
Сообщение #38


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Да у меня почему-то нет сетевой наводки. Я больше шишек набил с шумами активных элементов перед АЦП. Правда у меня нигде нет фотодиодов, которые смотрят "в комнату", где 100 Гц неизбежно.

С наступающим ! santa2.gif


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 18:41
Рейтинг@Mail.ru


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