Я собираюсь измерять очень короткое время как можно точнее. Устройство получит первый импульс и в течение 150 микросекунд еще шесть, каждый на своих собственных проводах. Время между первым сигналом и каждым из шести других сигналов должно быть измерено с максимально возможной точностью. Точность должна быть не менее 100 наносекунд, но чем больше, тем лучше.
Какой микроконтроллер подойдет для этого? Я нашел это . Кажется, у них есть таймер с периодом 4 наносекунды. Это было бы достаточно точно для меня.
Был бы какой-нибудь другой микроконтроллер лучше сделать это? Можно ли это сделать с помощью AVR?
microcontroller
time
Kestis
источник
источник
Ответы:
Скорость микроконтроллера не всегда является ограничивающим фактором. MSP430 может быть подходящим решением не потому, что он работает только на частоте до 25 МГц, а потому, что несколько устройств MSP430 имеют периферийное устройство Timer D, которое обеспечивает период времени до 4 нс (256 МГц). Это быстрее, чем почти все микроконтроллеры. Даже STM32 в его последних версиях (F4) может работать только с частотой 180 МГц.
Таймер D доступен на устройствах MSP430F51x1 и MSP43051x2, таких как MSP430F5131.
Однако это только решает возможность захватить время. Большой вопрос, что вы будете делать с ним, потому что сама обработка будет медленнее. Вы можете определить время между двумя импульсами, но вы не сможете выполнить какую-либо обработку между ними, если вы это имеете в виду.
источник
Время до разрешения 100 нс требует таймера, работающего на 10 МГц. Многие микроконтроллеры должны быть способны запускать таймер так быстро.
Проблема возникает, когда вы пытаетесь рассчитать время прибытия 6 сигналов. Все эти сигналы находятся на одном проводе, или каждый на другом проводе?
Если они все подключены к одному и тому же проводу, то можно было бы сделать это точно на любом MCU с одним таймером 10 МГц. Наивно, код для этого будет выглядеть примерно так:
Проблема в том, что для сброса таймера требуется ограниченное время. Это вызывает две проблемы:
Измеренное время будет неправильным на несколько 100 нс, в зависимости от вашей реализации. Тем не менее, они должны быть последовательно неправильно. То есть неправильно каждый раз на одну и ту же сумму. Это означает, что вы можете легко компенсировать это, добавляя небольшое количество к каждому измерению.
Там будет минимальное время, которое вы могли бы измерить. Если любой импульс прибыл через 100 нс после предыдущего, то вы, вероятно, пропустите его. Я не знаю, можно ли что-нибудь сделать с этим в программном обеспечении. Вы должны найти микроконтроллер, который может обрабатывать несколько импульсов в аппаратном обеспечении.
Какой микроконтроллер может обрабатывать несколько импульсов в оборудовании? Cypress PSoC ! Это микроконтроллер, который также содержит настраиваемые цифровые блоки, что означает, что вы можете легко использовать 6 отдельных таймеров, каждый с частотой 60 МГц, что дает разрешение выше 20 нс.
Вот пример, который я быстро выбил, чтобы показать вам, что вы можете с ним сделать. У меня есть 6 отдельных таймеров, все они работают от шинных часов, которые могут достигать 67 МГц. Есть триггерный вывод, который запускает все таймеры, и 6 других контактов, каждый из которых вызывает событие захвата в таймере. Регистр состояния позволяет вашему коду отслеживать, какие таймеры фиксируют импульс. Код может считывать значения из таймеров.
источник
Пересмотренный ответ : быстрый цифровой запоминающий осциллограф или, возможно, устройство для измерения частоты.
Старый ответ :
Проще говоря, «самый быстрый микроконтроллер, который вы можете найти», на том основании, что чем быстрее ваши часы / выборка, тем точнее вы можете быть. MSP430 не быстрые устройства.
STM32 32-битные и будут работать быстрее, плюс есть такие же дешевые платы и инструменты для разработки, но даже это довольно медленно по сравнению с некоторыми из более мощных доступных компонентов (Raspberry Pi @ 800MHz - 1GHz (Overclocked)). Однако, как правило, чем быстрее вы идете, тем сложнее процессор, поэтому в кривой обучения может быть компромисс.
Добавлено: Бенджи прав, вам (возможно) также нужен точный осциллятор для микро, если вы хотите очень точные измерения (вы на самом деле не задаете границы ошибок в своем вопросе).
источник