Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Помогите разобраться с AD7854 (АЦП)

Пт окт 26, 2012 12:22:21

Не могу по описанию разобраться как управлять.

Re: Помогите разобраться с AD7854 (АЦП)

Вт окт 30, 2012 10:24:39

Конкретней.

Re: Помогите разобраться с AD7854 (АЦП)

Вт окт 30, 2012 22:35:54

Не пойму назначение выводов WR и RD, один вход записи, второй вход чтения, оба по низкому уровню. Почему не как например у 44780 контроллеров ЖКИ, один вывод управления и два состояния: чтение и запись.
Это получается когда режим чтения, то RD=0, WR=1, а когда режим записи, то наоборот WR=0, RD=1 ??? Как я понимаю.

По datasheet УПРАВЛЯЮЩИЙ РЕГИСТ 14и разрядный, состоит из 7 старших битов и 7 младших битов, куда запихивать ADDR1 и ADDR0 и как работать с 14и битным регистором когда все вокруг 16и битное или 8и битное.

Re: Помогите разобраться с AD7854 (АЦП)

Вт окт 30, 2012 23:38:37

Это получается когда режим чтения, то RD=0, WR=1, а когда режим записи, то наоборот WR=0, RD=1 ??? Как я понимаю.
Да так и написано, что используется совместно два входа. Так вот можно сделать соединение этих двух входов через подтяжку одного входа на минус, а второго на плюс, и переключать одной ногой Мк в соответствии с логикой того же дисплея помощью инвертора или простого транзистора.подали лог 1 на первый вход и транзистор.Он включился и замкнул второй вход на минус.Можно и двумя ногами шевелить, тут нет проблемы.

Re: Помогите разобраться с AD7854 (АЦП)

Ср окт 31, 2012 00:07:11

А как насчет ADDR1 и ADDR0 где их искать, в документации только две таблицы в которых описываются функции битов, это таблица CONTROL REGISTER (14 разрядов), и таблица STATUS REGISTER (16 разрядов). Нет таких битов ни в одной из них. Как эти биты использовать.

Re: Помогите разобраться с AD7854 (АЦП)

Ср окт 31, 2012 00:30:37

ADDR1 и ADDR0 нужны для адресации служебных регистров. Эти биты должны быть старшими в любой 2-байтовой посылке данных в АЦП.

Вообще, зачем Вы связываетесь с этим старьем, неужели ничего более новое и совершенное не доступно с последовательным интерфейсом SPI или I2C? Наконец, практически во всех МК имеется АЦП.

Re: Помогите разобраться с AD7854 (АЦП)

Ср окт 31, 2012 13:24:36

По поводу старья, у нас с снабжением проблемы, долго достают, (заказали AD7853 но сколько ждать неизвестно, и будет-ли вообще, кстати по командам по-моему они схожи, только что по разным интерфейсам)
по цене последовательный значительно дороже, по поводу встроенных АЦП, нужна большая разрядность, чем дают используемые в контроллере (mega8535).
Теперь по теме:
для того, чтобы прочитать какой либо регистр, необходимо в регистр управления записать параметры битов RDSLT0 и RDSLT1 (которые указывают из какого регистра я буду считывать информацию), это ясно, не ясно, как работать с 14и разрядным словом, это что, получается в каждой посылке старший бит просто не будет читаться, ведь MSB=7бит и LSB=7бит по описанию?

MSB ZERO ZERO ZERO ZERO PMGT1 PMGT0 RDSLT1
LSB RDSLT0 AMODE CONVST CALMD CALSLT1 CALSLT0 STCAL

Куда вставить ADDR1 и ADDR0. Как их вставить в начало слова, если слово уже разбито на два байта, и в каждом только по одному старшему разряду свободно.
Будьте любезны как пример напишите код из двух слов (16 бит).
1.Записать в регистр управления: что я буду читать данные из регистра выходных данных АЦП, и начинаю процесс преобразования;
2. Прочитать данные из регистра выходных данных АЦП.

Re: Помогите разобраться с AD7854 (АЦП)

Ср окт 31, 2012 17:17:17

Насколько я понял из ДШ, 14 бит для записи в регистры разбиваются на 2 байта: младшие 8 бит из 14 помещаются в младший байт, а старшие 14-8=6 бит помщаются как младшие биты (с номерами 0 - 5) во второй байт. Второй байт дополняется битами ADDR1/0 и полученные байта засылаются в АЦП смачала младший, затем старший (с адресными битами).

Для инициализации преобразования нужно сформировать сигналы, показанные на рис. 36 в ДШ. Для чтения данных, надо сначала записать адрес регистра данных в биты 5,6 контрольного регистра. Для этого его адрес должен (11) должен быть в биты 15/16 компонуемого слова. Т.е. слово посылаемое в АЦП начнется с 11.

Далее, смотрил биты контрольного регистра на стр 9 и выставляем их исходя из требований. Мы уже знаем, что биты 5/6 должны быть 00 длыа активизации чтения данных. Т.е. посылаемые битыв АЦП такие:
11 0000 PMGT1 PMGT0 00 AMODE CONVST CALMD CALSLT1 CALSLT0 STCAL
Надеюсь, Вы разберетесь с содержимым остальных бит исходя из Ваших требований.

После настройки контрольного регистра на чтение данных преобразователя, для чтения их после формирования сигнала CONVST и выжидания t_CONVERT (см. рис. 36) читаете 12 бит с шины данных. Если сигнал HBEN при этом 0, то это будут младшие 12 бит слова, а если 1 - то старшие. При чтении старших 12 бит, старшие 8 бит в слове будут нулевыми,что соответствует 12-битному разрешению.

Е-мое, надо Вам все это? Дождитесь нормального АЦП, почта-то у Вас есть, АЦП везде навалом в интернет-магазинах. По поводу МК, что свет клином сошелся на Мегах? Поставьте нормальный МК с 12-16 битным АЦП, нпример из серии MSP430.

Re: Помогите разобраться с AD7854 (АЦП)

Ср окт 31, 2012 20:57:24

Если дождусь AD7853? то он только-то и отличается интерфейсом, по командам в принципе тоже самое только данные ПАРАВОЗИКОМ отправлять надо.
Что касается 14 бит, так в ДШ прямо написано что MSB = 7 бит, и LSB = 7 бит
MSB ZERO|ZERO|ZERO|ZERO|PMGT1|PMGT0|RDSLT1

LSB RDSLT0|AMODE|CONVST|CALMD|CALSLT1|CALSLT0|STCAL

и как я после этих данных просто возьму и MSB + LSB = 14 а потом возьму и сделаю LSB = 8, а MSB = 6, так у меня нарушится структура данных, ведь после получится, что RDSLT1 уже не в MSB, а LSB. Короче я не очень уверен, что так будет правильно.
Функции чтения и записи, я написал, с учетом передачи и приема двух 8 битных данных, осталось состряпать сами команды, а вот с этим проблема.

Re: Помогите разобраться с AD7854 (АЦП)

Чт ноя 01, 2012 01:01:06

Я не понимаю чего вы так зациклились на этих битах переведите данную выдержку внимательно
Addressing the On-Chip Registers
Writing
To write to the AD7854/AD7854L, a 16-bit word of data must be transferred. This transfer consists of two 8-bit writes. The first
8 bits of data that are written must consist of the 8 LSBs of the 16-bit word and the second 8 bits that are written must consist of the
8 MSBs of the 16-bit word. For each of these 8-bit writes, the data is placed on Pins DB0 to DB7, Pin DB0 being the LSB of each
transfer and Pin DB7 being the MSB of each transfer. The two MSBs of the 16-bit word, ADDR1 and ADDR0, are decoded to
determine which register is addressed, and the 14 LSBs are written to the addressed register. Table I shows the decoding of the
address bits, while Figure 2 shows the overall write register hierarchy.

PS особенно обратите внимание на красный текст

Вообще с этим ацп реальная заморочка выходит, 12бит всего. Hа Atmega8 есть 10 нужна ли прям уж ТАКАЯ точность?
Последний раз редактировалось vitalik_1984 Чт ноя 01, 2012 01:09:51, всего редактировалось 1 раз.

Re: Помогите разобраться с AD7854 (АЦП)

Чт ноя 01, 2012 01:06:52

Вот то-то и оно , то 14 бит, то 16 бит. Короче попробую несколько вариантов, а там видно будет.

Re: Помогите разобраться с AD7854 (АЦП)

Чт ноя 01, 2012 01:12:10

Dmitro - я уже успел подзабыть что вычитал вчера в ДШ. Сегодня дома посмотрю его еще раз и отвечу ближе к утру по Москве.

Re: Помогите разобраться с AD7854 (АЦП)

Чт ноя 01, 2012 01:14:48

This combination addresses the CONTROL REGISTER. The 14 least significant data bits are written to
the control register.

Вот же куда вы смотрите то?Первые два старших бита адресация, далее сам регистр, только как я понял нужно сперва младший байт пихнуть, потом старший.
The first
8 bits of data that are written must consist of the 8 LSBs

Вот еще важный момент нумерацию битов вы, наверно, не заметили?
13 ZERO These four bits must be set to 0 when writing to the control register.
12 ZERO
11 ZERO
10 ZERO

Никак там не может быть 7 бит в младшем байте.
RDSLT0|AMODE|CONVST|CALMD|CALSLT1|CALSLT0|STCAL LSB

Вам в голову запала картинка, только почему то вы транслируете её по другому:
LSB RDSLT0|AMODE|CONVST|CALMD|CALSLT1|CALSLT0|STCAL

На ней отмечены старший и младший бит, а не байт.

Re: Помогите разобраться с AD7854 (АЦП)

Чт ноя 01, 2012 04:14:06

Ну вот, вижу Виталик Вам все уже объяснил. В дополнение отмечу следующее. Если выждать около 75 мсек после подачи питания, то АЦП проведет самокалибровку и останется в режиме чтения регистра АЦП. Для чтения результата преобразования можно в АЦП вообще ничего не писать, а только читать. Для чтения данных имеется 2 режима.

В первом режиме производится чтение 12-битного регистра данных АЦП через пины DB0 - DB11. Для этого нужно сначала сбросить в 0 пин CONVST на время t1 (все временные интервалы см. в таблице на стр. 4 ДШ) и потом поднять его. При этом пин BUSY уйдет в 1 на время t_convert и результат будет готов когда он снова упадет в 0 (или выждать 17 циклов тактовой частоты). После этого надо сбросить пин HBEN из 1 в 0 (это будет сигналом для АЦП для выдачи всех 12 бит результата на пины DB0 - DB11) и спустя время t3 сбросить пины CS и RD одновременно из 1 в 0. Спустя время t8 после сброса можно читать данные на 12-битной шине.

Можно читать данные и в 2 приема по 8-битной шине. Для этого следует пины CS и RD посадить постоянно на 0 до подачи сигнала начала преобразования (CONVST 1->0). В этом случае младший бит результата будет готов за время t18, предшествующее спаду сигнала BUSY. Если сейчас сбросить HBEN в 0, то можно будет читать все 12 бит результата с ШИН DB0 - DB11 (но т.к. у нас задействованы лишь 8 пин данных, линии DB8 - DB11 останутся непрочитанными). Если спустя время t20 поднять сигнал HBEN, то можно будет читать старший байт результата на пинах DB0 - DB7 (старшие 4 бита его будут всегда нулевыми). Аналогично работает интерфейс данных и при записи в АЦП. В 8-битном режиме записи рекомендуется пины DB8 - DB11 подтянуть к шинам питания или земли через резисторы. Однако, не все внутренние регистры АЦП могут быть записаны при 12-битном интерфейсе (см. детали в ДШ).

ЁКЛМН... хочется сказать и больше. Собрат этого АЦП с "паровозным" интерфейсом AD7853 такое-же старье (1998 год!). Когда я рекомендовал дождаться АЦП по почте, я имел в виду не его. Из теx, что я работал могу порекомендовать 12-битный SAR ADC121C027 от National (теперь TI) или 16-битный delta-sigma MCP3425 от Microchip. Оба выпускаются в корпусах SOT23-6 и имеют I2C интерфейс, встроенный опорник и генератор. Проблем с ними никаких и вопросов по использованию тоже. Да и стоят оба копейки. С ними увидите, что жизнь цветная. Рискну написать, что любой современный АЦП лучше и проще в работе, чем эти динозавры. Решайтесь!

Re: Помогите разобраться с AD7854 (АЦП)

Пт ноя 02, 2012 19:56:36

Ну что сказать, госпредприятие с сложной структурой, способствует тому, что что-то достать, как материальное, так и нематериальное очень не легко, нет и тот, 3G, свой собственный, о чем говорить вообще. За альтернативу СПАСИБО, выбирали действительно по старому каталогу.
По поводу данной темы, режим записи, который, в общем, можно не использовать, мне нужен был для того, чтобы команду на начало процесса преобразования, передавать не по отдельному выводу CONVST, а через параллельный интерфейс.
Короче, на первом этапе, я все-же использовал вывод CONVST, и в итоге получил ответ от АЦП в виде сигнала BUSY, по окончанию процесса преобразования. Потом пошел дальше и передал эту команду по шине, и тоже получил ответ, значит процесс записи в регистр управления прошел правильно.

Re: Помогите разобраться с AD7854 (АЦП)

Пн ноя 05, 2012 22:32:24

Похоже, что тема ушла в сторону, но продолжу:
короче с ответом такая засада, контроллер получает почему-то только старшие 4 бита из 12, прием за два захода по 8 бит. Так вот младшие или пустые или я их не правильно пытаюсь прочитать.
HBEN=0 CS=0 RD=0 младший байт
HBEN=1 CS=0 RD=0 старший байт

Re: Помогите разобраться с AD7854 (АЦП)

Пн ноя 05, 2012 23:49:11

Я уже опять успел частично забыть прочитанное, но насколько я помню Вы хотели инициировать преобазование программно. Для этого Вам нужно писать в какой-то регитср АЦП и потом перенастраивать адрес на чтение. Может собака тут зарыта. Попробуйте инициировать преобразавание через железо, чтобы ничего не писать в АЦП. Тогда те действия, что Вы описали соответствуют ДШ.

Re: Помогите разобраться с AD7854 (АЦП)

Вт ноя 06, 2012 00:18:46

Начало преобразования я уже делаю через запись кода в регистр управления и в нем-же указываю, что читать буду данные АЦП, и даже читаю эти данные, но похоже что-то с таймингами немного не то. Есть реакция на переменный резистор, только читаются разряды 9,10,11,12, все остальные -0-. Завтра помудрую, что-то из вышеописанного можно попробовать, просто не досмотрел как АЦП отличает, что я буду работать в режиме 8+8, а не по 12 разрядной шине, но еще раз пересмотрел предпоследний пост Ser60, похоже это именно то, где собака порылась.
Ответить