Перейти к содержанию
    

Непонятный вывод с AD7708

Как я с данной АЦП работаю:

1. При включении прибора ничего в регистры АЦП не записываю. Т.е. в них состояние Power-On-Default.

2. При циклических измерениях делаю следующееЖ

2.1. В регистр ADC Control записываю номер канала от 7 до 0 + Unipolar + диапазон 2.56

2.2. В регистр Mode записываю Chop Disabled + Single Conversion

2.3. Читаю регистр ADC Data по появлению ноля на входе NRDY

 

На входе АЦП потенциометр на основе многооборотного регистра. Значение напряжения контролируется тестером.

 

Что вижу:

Значения читаемые с АЦП при изменяются от 20-30 дискрет до ~32ххх. При последнем - напряжение на входе ~ 1.2хВ. При дальнейшем увеличении напряжения на входе из регистра ADC Data читается 0xffff (ну или$FFFF

или 0FFFFH это как кому понятнее).

 

Вопрос. Что я делаю не правильно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Опишите подробнее, что куда пишете и схему.

Хм.

Схему мне прислали в виде - см. приложенный файл. Вроде всё верно сделано в соответствии с даташитом. Над "видом" не смейтесь, пожалуйста. Её автор - отличный аналоговый электронщик советских времен, но на компьютере он пока ниже плинтуса.

Что куда пишу. Из основной программы вызываю такую процедуру:

ADC7708:  MOV      DPTR,#ADCarr+14   ;
          MOV      R3,#8
@1:       MOV      A,#00000010B      ;ADC Control Reg
          LCALL    WriteADC
          MOV      A,R3
          DEC      A
          SWAP     A
          ORL      A,#00001111B      ;Canal([R3]-1), Unipolar, 2.56V
          LCALL    WriteADC
          MOV      A,#00000001B      ;Mode Reg
          LCALL    WriteADC
          MOV      A,#10000010B      ;Chop Disable, Single Convertion
          LCALL    WriteADC
@2:       JB       NRDY,@2
          MOV      A,#01000100B      ;Data Reg
          LCALL    WriteADC
          LCALL    ReadData
          DEC      DPL
          DEC      DPL
          DJNZ     R3,@1
          RET

Процедура моя. Написана на ассемблере для Intel 8051.

Если нужно, представлю реализацию процедур WriteADC и ReadData.

 

P.S. Сейчас пишу спецпрошивку для процессора и тестовую программу для общения с этой прошивкой.

___________________.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кроме зависаемого ввиду отсутствия таймаута кода, особых замечаний нет. Вообще, забивка результата единицами происходит по какой-либо ошибке. Попутно АЦП выставляет флаг ERR.

 

Общее мнение моё и знакомых — решение с постоянно выбранным CS потенциально практически нерабочее. Тем более, что используется проводной RDY — так что и ноги-то никак не экономятся. Микросхему мы применяем с самого её создания, и проблем не было никаких.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кроме зависаемого ввиду отсутствия таймаута кода, особых замечаний нет. Вообще, забивка результата единицами происходит по какой-либо ошибке. Попутно АЦП выставляет флаг ERR.

 

Общее мнение моё и знакомых — решение с постоянно выбранным CS потенциально практически нерабочее. Тем более, что используется проводной RDY — так что и ноги-то никак не экономятся. Микросхему мы применяем с самого её создания, и проблем не было никаких.

Спасибо за ответ. Таймаут обязательно добавлю, но потом, в окочательном релизе. Пока ещё не разобрался полностью со временем этого таймаута.

 

О том, что "решение с постоянно выбранным CS потенциально практически нерабочее" уже читал на gaw.ru (жаль что связь с автором этого сайта я уже давно потерял). Но изготовитель данной мс утверждает, что такое решение допустимо. К тому же доводы, которые приводятся в обоснование этого утверждения, явно не подходят к данной ситуации.

 

Проводной RDY был использован из-за того, что "беспроводной" RDY использовать не получилось. Возможно у меня что-то не правильно с чтением регистра статуса данной мс. А вот экономия ног - как раз важна. Дело в том, что это не новая разработка, а некий "upgrade" старого прибора. У того процессора, который в этом приборе, есть куча незадействованных ног. Но прибор состоит и двух частей. Аналоговой и цифровой. Соединены они шлейфом с разъёмами на обоих концах. Соединять их вдобавок "неразъёмными" проводами ну никак не хочется.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема решена.

Ошибка была в "основной программе".

 

Но CS решено было всё-таки задействовать, несмотря на заявления АnalogDevices.

Мнение С.Гаврилюка решило вопрос. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...