Время до разрешения 100 нс требует таймера, работающего на 10 МГц. Многие микроконтроллеры должны быть способны запускать таймер так быстро.
Проблема возникает, когда вы пытаетесь рассчитать время прибытия 6 сигналов. Все эти сигналы находятся на одном проводе, или каждый на другом проводе?
Если они все подключены к одному и тому же проводу, то можно было бы сделать это точно на любом MCU с одним таймером 10 МГц. Наивно, код для этого будет выглядеть примерно так:
wait for trigger signal
reset timer
wait for first signal
save timer value
reset timer
....
wait for sixth signal
save timer value
reset timer
Проблема в том, что для сброса таймера требуется ограниченное время. Это вызывает две проблемы:
Измеренное время будет неправильным на несколько 100 нс, в зависимости от вашей реализации. Тем не менее, они должны быть последовательно неправильно. То есть неправильно каждый раз на одну и ту же сумму. Это означает, что вы можете легко компенсировать это, добавляя небольшое количество к каждому измерению.
Там будет минимальное время, которое вы могли бы измерить. Если любой импульс прибыл через 100 нс после предыдущего, то вы, вероятно, пропустите его. Я не знаю, можно ли что-нибудь сделать с этим в программном обеспечении. Вы должны найти микроконтроллер, который может обрабатывать несколько импульсов в аппаратном обеспечении.
Какой микроконтроллер может обрабатывать несколько импульсов в оборудовании? Cypress PSoC ! Это микроконтроллер, который также содержит настраиваемые цифровые блоки, что означает, что вы можете легко использовать 6 отдельных таймеров, каждый с частотой 60 МГц, что дает разрешение выше 20 нс.
Вот пример, который я быстро выбил, чтобы показать вам, что вы можете с ним сделать. У меня есть 6 отдельных таймеров, все они работают от шинных часов, которые могут достигать 67 МГц. Есть триггерный вывод, который запускает все таймеры, и 6 других контактов, каждый из которых вызывает событие захвата в таймере. Регистр состояния позволяет вашему коду отслеживать, какие таймеры фиксируют импульс. Код может считывать значения из таймеров.