alux 0 8 августа, 2007 Опубликовано 8 августа, 2007 · Жалоба Сначала АЦП был подключен к PORTC Mega32L. Ацп нормально ресетилось. По крайней мере DRDY сбрасывался в 0. Для отладки подключил JTAG. Для этого выводы АЦП переподключил к PORTA. JTAG вместе с выводами АЦП не подключался. SCLK, DRDY, DIN/DOUT подключены через резисторы 2к. DRDY -> input, pullup on. В программе сделал соответствующее переназначение выводов. Теперь программа находится в вечном ожидании готовности АЦП. Какие будут соображения? Как проверить работоспособность АЦП? P.S. Один ньюанс. После переподключения к порту А сначала забыл настроить выводы порта А. До этого они были в Hi-Z. В принципе, это ни на что не должно повлиять. Но все-таки... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wodya 0 9 августа, 2007 Опубликовано 9 августа, 2007 · Жалоба А что показывает осцилограф на DRDY? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alux 0 9 августа, 2007 Опубликовано 9 августа, 2007 · Жалоба Осцилографа нет. Но тестер показывает на DRDY напряжение питания (+3.021В). Хотя по идее после включения питания там должен быть 0. АЦП включен по схеме с биполярным возбуждением моста (см. даташит). Сейчас иду за феном для выпаивания... Или будут другие предложения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
E1962 0 9 августа, 2007 Опубликовано 9 августа, 2007 · Жалоба Через 2К последовательно? Если да то вы уронили фронты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alux 0 9 августа, 2007 Опубликовано 9 августа, 2007 · Жалоба Вы считаете, что проблема в резисторах? Но DRDY в любом случае должен быть в ноле после ресета. Или я ошибаюсь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alux 0 10 августа, 2007 Опубликовано 10 августа, 2007 · Жалоба Мне кажется, что после включения питания АЦП не сбрасывается. Хотя 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 из даташита? AD7714.rar AD7730_7730L.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
E1962 0 10 августа, 2007 Опубликовано 10 августа, 2007 · Жалоба Попробуйте отключить выход,может лог 1 идет извне.RDY логический выход.спользуется как выход состояния и в режиме преобразования и в режимкалибровки.в режиме преобразования рду переводится в низкое состояние когда новое выходное слово поступает в регистр данных.....если данные не читаются,то рду возвращается в высокое состояние до следующего цикла чтения.Это из моего справочника.Возможно вы не отлавливаете первый ноль.И попробуйте вручную подать лог 0 на сброс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alux 0 10 августа, 2007 Опубликовано 10 августа, 2007 · Жалоба Нашел в чем проблема. Как всегда, ошибка в монтаже. Вывод SYNC у меня был посажен на землю. И по даташиту, он как раз и удерживает всю аналоговую периферию АЦП в состоянии сброса и соответственно, вывод RDY в высоком состоянии. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
E1962 0 10 августа, 2007 Опубликовано 10 августа, 2007 · Жалоба Просветите про 2К куда вы их втыкаете и зачем Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alux 0 10 августа, 2007 Опубликовано 10 августа, 2007 · Жалоба Просветите про 2К куда вы их втыкаете и зачем Здесь все сказано. www.telesys.ru/wwwboards/mcontrol/319/messages/152413.shtml А что на счет использования аппаратного SPI ? Как говорят у нас на Украине:""Не говори Гоп, поки не перескочиш". Блин, все равно после сброса вывод RDY не сбрасывается в :07: . Вот мой пример: 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. Резисторы - ни при чем. Пробовал подключать выводы АЦП к мк напрямую. Тот же эффект. Не хочется даже думать о том, что микросхема сдохла. В чем же дело? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alux 0 10 августа, 2007 Опубликовано 10 августа, 2007 · Жалоба Блин. Были перепутаны выводы DIN и DOUT и полярность SCLK ! Поменял. Все равно не работает :( В связи с этим вопрос: можно литаким образом повредить АЦП? Хотя у меня же последовательно были включены резисторы 2кОм. Обязательно ли ставить емкости на MCLKIN, MCLKOUT ? Если нужны, то какой емкости? Кварц 2.4576 МГц. В даташите сказано, что емкости выводов 5 и 13 пФ достаточно, и они в большинстве случаем не нужны. Может в этом проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wodya 0 10 августа, 2007 Опубликовано 10 августа, 2007 · Жалоба А осцилограф не можете достать? Я думаю многое бы прояснилось. Во-первых сразу видно генерит кварц или нет. В принципе, мультиметр должен показывать от 1..3.5 В, что косвенно свидетельствует о генерации. Именно с этим АЦП не работал, но работал с аналогичным от TI (насколько могу понять). Напряжение на DRDY свидетельствует о том, что ваш МК не отвечает на запрос. Т.е. АЦП сбрасывает DRDY, что свидетельствует о готовности данных. Если бы ваш МК производил цикл чтения данных, то АЦП тут же возводил бы DRDY и напряжение равнялось 5 В. А в вашем случае АЦП ждет какое-то время до начала нового цикла и не получив ответа возводит DRDY, но среднее напряжение уже ниже (хотя в ADS1210 оно равнялось бы практически нулю). Если Вы занимаетесь аналоговой техникой, то без осцилографа никуда, Советую достать. Странно, что программа находиться в вечном ожидании. Если напряжение меньше 5 В, то это свидетельствует о том, что импульсы есть (правда если Вы запитываетесь от 5 В) Сгорание АЦП по цифровым входам невозможна (только если напряжение выходит за пределы 0..5 В). Это я проверял многократно. Скорее всего ваше АЦП исправен. Он сгорает лишь от перенапряжения или от перегрева, если неправильно поданы аналоговые напряжения и земли. А DRDY точно настроен на вход, а то из программы не видно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alux 0 11 августа, 2007 Опубликовано 11 августа, 2007 · Жалоба Напряжение на DRDY свидетельствует о том, что ваш МК не отвечает на запрос. Т.е. АЦП сбрасывает DRDY, что свидетельствует о готовности данных. Если бы ваш МК производил цикл чтения данных, то АЦП тут же возводил бы DRDY и напряжение равнялось 5 В. А в вашем случае АЦП ждет какое-то время до начала нового цикла и не получив ответа возводит DRDY, но среднее напряжение уже ниже (хотя в ADS1210 оно равнялось бы практически нулю). Вот цитата из AN-406: Включение устройства - DRDY переходит в состояние логической единицы после включения питания, переходит в низкое состояние через время, соответствующее трем обновлениям данных на выходе и остается в низком состоянии, пока считываются данные Повторяю вопрос. Сразу после включения надо ли ждать готовности DRDY? Или АЦП сбросит его в ноль только после инициализации его регистров? Может ошибка в программах записи? Хотя они у меня работали с AD7714. Добавил только еще один аргумент, чтобы можно было записывать данные разной длины. Напомню, напряжение питания +3В. Аналоговое напряжение : +2.5В ... -2.5В. POL - на земле. SYNC - на +3В. Поставил на кварце по 22пФ. Тестер показывает на выводах кварца +1.3В. Могло ли АЦП выйти из строя после перепайки феном? Время воздействия ~ 5...10 сек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alux 0 11 августа, 2007 Опубликовано 11 августа, 2007 · Жалоба Выловил еще одну ошибку. В процедурах записи/чтения в/из регистра АЦП : reglength надо указывать не 8,15 или24 , а 7, 15, 23. Т.е. положение бита в регистре. Но все равно вывод RDY висит в единице, хоть ты тресни Может будут еще какие идеи, предложения? Только что обнаружил, что на MCLKOUT (3 вывод) - 0 В, на MCLKIN (2 вывод) : 1.2 В. Хотя раньше на обеих выводах было напряжение. Может быть проблема в кварце? Осциллографа пока нет. Но обещают вечером дать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ares-Konovalov_a 0 13 мая, 2012 Опубликовано 13 мая, 2012 · Жалоба Интересно, чем история закончилась...столкнулся с аналогичной проблемой. Народ помогите советом у меня в целом пошожая проблема.. Вывод RDY не сбрасывается ни в какую на MCLKOUT (3 вывод) - 2,5 В,- есть сигнал генерации на MCLKIN (2 вывод) : 0,5 В-генережки нет. Менял микросхему на новую..ставил другой кварц, отправлял 32 еденици, ресетил вручную кнопочкой,... Что надо зделать чтоб этот вывод сбросился?? мучаюсь уже нескольтко дней уже все мысли закончились Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться