Перейти к содержанию
    

Вопрос по работе с АЦП MCP3301

Добрый день.

У меня такой вопрос.

Работаю с АЦП MCP3301.

Управляю им с помощью программного SPI на частоте 400кГц.

Аппаратный SPI занят другими задачами.

Во время измерения может поступить прерывание, на которое я обязан ответить,

и соответственно прервать посылки на MCP3301.

Спрашивается, на какое время можно прервать посылки на MCP3301 без потери точности измерения ?

В документации сказано, что минимальная частота = 85кГц.

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


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

Вы на мой взгляд уже сами себе и ответили:

В документации сказано, что минимальная частота = 85кГц.

 

Вообще идеологически SPI - это синхронный интерфейс и ему пофиг до того какой его частотой тактируют.

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

Логично предположить что если в документации на ваше АЦП имеется некое ограничение снизу, то его стоит придерживаться...

 

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


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

Спрашивается, на какое время можно прервать посылки на MCP3301 без потери точности измерения ?

В документации сказано, что минимальная частота = 85кГц.

Там же сказано, и чем определяется это ограничение - разрядом конденсаторов УВХ за время измерения.

Если уложитесь с преобразованием в 182 мкс, можете считать, что с этой стороны требования ДШ Вы не нарушили.

А про возможные дополнительные погрешности от неравномерного тактирования, думаю, даже разработчики этого АЦП без пол-банки ничего не скажут.

 

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


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

Предполагаю, что ограничение частоты снизу вызвано не возможностью SPI порта АЦП,

а процессом разряда во времени входного конденсатора Сsample, на котором хранится измеряемое напряжение.

При минимальной частоте 85кГц цикл измерения будет примерно 150мкс.

Думаю что это и есть то время, которое конденсатор держит измеряемое напряжение с достаточной точностью.

Я работаю на частоте 400кГц, соответственно цикл измерения у меня будет примерно 30мкс.

Получается, что я могу прервать свой цикл измерения в любом месте примерно на 150-30= 120мкс.

Но полной уверенности в этом у меня нет, поэтому и спрашиваю.

 

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


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

Во время измерения может поступить прерывание, на которое я обязан ответить,

и соответственно прервать посылки на MCP3301.

 

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

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


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

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

 

Спасибо за ответ, идея действительно красивая и неожиданная для меня.

Сейчас просчитывал как её реализовать.

К сожалению для этой задачи она не подойдёт по скорости.

Сейчас у меня время ожидания между действиями составляет 10-12 машинных тактов.

Вставить в это время диспетчер задач не получается.

Наверное диспетчер задач применяется для более медленных задач.

А вообще предложение интересное, возможно применю его в других задачах.

Ещё раз благодарю.

 

 

to xemul.

Спасибо за ответ.

Свой предыдущий пост я начал писать до того, как увидел Ваше сообщение,

поэтому получилось такое несколько несуразное смещение ответов. Извините.

 

Наши расчёты допустимого прерывания практически совпадают.

Это внушает оптимизм.

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

 

 

 

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


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

Спасибо за ответ, идея действительно красивая и неожиданная для меня.

Сейчас просчитывал как её реализовать.

К сожалению для этой задачи она не подойдёт по скорости.

Сейчас у меня время ожидания между действиями составляет 10-12 машинных тактов.

Вставить в это время диспетчер задач не получается.

Наверное диспетчер задач применяется для более медленных задач.

Для программного SPI без ограничений по частоте сверху такое решение избыточно - таймер генерит прерывания в несколько мкс, соизмеримые задержки на обслуживание прерывания, кучка дополнительного кода.

Подобное решение в виде конечного автомата (на двух прерываниях - таймера и внешнего входа) удобно использовать, н-р, для ванварного мастера (или слэйва, если частота контроллера позволяет). "Диспетчер задач" звучит гордо, но сводится он в этом случае к таблицам переходов в соответствии с графом автомата.

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...