_abk_

Кто работал с AD7731? Голову сломал...

2 сообщения в этой теме

_abk_    28

Всем привет.

Считываю данные с AD7731 после готовности RDY и получаю медленно "плавающие" 3 младших полубайта из 6. При этом результат раза в 2,5 меньше, чем должен быть (измеряемое напряжение-часть опорного). Конфигурация АЦП и калибровка проходят успешно (считывал регистры до и после). SPI аппаратный. А вот с чтением не выходит каменный цветок. (CS, ессно, не забыт). При этом нулевое напряжение (вход - на землю) показывает почти правильно - но есть выбросы. "Висячий" вход дает 0хFFFFFF, как и должен бы. Перед работой с АЦП делаю принудительно сброс. Земля разведена правильно, от экземпляра AD не зависит, от источника опорного тоже. Все как в даташите. Реально голову сломал...
Может, у кого найдется пример рабочего кода? Или совет дельный?
В инете все облазил, нашел только вопросы неотвеченные... Для тех, кто в теме, ниже привожу код инициализации.

Скрытый текст

/ ================== инициализация АЦП ==================
void Init_AD7731()
{
CS_AD7731 = 0;

// ********************************************************************************** filter
WR_AD7731(0x03); // след. запись в регистр фильтра (2 байта)
WR_AD7731(0x61); // запись старшего байта в регистр фильтра
WR_AD7731(0xA0); // запись младшего байта в регистр фильтра /Это как пример в даташите

// ********************************************************************************** mode
WR_AD7731(0x02); // след. запись в регистр режима (2 байта)
WR_AD7731(0xB1); // запись старшего байта в регистр режима (unipol, 24bits,Internal FULL-SCALE Calibration)
WR_AD7731(0x71); // запись младшего байта в регистр режима (Uref=2,5V, Uin=0...1,28V, AIN1-AIN6)
while(RDY_AD7731);

WR_AD7731(0x02); // след. запись в регистр режима (2 байта)
WR_AD7731(0x91); // запись старшего байта в регистр режима (unipol, 24bits,Internal ZERO Calibration)
WR_AD7731(0x71); // запись младшего байта в регистр режима (Uref=2,5V, Uin=0...1,28V, AIN1-AIN6)
while(RDY_AD7731);

WR_AD7731(0x02); // след. запись в регистр режима (2 байта)
WR_AD7731(0x31); // запись старшего байта в регистр режима (unipol, 24bits, непрерывное преобразование)
WR_AD7731(0x71); // запись младшего байта в регистр режима (Uref=2,5V, Uin=0...1,28V, AIN1-AIN6)
while(RDY_AD7731);

CS_AD7731 = 1;
}

// ================== запись байта в регистр ===================
void WR_AD7731(unsigned char byte)
{
spi(byte);
}


// ================== чтение len байтов из регистра данных ===================
unsigned long int RDn_AD7731(unsigned char len)
{
unsigned long int rx;
unsigned char k;

rx=0;
for( k=0; k<len; k++ ) // чтение ответа из устройства
{
rx <<= 8; // это зависит от порядка передаваемых байтов устройством
rx |= spi( 0xFF ); // записать очередные 8 бит от slave в переменную
}
return rx;
}

 

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сообщения

    • Василичь! Прописано в ГОСТе. Смотри выше, надоело повторяться. А про сотни фирм - так приводят, Василичь, приводят. Я, только вчера - сегодня выложил данные и Magnat, и Dinaco, и Luxman, и  McIntosh. У всех написагно 1% или менее. А ты, как слепой. Кроме своих картинок ничего не видишь. Ты, Василичь, как репродуктор на стенке. Ему что не говори, а он своё - Начинаем утреннюю зарядку.   Василичь! Ну, хоть народ не смеши. Я упомянул Luxman MQ-3600, McIntosh MC75,  Magnat RV 1, Dynaco ST-70. И привёл их параметры. Кто из них шарманка типа ресивер транзисторная? Ей Богу, глядя на тебя понимаешь - с возрастом далеко не ко всем приходит мудрость. Иных посещает иное. Ты много и долго говорил. Как всегда, не о том. Мне ужасно интересно немного другое. Ты тут сказал Василичь! Умоляю! Поясни мне, что такое в 0,1 раза  всего. С картинками на 3 экрана, с красными стрелками, ну, как ты любишь. Правда, не понимаю я твоей математики. Как понять - если при 250 милливатт мощности уровень гармоник равен уровню шума? С каких делов он равен? Откуда 71 дБ? Просто сложили котов с табуретками? Было 2 цифры 46 и 25 дБ. Что с ними делать? Только сложить. Ну, не вычитать же.
    • Предлагаю четвертый вариант: скачать и почитать вот эту книжку.
    • предлагаю третий вариант : щупы на выводы индуктивности, осцил - триггер по напряжению
    • Конечно изначально контролирую ток через лампы по контрольным резисторам, хотя по большому счету разве существенна разница есть резисторы, 1ом, 10 ом или их нет мы то все равно видим  по мультиметру (только разное положение переключателя диапазонов измерений) какой ток течет через лампу, можно и без резисторов и по падению на сопротивлении обмотки по закону ома посчитать,  а "0"  в милливольтах мы все равно видим между анодами выходных ламп если схема симметрична, или снова я не правильно понимаю? Прошу сильно не ругать, я только учусь. Ведь потому и пишу, что ставлю лампы с разным током (проверенные) с обмотками у которых разное сопротивление и в итоге при такой "установке" ноль между анодами и получается при минимальной разности по сопротивлениям (хорошая симметрия?) на подстроечных и постоянных (фазоинвертор) резисторах по искажениям и одинаковом токе через лампы на контрольных 10ом (70-75мА) резисторах, а если я ставлю лампы с одинаковым током (установлено по одной точке при подборе) то ток разный через лампы получается и настройка проходит трудней.
    • "Правов" нет, но навык вождения, всякого самобеглого, имеется. Сказалась буйная молодость, сельхоз десанты и картофельные командировки на месяц, когда в технаре обучался. Велик не брошу, он гораздо пользительнее "белоруса".  И соляру не жрёть.
    • Вопрос довольно интересный, возникла та же ошибка как и у многих, перепаял 5 штук мег8 безрезультатно, 
      начал все проверять, взял мегу в ДИП шьется нормально ставлю в TQFP  опять ощибка и так много раз,
      потом взял другой программатор и все пошло, 
      прикол наверное вот в чем, программатор который не шьет TQFP ремонтировался пришел из китая нерабочий , 
      и прошит новой прошивкой, а второй не стал перепрошивать на новую прошивку , и он работает нормольно.
      Стало быть дело в прошивках в новых что-то не то, или со старым софтом не дружат.
    • Ну ты реально дебил, Валера... Я НИ РАЗУ не писал, что ВНОСИТСЯ емкостое. Я писал о ПАРАЗИТНОЙ ЕМКОСТИ между витками и бидоном. Эта емкость не вноситься из магнитной связи. И никакого отношения к НЧ измерению осциллографом не имеет. Либо перейди на измерение экспоненты на 1 кГц, либо оставь в покое свой LC-метр. Чувак с липовым дипломом непонятно чего  пытается учить математике и физике радиоинженера с КРАСНЫМ дипломом и 37 годами стажа в разработке (включая работу в ведущем НИИ 1-го Главка МЭПа)... Я просто х..ею с этого дебила... Ты хоть в курсе относительно объема математики и физике на радиофакультете? Ты ваще чего там кончал? Коридорные курсы простигосподи? Иди в жопу, пионЭр. Пиши свои никчемные каракули.