Harvester
Feb 1 2006, 09:24
Микроконтроллер последовательно считывает данные со всех трех каналов АЦП. Все работает замечательно, но иногда АЦП начинает по какому-либо каналу (а то и не по одному) выдавать одни 0xFF независимо от входного сигнала. Момент совершенно непредсказуемый, пеерзапуском питания лечится не всегда.
Кто-нибудь встречался с такой проблемой?
PS При работе только с одним каналом как в datasheet - никаких проблем.
Виктория
Feb 1 2006, 10:28
Первое предположение - каналы могут не успевать переключаться.
Попробуйте ввести задержку при смене номера канала.
Лучше, конечно, исходники Ваши посмотреть.
Harvester
Feb 1 2006, 11:08
При чтении проверяется сигнал /DRDY, так что это маловероятно.
К тому же описанный эфект проявляется случайным образом. Иногда не проявляется вообще (тестировал весь рабочий день).
А исходники - пожалуйста, во вложении (IAR C для AVR).
Функция ReadADCdata вызывается раз в секунду в фоновом цикле программы.
Если в микроконтроллере аппаратная реализация SPI протокола, то может глючить и сам
микроконтроллер.Если SPI-протокол реализован программно , то меобходимо точно в
соответствии диаграммой следить за сигналами SCLK и DIN.Лишний или недостающий такт
SCLK будет приводить к глюку.
Может и странный совет , но подобное я победил на AD7705 блокировкой вывода
DOUT на землю емкостью порядка 220 пф.
В первую очередь обратите внимание на качество опорного напряжения и питания схемы. В схеме могут присутствовать высокочастотные помехи по питанию ('иголки'), которые могут забивать нормальную работу АЦП. Из-за этого (помеха обладает широким частотным спектром) может происходить самое натуральное возбуждение устройства по возникшим обратным связям (причин много в плоть до неудачного монтажа или разводки платы). upc2 заблокировав DOUT емкостью 'нарушил' процесс возбуждения, вот и все чудо... Схемы на CMOS структурах подвержены таким особенностям, тем более что входные сопротивления очень большие, за счет этого даже маленькая помеха может вызвать подобный эффект.
Harvester
Feb 3 2006, 08:45
Спасибо всем
Проблему решил, уменьшив длину кабеля между платами АЦП и контроллера.
sensor_ua
Feb 11 2006, 20:49
Похожую проблему имел с AT45DB161 и MSP430F149. Оказалось, что в отличие от Atmel (и многих других) названия (индекс) режимов SPI у MSP430 отличаются - конкретно попутаны. В результате при танцах с бубнами работало, а в более спокойной обстановке

нет. Проверить возможность такого психоза рекомендую
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.