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

Не могу сделать короткий импульс(10..100 нс) на STM32F746

14 hours ago, EdgeAligned said:

Посоветуем либо ПЛИС, либо формирователь на конденсаторе или таймере, либо - ассемблер в руки и ага 🙂 

ПЛИС можно, но в данной ситуации излишняя.

 

Ассемблер тут точно не помоможет, т.к. ядро Cortex-Mx (x = 0, 3, 4, 7) - не AVR и не PIC (по крайней мере - ранние серии), где каждая команда выполняется за детерминированные N тактов. За счёт работы конвейра, например, одна и та же команда может выполняться разное количество тактов, что уже внесёт погрешность. Другими словами: дёргать точно "ножками" на микроконтроллерах с такими процессорными ядрами при помощи ассемблера - нельзя.

 

Формирователь на конденсаторе или таймере (555?) может быть и можно будет сделать, хотя конденсатор понадобится с хорошим диэлектриком (NP0/C0G). Но регулировка длительности импульса потребует создавать аналоговую схему, которая скорее всего будет нетривиальной.

 

Таймером в режиме ШИМ такая задача дейсвительно решается. При этом дискретность (разрешение) регулировки составит 1 / Fckl, где Fclk - частота работы таймера.

И уже как не просто пользователь, а модератор добавлю:

Модератор: коллеги, сохраняйте взаимоуважениеи к друг другу. Это продиктовано и правилами форума, и чисто с моральных норм наиболее приемлемо для ведения дискуссии.

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


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

Помнится, раньше для таких целей _delay_us применяли. Компилятор там сам вычислял нужное количество нопов.

Может, нынче есть что-то подобное, но уже типа _delay_ns ?

Естественно, ограничения данного метода нужно иметь в виду.

Кстати, пауза может быть связана не только с процессором, но и с тактированием GPIO. И тут никакие программные примочки не помогут.

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


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

Два канала HRTIM и внешний триггер быстрый. Один канал HRTIM на set триггера, второй, с задержкой, на reset. Выход триггера-желаемый импульс.  Задержка регулируется с точностью в дискреты HRTIM, сотни пикосекунд, хотя джиттерит изрядно, можно ли применять в реале от задачи зависит. Как только начинает требоваться метрология- приходится делать аналоговую цепь формирования длительности импульса на заряде конденсатора с калибровкой по кварцевому эталону с низким джиттером. И это не кварц процессора.

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


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

1 hour ago, MrYuran said:

Естественно, ограничения данного метода нужно иметь в виду.

Я использую программные задержки на Cortex'ах только если нужна погрешность +- калач. Например, 10 мс +- 1 мс. Но это в основном разовые или экспериментальные работы. Либо проекты без ОСРВ, а таймер самому заводить лень.

for( volatile auto i = 0; i < 100'000; i++);

Ограничения:

1. Частота работы процессора не меняется.

2. ПО не портируется.

3. Чувство собственного уважения не страдает от зависимости такого подхода.

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


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

Кстати, а SPI не получится использовать в таком режиме?

100МГц тактовая, каждый бит как раз 10 нан будет

On 9/1/2023 at 12:44 PM, haker_fox said:

Я использую программные задержки на Cortex'ах только если нужна погрешность +- калач. Например, 10 мс +- 1 мс. Но это в основном разовые или экспериментальные работы. Либо проекты без ОСРВ, а таймер самому заводить лень.

мс - это однозначно, только через тиковый таймер.

Недавно случай был, на производстве.

Одно дарование лет ..надцать назад поставило delay(100500), а другое, чтобы вотчдог не дергался, поставило внутрь КАЖДОЙ паузы сброс вотчдога.

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

Но намекнули, что в следующий раз платить все-таки придется.

Надо ли рассказывать, как мы старались, чтобы следующего раза не было, ну или хотя бы не при нашей жизни )

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


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

1 hour ago, MrYuran said:

Кстати, а SPI не получится использовать в таком режиме?

100МГц тактовая, каждый бит как раз 10 нан будет

не уверен что его можно на 100МГц запустить,

и скорее какой-нибудь i2s или похожие аудио интерфейсы, у stm там вроде не все SPI так умеют, только некоторые.

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

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


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

А это такая народная забава пытаться сделат всё через опу, лишь бы не использовать предназначенное для этого устройство(таймер)?

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


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

47 minutes ago, VladislavS said:

А это такая народная забава пытаться сделат всё через опу, лишь бы не использовать предназначенное для этого устройство(таймер)?

это будет слишком просто, 

ТСу об этом в первом же сообщении написали и на этом тему можно было бы и закрыть.

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


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

2 часа назад, _pv сказал:

ТСу об этом в первом же сообщении написали и на этом тему можно было бы и закрыть.

Судя по отсутствию какой-либо реакции с его стороны, вангую - он проигнорил все советы и занят заточкой костылей на GPIO.  :biggrin:

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


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

8 hours ago, MrYuran said:

мс - это однозначно, только через тиковый таймер.

Я же написал: погрешность +- калач💗 И понимание программирования при этом никто не отменял. Хорошо, когда есть альтернатива. Плохо, когда есть только один способ решить задачу.

Например, мигать светодиодом с частотой 100 мГц. При этом период 50 мс вполне можно формировать с помощью программной задержки. Никто там погрешность +-5 мс не заметит.

 

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


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

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

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

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

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

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

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

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

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

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