|
Проблема с AD7730L, DRDY не сбрасывается в 0 |
|
|
|
Aug 10 2007, 08:44
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
Мне кажется, что после включения питания АЦП не сбрасывается. Хотя RST притянут к питанию через 10к и зашунтирован на общий емкостью 0.1мкФ. Если верить даташиту, то мин длительность импульса сброса 50 ns. В даташите как-то не внятно сказано о состоянии DRDY после сброса. Вот цитата: Цитата Reset Input The RESET input on the AD7730 resets all the logic, the digital filter and the analog modulator while all on-chip registers are reset to their default state. RDY is driven high and the AD7730 ignores all communications to any of its registers while the RESET input is low. When the RESET input returns high, the AD7730 starts to process data and RDY will return low after the filter has settled indicating a valid new word in the data register. However, the AD7730 operates with its default setup conditions after a RESET and it is generally necessary to set up all registers and carry out a calibration after a RESET command. Насколько я понял, после ресета DRDY опустится в 0 спустя некоторое время, необходимое для установления фильтра. По крайней мере у меня так было с AD7714. Цитата After power-on or RESET, the device expects a write to its Communications Register. Вот здесь вопрос : В Communications Register можно писать в любой момент, не дожидаясь DRDY=0 ? В AD7714 для надежного ресета можно отправить 32 "1" на DIN. В AD7730 ничего не нашел на счет этого. Повторюсь на счет последовательных резисторов 2кОм - надо ли уменьшить их значение сопротивления? И последнее, можно ли для связи мк с АЦП использовать аппаратный SPI. Не будет ли в таком случае конфликта при подключении программатора? Можно ли использовать пример кода Interfacing AD7714 to 68HC11 из даташита?
|
|
|
|
|
Aug 10 2007, 15:21
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
Цитата(Евгений Германович @ Aug 10 2007, 17:39)  Просветите про 2К куда вы их втыкаете и зачем Здесь все сказано. www.telesys.ru/wwwboards/mcontrol/319/messages/152413.shtml
А что на счет использования аппаратного SPI ? Как говорят у нас на Украине:""Не говори Гоп, поки не перескочиш". Блин, все равно после сброса вывод RDY не сбрасывается в  . Вот мой пример: Код void ADC_Init(void) { PORTA &= ~(1<<RST); PORTA |= (1<<RST); while(PINA&(1<<DRDY)); //wait for /DRDY to go low } Пробовал и так: Код // // AD7730L setting #define STANDBY PA2 #define RST PA3 #define DRDY PA4 #define DOUT PA5 #define DIN PA6 #define SCLK PA7 //----------------------------------------------------------------------------------############################################################################# // Initiating a Self-Calibration after Power-On/Reset AD7730L //_____________________________________________________________________________ void ADC_Init(void) { PORTA &= ~(1<<RST); PORTA |= (1<<RST)|(1<<DIN);
//Отправить 32 "1" for(unsigned char i=0;i<32;i++) { PORTA &= ~(1<<SCLK); delay_ns(50); PORTA |= (1<<SCLK); }
WriteToReg(0x03, 8); //Writes to Communications Register Setting: Next Operation as Write to Filter Register WriteToReg(0x800010, 24); //Writes to Filter Register Setting: a 50 Hz Output Rate in CHOP Mode WriteToReg(0x02, 8); //Writes to Communications Register Setting: Next Operation as Write to Mode Register WriteToReg(0xb190, 16); //Writes to Mode Register: Initiating Internal Full-Scale Calibration for -20 mV to +20 mV Input Range while(PINA&(1<<DRDY)); //wait for /DRDY to go low
WriteToReg(0x02, 8); //Writes to Communications Register Setting: Next Operation as Write to Mode Register WriteToReg(0x9190, 16); //Writes to Mode Register: Initiating Internal Zero-Scale Calibration for -20 mV to +20 mV Input Range while(PINA&(1<<DRDY)); //wait for /DRDY to go low } /////////////////////////////////////////////////////////////// //______________________________________________________________________________ void WriteToReg(unsigned long data, unsigned char reglength) { unsigned int count=0;
DDRA |= (1<<DIN); // DIN -> output
do{ PORTA |= (1<<SCLK); // SCLK = 1
if( data & (1<<reglength) ) PORTA |= (1<<DIN); // DIN = 1 else PORTA &= ~(1<<DIN); // DIN = 0
delay_ns(50); // 50 ns Data Valid to SCLK Edge Setup Time PORTA &= ~(1<<SCLK); // SCLK = 0 data = data << 1; count++; }while(count < reglength); }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% void main(void) { // Initialise DDRA = (1<<STANDBY)|(1<<RST)|(1<<DIN)|(1<<SCLK); //DOUT, DRDY -> input PORTA = (1<<STANDBY)|(1<<RST)|(1<<DRDY)|(1<<DOUT)|(1<<DIN); //pullups ON ................ } Все равно зависает ожидании сброса в ноль вывода DRDY. Резисторы - ни при чем. Пробовал подключать выводы АЦП к мк напрямую. Тот же эффект. Не хочется даже думать о том, что микросхема сдохла. В чем же дело?
|
|
|
|
|
Aug 10 2007, 20:40
|
Частый гость
 
Группа: Свой
Сообщений: 112
Регистрация: 27-03-07
Пользователь №: 26 549

|
А осцилограф не можете достать? Я думаю многое бы прояснилось. Во-первых сразу видно генерит кварц или нет. В принципе, мультиметр должен показывать от 1..3.5 В, что косвенно свидетельствует о генерации. Именно с этим АЦП не работал, но работал с аналогичным от TI (насколько могу понять). Напряжение на DRDY свидетельствует о том, что ваш МК не отвечает на запрос. Т.е. АЦП сбрасывает DRDY, что свидетельствует о готовности данных. Если бы ваш МК производил цикл чтения данных, то АЦП тут же возводил бы DRDY и напряжение равнялось 5 В. А в вашем случае АЦП ждет какое-то время до начала нового цикла и не получив ответа возводит DRDY, но среднее напряжение уже ниже (хотя в ADS1210 оно равнялось бы практически нулю). Если Вы занимаетесь аналоговой техникой, то без осцилографа никуда, Советую достать.
Странно, что программа находиться в вечном ожидании. Если напряжение меньше 5 В, то это свидетельствует о том, что импульсы есть (правда если Вы запитываетесь от 5 В)
Сгорание АЦП по цифровым входам невозможна (только если напряжение выходит за пределы 0..5 В). Это я проверял многократно. Скорее всего ваше АЦП исправен. Он сгорает лишь от перенапряжения или от перегрева, если неправильно поданы аналоговые напряжения и земли.
А DRDY точно настроен на вход, а то из программы не видно?
|
|
|
|
|
Aug 11 2007, 08:01
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
Цитата(wodya @ Aug 10 2007, 23:40)  Напряжение на DRDY свидетельствует о том, что ваш МК не отвечает на запрос. Т.е. АЦП сбрасывает DRDY, что свидетельствует о готовности данных. Если бы ваш МК производил цикл чтения данных, то АЦП тут же возводил бы DRDY и напряжение равнялось 5 В. А в вашем случае АЦП ждет какое-то время до начала нового цикла и не получив ответа возводит DRDY, но среднее напряжение уже ниже (хотя в ADS1210 оно равнялось бы практически нулю). Вот цитата из AN-406: Цитата Включение устройства - DRDY переходит в состояние логической единицы после включения питания, переходит в низкое состояние через время, соответствующее трем обновлениям данных на выходе и остается в низком состоянии, пока считываются данные Повторяю вопрос. Сразу после включения надо ли ждать готовности DRDY? Или АЦП сбросит его в ноль только после инициализации его регистров? Может ошибка в программах записи? Хотя они у меня работали с AD7714. Добавил только еще один аргумент, чтобы можно было записывать данные разной длины. Напомню, напряжение питания +3В. Аналоговое напряжение : +2.5В ... -2.5В. POL - на земле. SYNC - на +3В. Поставил на кварце по 22пФ. Тестер показывает на выводах кварца +1.3В. Могло ли АЦП выйти из строя после перепайки феном? Время воздействия ~ 5...10 сек.
|
|
|
|
|
May 13 2012, 17:49
|
Группа: Новичок
Сообщений: 7
Регистрация: 17-02-11
Пользователь №: 63 054

|
Интересно, чем история закончилась...столкнулся с аналогичной проблемой.
Народ помогите советом у меня в целом пошожая проблема.. Вывод RDY не сбрасывается ни в какую на MCLKOUT (3 вывод) - 2,5 В,- есть сигнал генерации на MCLKIN (2 вывод) : 0,5 В-генережки нет. Менял микросхему на новую..ставил другой кварц, отправлял 32 еденици, ресетил вручную кнопочкой,... Что надо зделать чтоб этот вывод сбросился?? мучаюсь уже нескольтко дней уже все мысли закончились
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|