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

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

Товарищи,

сделал такую программку. Дергает выводом A8. (Частота МК 216 Мгц. Оптимизация по времени включена.)

while(1)

{

*(__IO uint32_t *)0x40020018 = 0x100 << 16;              // Pin Reset
*(__IO uint32_t *)0x40020018 = 0x100 ;                       // Pin Set

}

На осциллографе длительность импульса ~ 10 нс.

Но если я вставлю между этими командами __ASM("NOP"), то длительность импульса становится сразу ~60 нс. А мне бы хотелось как-то плавно регулировать ее в пределах 10..100 нс.

Что посоветуете ?

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


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

10 минут назад, TOG сказал:

Что посоветуете ?

Изучать таймеры и ШИМы вашего МК.

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


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

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

Да, и еще - а зачем "магические цифры"? Скорости они не добавляют. Скорости добавит ассемблер

216 МГц... это около 5 нс. Такова будет минимальная "плавность". Причем, случись какое-нить прерывание - и всё, хана котёнку.

Таймеры и ШИМы не шибко то помогут "плавности", дискретность на малых коэфф деления высока.

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


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

31 минуту назад, EdgeAligned сказал:

Таймеры и ШИМы не шибко то помогут "плавности", дискретность на малых коэфф деления высока.

Так непонятно что ТС надо - одиночный импульс или непрерывно.

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


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

Хоть одиночный, хоть циклический, но дискретность шага изменения длительности импульса на малых коэф.деления будет высока. 

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


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

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

Таймеры и ШИМы не шибко то помогут "плавности", дискретность на малых коэфф деления высока.

Нормально помогут. Дискретность будет равна = 1 такту тактирования ШИМ-а.

Советую почитать теорию по теме "ШИМ".

1 час назад, EdgeAligned сказал:

Хоть одиночный, хоть циклический, но дискретность шага изменения длительности импульса на малых коэф.деления будет высока. 

Бред. Зачем коэффициент деления трогать если ТСу нужно изменять длительность импульса?

Ещё раз советую почитать учебник по теме: "Что такое ШИМ". Вы не понимаете что это такое и для чего. Нормальный микроконтроллерный ШИМ позволяет менять длительность импульса с  дискретностью >= 1 такт.

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


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

Все попытки сделать импульс программно умрут вот тут

image.thumb.png.0333a93ba5c060c48c89b24c9d1c25e1.png

Проследите путь от CPU до GPIO (он не работает на частоте CPU) и всё поймёте. А вот таймер с ШИМ то что доктор прописал.

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


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

10 минут назад, VladislavS сказал:

Все попытки сделать импульс программно умрут вот тут

Они умерли бы и в обычном Cortex-M0/3/4, на самом-то деле.

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


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

12 hours ago, jcxz said:

Бред.

Не кажи гоп, хлопец 🙂 Импульс то сделаешь, а вот дискретность изменения шага... посчитай, кстати, на счетах 🙂 

И еще раз советую перечитать тему и пересчитать на электросчетах 🙂

Изменено пользователем haker_fox
Удалил потенциальное нарушение правил форума.

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


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

16 minutes ago, EdgeAligned said:

Не кажи гоп, хлопец 🙂 Импульс то сделаешь, а вот дискретность изменения шага... посчитай, кстати, на счетах 🙂 

И еще раз советую перечитать тему и пересчитать на электросчетах 🙂 А то громко пукнуть получается, а как по делу - так тут и ноль.

А какая дискретность нужна топикстартеру известна ?

Он же ее не озвучил !

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


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

Он сказал, что "хотелось бы плавно".  Шаг по 10-50% - как-то не очень то плавно. По крайней мере, в моем понимании. Если кто понимает иначе, ну чтож, это его право громко об этом заявлять.

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


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

1 час назад, EdgeAligned сказал:

Не кажи гоп, хлопец 🙂 Импульс то сделаешь, а вот дискретность изменения шага... посчитай, кстати, на счетах 🙂 

Дискретность изменения шага будет 1 такт синхронизации таймера. Это для 216 МГц ~ 5 нс.

Какие еще "малые коэффициенты деления"?

ТС указал 10...100 нс, значит шкала 90 нс, значит с дискретом 4.6 нс получается точность регулировки ~ 5%. Какие 10 - 50 %?

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


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

2 минуты назад, Arlleex сказал:

Какие еще "малые коэффициенты деления"?

Человек не понимает что такое "ШИМ". Бесполезно.

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


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

В 31.08.2023 в 14:47, EdgeAligned сказал:

Посоветуем либо ПЛИС

Можно на чем-то типа STM32H745xI/G удержаться за счет High-Resolution Timer (HRTIM). Обещают:

Цитата

1× high-resolution timer (2.1 ns max resolution)

или на STM32G474 с его

Цитата

HRTIM (Hi-Resolution and complex waveform builder): 6 x16-bit counters, 184 ps resolution, 12 PWM

(эквивалентная частота 5.44 ГГц)

 

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


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

1 час назад, adnega сказал:

Можно на чем-то типа STM32H745xI/G удержаться за счет High-Resolution Timer (HRTIM). Обещают:

или на STM32G474 с его

(эквивалентная частота 5.44 ГГц)

Не так давно имел случайность узнать, что все эти гигагерцы - грамота филькина)

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


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

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

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

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

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

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

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

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

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

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