Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: АЦП AD7714 Некорректные отсчеты в тестовом режиме
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Метрология, датчики, измерительная техника
Didro
В тестовом режиме (AIN6\AIN6) ожидают увидеть нули в регистре данных, вместо этого получаю:

Код
data from AD7714: 124
data from AD7714: 55
data from AD7714: 255
data from AD7714: 124
data from AD7714: 53
data from AD7714: 255
data from AD7714: 124
data from AD7714: 46
data from AD7714: 255
data from AD7714: 124
data from AD7714: 56
data from AD7714: 255
....

Что бы это могло означать ??

Калибрую и настраиваю по примеру из даташита (AIN6\AIN6, gain 1, no filter sync, bipolar mode, 24-bit length, boost off, maximum filter word (4000)), хостом выступает AVR ATMega8 с аппаратным SPI. Все регистры кроме Data читаются\модифицируеются через SPI правильно.

Похожие сообщения были раньше - вот и вот. Но решения проблемы не нашел.

Вот исходник программы - 1 к 1 калька с кода из даташита - , настраивает АЦП, считывает в массив значения, пересылает его по USART в ПК. Пробовал другой вариант исходников - не по даташиту (все-таки пример в даташите не для AVR, а для 68HC11) - результат тот же.
Уже неделю бьюсь, начал программный spi-реализовывать, не могу понять в чем причина таких странных данных.

Спасибо

P.S.
Чтобы 255 не сбивало, вот лог другого запуска:

Код
data from AD7714: 121
data from AD7714: 165
data from AD7714: 38
data from AD7714: 121
data from AD7714: 165
data from AD7714: 105
data from AD7714: 121
data from AD7714: 165
data from AD7714: 24
data from AD7714: 121
data from AD7714: 166
data from AD7714: 244
data from AD7714: 121
data from AD7714: 166
data from AD7714: 69
data from AD7714: 121
data from AD7714: 164

255 нет, хотя переодичность есть - каждый старшый (из 3х байт 24-х битного слова АЦП) равен 121 (или в примере выше 124)
forever failure
Да вроде всё у Вас правильно. И вовсе необязательно должны оттуда нули возвращатся, с чего это Вы взяли ?
По исходнику: sei () в начале - не нужно, прерывания не используются, лучше их вовсе не разрешать, в функциях Writetoreg и ReadData не нужно каждый раз инициализвать SPI - это надо сделать один раз в самом начале.
А так, судя по логу, АЦП вполне нормально работает, возвращаются какие-то значения по три байта в каждом слове, при этом в одном из них - самом младшем, - значения меняются, что и должно быть. И иногда - в среднем, но уже не более, чем на единицу.
Didro
Цитата(forever failure @ May 10 2009, 08:25) *
Да вроде всё у Вас правильно. И вовсе необязательно должны оттуда нули возвращатся, с чего это Вы взяли ?
...
А так, судя по логу, АЦП вполне нормально работает, возвращаются какие-то значения по три байта в каждом слове, при этом в одном из них - самом младшем, - значения меняются, что и должно быть. И иногда - в среднем, но уже не более, чем на единицу.
Спасибо за ответ.

Нули должны возвращаться, т.к. я запускаю АЦП в тестовом режиме, про который сказано в даташите:
Цитата
With CH2, CH1 and CH0 at a logic 1, the part looks at the AIN6 input internally shorted to itself. This can be used as a test method to evaluate the noise performance of the part with no external noise sources. In this mode, the AIN6 input should be connected to an external voltage within the allowable common-mode range for the part.
Тут конечно нет точного указания на нули - это я уже сам домыслил, да и в интернете видел "похожие домысливания".

Цитата( @ May 10 2009, 08:25) *
По исходнику: sei () в начале - не нужно, прерывания не используются, лучше их вовсе не разрешать, в функциях Writetoreg и ReadData не нужно каждый раз инициализвать SPI - это надо сделать один раз в самом начале.
Это уже результаты танцев с бубном.

p.s.
Сейчас припаял выход AIN6 к земле. Результаты измерений не изменились unsure.gif
forever failure
Тут пока шта негде танцевать, всё должно рациональными методами достигаться, - довольно простая ситуация, чтобы шаманствовать. Впрочем, это к любой технике относиться. Попробуйте, во-первых оценить среднеквадратичекий уровень шумов в тестовом режиме, во-вторых - подать сигнал уже с внешнего источника.

ЗЫ. Ещё раз: вовсе необязательно должны нули вовращаться. Должны возращатся малоизменяющиеся значения, достаточно близкие к нулю. Но если пойдут все нулю во всех трёх байтах всех отсчётов - это абсолютно точно что-то неправильно работает.
Roma_te
Мой Вам совет - поменяйте АЦП, например на ADuC834 (из личного опыта)
Leonmezon
Вы своей программе взяли за основу пример для Motorola (из даташита) - напрямую в AVR не идет 8-бит значения сможете принять, 24-бит - нет( с ошибкой) .(CHA и CPOL другие (причем не как по даташиту!!) - попробуйте разные варианты (их всего 4).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.