|
AD7738 как ее правильно сконфигурировать |
|
|
|
Nov 23 2006, 21:11
|

Местный
  
Группа: Свой
Сообщений: 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 регистр то частота этих импульсов меняется и она равна расчетной частоте. Вот чтение никак не хочет работать
|
|
|
|
|
Nov 23 2006, 21:55
|

Местный
  
Группа: Свой
Сообщений: 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 бит данных Спасибо за наводку. Завтра проверю на работе
|
|
|
|
|
Dec 8 2006, 21:47
|
Частый гость
 
Группа: Свой
Сообщений: 123
Регистрация: 13-12-05
Из: Украина, Тернополь
Пользователь №: 12 161

|
Цитата(Pat @ Nov 23 2006, 22:55)  Может в этом и причина. Как успехи (У меня очень похожая проблема)? Напишите удалось запустить и в чем причина...
|
|
|
|
|
Dec 10 2006, 14:22
|

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

|
Цитата(DS @ Dec 9 2006, 08:36)  Конкретно в чем проблема ? Я немного пожалуюсь. До чего дошол. Короче все заработало как сделал правильную последовательность чтения, но читает только служебные регистры а в регистрах данных нули. Подаю на вход одного из каналов сигнал все по барабану читает только 0. Пробовал разные каналы и варианты настроек регистров. Убил опять кучу времени все впустую. Потом оторвал 2 ноги выхода мультиплексора, и подал прямо на вход буфера и о чудо все заработало. Правда сдвиг вылезает но по крайней мере есть зависимость от поданного напряжения. Пришол к выводу что по какой то причине не работатет мультиплексор. Пока прекратил дальнейшие исследования (чего то не могу купить второй AD7738 чтобы проверить). По ходу вопрос не было ли у вас такой беды как не работающий мультиплексор? Может конечно сам что не так делаю, но очень много беспокойства с этоим АЦП у меня вышло?
|
|
|
|
|
Dec 10 2006, 18:08
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

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

Местный
  
Группа: Свой
Сообщений: 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 Просьба если можно выложить, как вы производите настройку этого АЦП. Что то я с ним совсем замучился.
|
|
|
|
|
Dec 18 2006, 19:01
|

Гуру
     
Группа: Модераторы
Сообщений: 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
|
|
|
|
|
Dec 18 2006, 21:20
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
0 нельзя подавать, минимальное напряжение 0.2 вольта. Я пользую от 0.5 для верности, может в этом дело. На входы можно подавать от 0.2 до 4.7 вольта. По логике Вы все верно делаете, если только с CS не производится неправильных манипуляций. Если после записи режима RDY идет вверх, потом через положенное время обратно, то управление правильное.
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
|
Dec 18 2006, 22:04
|

Гуру
     
Группа: Модераторы
Сообщений: 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
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|