haker_fox 61 1 сентября, 2023 Опубликовано 1 сентября, 2023 · Жалоба 14 hours ago, EdgeAligned said: Посоветуем либо ПЛИС, либо формирователь на конденсаторе или таймере, либо - ассемблер в руки и ага 🙂 ПЛИС можно, но в данной ситуации излишняя. Ассемблер тут точно не помоможет, т.к. ядро Cortex-Mx (x = 0, 3, 4, 7) - не AVR и не PIC (по крайней мере - ранние серии), где каждая команда выполняется за детерминированные N тактов. За счёт работы конвейра, например, одна и та же команда может выполняться разное количество тактов, что уже внесёт погрешность. Другими словами: дёргать точно "ножками" на микроконтроллерах с такими процессорными ядрами при помощи ассемблера - нельзя. Формирователь на конденсаторе или таймере (555?) может быть и можно будет сделать, хотя конденсатор понадобится с хорошим диэлектриком (NP0/C0G). Но регулировка длительности импульса потребует создавать аналоговую схему, которая скорее всего будет нетривиальной. Таймером в режиме ШИМ такая задача дейсвительно решается. При этом дискретность (разрешение) регулировки составит 1 / Fckl, где Fclk - частота работы таймера. И уже как не просто пользователь, а модератор добавлю: Модератор: коллеги, сохраняйте взаимоуважениеи к друг другу. Это продиктовано и правилами форума, и чисто с моральных норм наиболее приемлемо для ведения дискуссии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 1 сентября, 2023 Опубликовано 1 сентября, 2023 · Жалоба Помнится, раньше для таких целей _delay_us применяли. Компилятор там сам вычислял нужное количество нопов. Может, нынче есть что-то подобное, но уже типа _delay_ns ? Естественно, ограничения данного метода нужно иметь в виду. Кстати, пауза может быть связана не только с процессором, но и с тактированием GPIO. И тут никакие программные примочки не помогут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 43 1 сентября, 2023 Опубликовано 1 сентября, 2023 · Жалоба Два канала HRTIM и внешний триггер быстрый. Один канал HRTIM на set триггера, второй, с задержкой, на reset. Выход триггера-желаемый импульс. Задержка регулируется с точностью в дискреты HRTIM, сотни пикосекунд, хотя джиттерит изрядно, можно ли применять в реале от задачи зависит. Как только начинает требоваться метрология- приходится делать аналоговую цепь формирования длительности импульса на заряде конденсатора с калибровкой по кварцевому эталону с низким джиттером. И это не кварц процессора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 1 сентября, 2023 Опубликовано 1 сентября, 2023 · Жалоба 1 hour ago, MrYuran said: Естественно, ограничения данного метода нужно иметь в виду. Я использую программные задержки на Cortex'ах только если нужна погрешность +- калач. Например, 10 мс +- 1 мс. Но это в основном разовые или экспериментальные работы. Либо проекты без ОСРВ, а таймер самому заводить лень. for( volatile auto i = 0; i < 100'000; i++); Ограничения: 1. Частота работы процессора не меняется. 2. ПО не портируется. 3. Чувство собственного уважения не страдает от зависимости такого подхода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 1 сентября, 2023 Опубликовано 1 сентября, 2023 · Жалоба Кстати, а SPI не получится использовать в таком режиме? 100МГц тактовая, каждый бит как раз 10 нан будет On 9/1/2023 at 12:44 PM, haker_fox said: Я использую программные задержки на Cortex'ах только если нужна погрешность +- калач. Например, 10 мс +- 1 мс. Но это в основном разовые или экспериментальные работы. Либо проекты без ОСРВ, а таймер самому заводить лень. мс - это однозначно, только через тиковый таймер. Недавно случай был, на производстве. Одно дарование лет ..надцать назад поставило delay(100500), а другое, чтобы вотчдог не дергался, поставило внутрь КАЖДОЙ паузы сброс вотчдога. В результате прибор, занятый дозированием какой-то едрёной жижи, завис, и только внимательность персонала позволила избежать многомиллионного ущерба. Но намекнули, что в следующий раз платить все-таки придется. Надо ли рассказывать, как мы старались, чтобы следующего раза не было, ну или хотя бы не при нашей жизни ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 78 1 сентября, 2023 Опубликовано 1 сентября, 2023 · Жалоба 1 hour ago, MrYuran said: Кстати, а SPI не получится использовать в таком режиме? 100МГц тактовая, каждый бит как раз 10 нан будет не уверен что его можно на 100МГц запустить, и скорее какой-нибудь i2s или похожие аудио интерфейсы, у stm там вроде не все SPI так умеют, только некоторые. с просто SPI надо аккуратно, там, в зависимости от одарённости разработчиков, он как мастер иногда не умеет гнать непрерывный битовый поток, довабляя какой-нибудь лишний бит паузы между словами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 1 сентября, 2023 Опубликовано 1 сентября, 2023 · Жалоба А это такая народная забава пытаться сделат всё через опу, лишь бы не использовать предназначенное для этого устройство(таймер)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 78 1 сентября, 2023 Опубликовано 1 сентября, 2023 · Жалоба 47 minutes ago, VladislavS said: А это такая народная забава пытаться сделат всё через опу, лишь бы не использовать предназначенное для этого устройство(таймер)? это будет слишком просто, ТСу об этом в первом же сообщении написали и на этом тему можно было бы и закрыть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 1 сентября, 2023 Опубликовано 1 сентября, 2023 · Жалоба 2 часа назад, _pv сказал: ТСу об этом в первом же сообщении написали и на этом тему можно было бы и закрыть. Судя по отсутствию какой-либо реакции с его стороны, вангую - он проигнорил все советы и занят заточкой костылей на GPIO. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 1 сентября, 2023 Опубликовано 1 сентября, 2023 · Жалоба 8 hours ago, MrYuran said: мс - это однозначно, только через тиковый таймер. Я же написал: погрешность +- калач💗 И понимание программирования при этом никто не отменял. Хорошо, когда есть альтернатива. Плохо, когда есть только один способ решить задачу. Например, мигать светодиодом с частотой 100 мГц. При этом период 50 мс вполне можно формировать с помощью программной задержки. Никто там погрешность +-5 мс не заметит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться