Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос по работе с АЦП MCP3301
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Вопросы аналоговой техники
Nikkolaj
Добрый день.
У меня такой вопрос.
Работаю с АЦП MCP3301.
Управляю им с помощью программного SPI на частоте 400кГц.
Аппаратный SPI занят другими задачами.
Во время измерения может поступить прерывание, на которое я обязан ответить,
и соответственно прервать посылки на MCP3301.
Спрашивается, на какое время можно прервать посылки на MCP3301 без потери точности измерения ?
В документации сказано, что минимальная частота = 85кГц.
demiurg_spb
Вы на мой взгляд уже сами себе и ответили:
Цитата(Nikkolaj @ May 17 2012, 11:53) *
В документации сказано, что минимальная частота = 85кГц.


Вообще идеологически SPI - это синхронный интерфейс и ему пофиг до того какой его частотой тактируют.
Диапазон частоты тактирования определяются только возможностями ведомого устройства.
Логично предположить что если в документации на ваше АЦП имеется некое ограничение снизу, то его стоит придерживаться...
xemul
Цитата(Nikkolaj @ May 17 2012, 12:53) *
Спрашивается, на какое время можно прервать посылки на MCP3301 без потери точности измерения ?
В документации сказано, что минимальная частота = 85кГц.

Там же сказано, и чем определяется это ограничение - разрядом конденсаторов УВХ за время измерения.
Если уложитесь с преобразованием в 182 мкс, можете считать, что с этой стороны требования ДШ Вы не нарушили.
А про возможные дополнительные погрешности от неравномерного тактирования, думаю, даже разработчики этого АЦП без пол-банки ничего не скажут.
Nikkolaj
Предполагаю, что ограничение частоты снизу вызвано не возможностью SPI порта АЦП,
а процессом разряда во времени входного конденсатора Сsample, на котором хранится измеряемое напряжение.
При минимальной частоте 85кГц цикл измерения будет примерно 150мкс.
Думаю что это и есть то время, которое конденсатор держит измеряемое напряжение с достаточной точностью.
Я работаю на частоте 400кГц, соответственно цикл измерения у меня будет примерно 30мкс.
Получается, что я могу прервать свой цикл измерения в любом месте примерно на 150-30= 120мкс.
Но полной уверенности в этом у меня нет, поэтому и спрашиваю.
Kolia
Цитата(Nikkolaj @ May 17 2012, 11:53) *
Во время измерения может поступить прерывание, на которое я обязан ответить,
и соответственно прервать посылки на MCP3301.


Если запихнуть обработчик программного SPI в таймер (сделать что-то на подобие диспетчера задач), то проблемма уйдет сама собой и ничего прерывать не нужно будет....
xemul
.
Nikkolaj
Цитата
Если запихнуть обработчик программного SPI в таймер (сделать что-то на подобие диспетчера задач), то проблемма уйдет сама собой и ничего прерывать не нужно будет....


Спасибо за ответ, идея действительно красивая и неожиданная для меня.
Сейчас просчитывал как её реализовать.
К сожалению для этой задачи она не подойдёт по скорости.
Сейчас у меня время ожидания между действиями составляет 10-12 машинных тактов.
Вставить в это время диспетчер задач не получается.
Наверное диспетчер задач применяется для более медленных задач.
А вообще предложение интересное, возможно применю его в других задачах.
Ещё раз благодарю.


to xemul.
Спасибо за ответ.
Свой предыдущий пост я начал писать до того, как увидел Ваше сообщение,
поэтому получилось такое несколько несуразное смещение ответов. Извините.

Наши расчёты допустимого прерывания практически совпадают.
Это внушает оптимизм.
Попробую делать с прерыванием, тем более что его удалось уменьшить, и он будет не больше 10мкс.


xemul
Цитата(Nikkolaj @ May 18 2012, 15:52) *
Спасибо за ответ, идея действительно красивая и неожиданная для меня.
Сейчас просчитывал как её реализовать.
К сожалению для этой задачи она не подойдёт по скорости.
Сейчас у меня время ожидания между действиями составляет 10-12 машинных тактов.
Вставить в это время диспетчер задач не получается.
Наверное диспетчер задач применяется для более медленных задач.

Для программного SPI без ограничений по частоте сверху такое решение избыточно - таймер генерит прерывания в несколько мкс, соизмеримые задержки на обслуживание прерывания, кучка дополнительного кода.
Подобное решение в виде конечного автомата (на двух прерываниях - таймера и внешнего входа) удобно использовать, н-р, для ванварного мастера (или слэйва, если частота контроллера позволяет). "Диспетчер задач" звучит гордо, но сводится он в этом случае к таблицам переходов в соответствии с графом автомата.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.