реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> АЦП AD7714 Некорректные отсчеты в тестовом режиме, 124 55 255 124 53 255... вместо нулей
Didro
сообщение May 9 2009, 14:58
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 94
Регистрация: 9-04-07
Пользователь №: 26 893



В тестовом режиме (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)

Сообщение отредактировал Didro - May 9 2009, 14:58
Go to the top of the page
 
+Quote Post
forever failure
сообщение May 10 2009, 04:25
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



Да вроде всё у Вас правильно. И вовсе необязательно должны оттуда нули возвращатся, с чего это Вы взяли ?
По исходнику: sei () в начале - не нужно, прерывания не используются, лучше их вовсе не разрешать, в функциях Writetoreg и ReadData не нужно каждый раз инициализвать SPI - это надо сделать один раз в самом начале.
А так, судя по логу, АЦП вполне нормально работает, возвращаются какие-то значения по три байта в каждом слове, при этом в одном из них - самом младшем, - значения меняются, что и должно быть. И иногда - в среднем, но уже не более, чем на единицу.
Go to the top of the page
 
+Quote Post
Didro
сообщение May 10 2009, 13:49
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 94
Регистрация: 9-04-07
Пользователь №: 26 893



Цитата(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
Go to the top of the page
 
+Quote Post
forever failure
сообщение May 10 2009, 14:21
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



Тут пока шта негде танцевать, всё должно рациональными методами достигаться, - довольно простая ситуация, чтобы шаманствовать. Впрочем, это к любой технике относиться. Попробуйте, во-первых оценить среднеквадратичекий уровень шумов в тестовом режиме, во-вторых - подать сигнал уже с внешнего источника.

ЗЫ. Ещё раз: вовсе необязательно должны нули вовращаться. Должны возращатся малоизменяющиеся значения, достаточно близкие к нулю. Но если пойдут все нулю во всех трёх байтах всех отсчётов - это абсолютно точно что-то неправильно работает.
Go to the top of the page
 
+Quote Post
Roma_te
сообщение Jun 22 2009, 13:21
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 13-12-05
Из: Украина, Тернополь
Пользователь №: 12 161



Мой Вам совет - поменяйте АЦП, например на ADuC834 (из личного опыта)
Go to the top of the page
 
+Quote Post
Leonmezon
сообщение Jul 7 2009, 16:21
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 191
Регистрация: 11-02-09
Из: Краснодар
Пользователь №: 44 686



Вы своей программе взяли за основу пример для Motorola (из даташита) - напрямую в AVR не идет 8-бит значения сможете принять, 24-бит - нет( с ошибкой) .(CHA и CPOL другие (причем не как по даташиту!!) - попробуйте разные варианты (их всего 4).
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 13th July 2025 - 17:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.0142 секунд с 7
ELECTRONIX ©2004-2016