Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Непонятный вывод с AD7708
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Германн
Как я с данной АЦП работаю:
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 это как кому понятнее).

Вопрос. Что я делаю не правильно?
Plain
Опишите подробнее, что куда пишете и схему.
Германн
Цитата(Plain @ Sep 21 2012, 13:08) *
Опишите подробнее, что куда пишете и схему.

Хм.
Схему мне прислали в виде - см. приложенный файл. Вроде всё верно сделано в соответствии с даташитом. Над "видом" не смейтесь, пожалуйста. Её автор - отличный аналоговый электронщик советских времен, но на компьютере он пока ниже плинтуса.
Что куда пишу. Из основной программы вызываю такую процедуру:
Код
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. Сейчас пишу спецпрошивку для процессора и тестовую программу для общения с этой прошивкой.
Plain
Кроме зависаемого ввиду отсутствия таймаута кода, особых замечаний нет. Вообще, забивка результата единицами происходит по какой-либо ошибке. Попутно АЦП выставляет флаг ERR.

Общее мнение моё и знакомых — решение с постоянно выбранным CS потенциально практически нерабочее. Тем более, что используется проводной RDY — так что и ноги-то никак не экономятся. Микросхему мы применяем с самого её создания, и проблем не было никаких.
Германн
Цитата(Plain @ Sep 23 2012, 18:09) *
Кроме зависаемого ввиду отсутствия таймаута кода, особых замечаний нет. Вообще, забивка результата единицами происходит по какой-либо ошибке. Попутно АЦП выставляет флаг ERR.

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

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

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

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

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

Но CS решено было всё-таки задействовать, несмотря на заявления АnalogDevices.
Мнение С.Гаврилюка решило вопрос. sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.