Наносекундный одиночный импульс по триггеру

Здравствуйте
Помогите написать скетч на Arduino STM32 (stm32f103c8 + кварц 8МГц)
Имеем входной сигнал 5в 1мкс
Нужно его поймать и через минимально возможное время в порт отправить один импульс длительностью от 40 до 150 наносекунд если это возможно.

Так же прошу объяснить , как считать минимальное время исполнения похожих операций.

Спасибо

каким местом тут триггер?

сработка по входному сигналу (триггеру)

Триггер (англ. trigger в значении существительного «собачка, защёлка, спусковой крючок — в общем смысле, приводящий нечто в действие элемент»; в значении глагола «приводить в действие»)

Это из википедии

Считать не знаю, а измерить можно осцилом и логиканализатором.
Последовательная запись 1 и 0 в регистр пина на блюпиле формирует импульс порядка 100-150 нс.

С каким кварцем?

А они бывают только с одним - 8 МГц.
Тактовая ядра при этом 72 МГц

если на авр то, наверное можно попробовать использовать внешнее прерывание для запуска программного одновибратора, задержка будет 1-3,5 us, с стм не знаю как, но судя по всему задержка будет намного меньше

Понял.
тоесть digitalwrite high, потом digitalwrite low и на выходе 150нс?

на STM

Теории не знаю, но чисто по опыту прерывания на блюпиле довольно медленная вещь, один только вход порядка 0.5 - 1 us
Хотя на общность не претендую.

Дижиталрайт очень долог. Писать прямо в порт.

1 лайк

опыта на стм нет от слова совсем, так что это все чисто умозрительно

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

нет, никаких digitalwrite, напрямую в порт

// предварительно
uint32_t* datasetreg = portSetRegister(pin);
uint32_t pinmask = digitalPinToBitMask(pin);
...
// impulse
*datasetreg = pinmask;        // HIGH
*datasetreg = pinmask << 16;  // LOW
1 лайк

И еще вопрос, можно на блюпилл заменить кварц на 32МГц? Плата будет работать?

Зачем?
Я ж вам написал, что она и с этим кварцем у вас работает не на 8 МГц, а на 72. Это максимум по даташиту.

Не жалейте о частоте кварца, это вам не Ардуино Нано :slight_smile:

1 лайк

b707, Спасибо.
Завтра с меня осциллограммы

В стм32 события могут запускать таймеры, таймеры генерировать импульсы. Это однозначно лучший и предсказуемый вариант, так что как всегда - читай даташит пока не ослепнешь, там всё есть.

1 лайк

rkit, можете помочь кодом? Полностью с Вами согласен что все есть в даташите.