No video

STM32. Урок 10. GPIO. Скорость работы портов на ассемблере

  Рет қаралды 7,246

NR.electronics

NR.electronics

Күн бұрын

Окончание трилогии описания GPIO. На этот раз программирование портов ввода-вывода STM32 выполнено на ассемблере. Учимся использовать низкоуровневый язык для получения максимальных частот на выводах микроконтроллеров STM32F030F4, STM32F103C8T6 и STM32F407VGT6. И убеждаемся в том, что техническая максимальная частота в документации подтверждается.
Исходники:
cloud.mail.ru/...
Вы можете помочь каналу Яндекс-деньги:
money.yandex.r...

Пікірлер: 56
@ЧПУ
@ЧПУ 3 жыл бұрын
Шикарная подача! Никаких лишних слов все чисто и понятно!
@NRelectronics
@NRelectronics 3 жыл бұрын
Благодарю. Но всегда есть над чем работать. Развиваемся, год назад было совсем не так)
@shawnkaden5045
@shawnkaden5045 3 жыл бұрын
@Allen Khari Instablaster ;)
@NRelectronics
@NRelectronics 3 жыл бұрын
What you want with me?
@Aleksandr_Sidorov
@Aleksandr_Sidorov 5 жыл бұрын
Круто что тут сказать
@NRelectronics
@NRelectronics 5 жыл бұрын
Стараемся, разбираемся, снимаю видео и показываю всем желающим ;-) времени только свободного маловато.
@ober2506
@ober2506 4 жыл бұрын
В предыдущем и этом видео, непонятно недоумение от того, что не получаются максимальные частоты или меандр. Вероятно вы забыли, что вход или повтор по while(1) происходит не за 0, а за несколько тактов проца. Делайте штук 10-20 toggle. В целом респект, продолжайте видосы, особенно жду по кубиде.
@NRelectronics
@NRelectronics 4 жыл бұрын
Спасибо за рекомендации, но в видео на ассемблере этот момент уже раскурили повторами, повторение действительно даёт результат правильный. По кубиде какие именно вопросы хотелось увидеть?
@ober2506
@ober2506 4 жыл бұрын
@@NRelectronics Да я так и понял, что раскурили, т.к. скачивал видосы для просмотра на другом пк и смотрел и видос с ассемблером. Респект за внятное комментирование. Перехожу с AVR & Codevision на STM32 и почему-то хочется остаться именно на CubeIDE и не лезть в IAR и µVision IDE - Keil . Жалко в CubeIDE не добавили STM8. Вопросы по CubeIDE возникнут чуть позже, пока буду ещё пересматривать ваши видосы, но помигать на Blue pill светодиодом из CubeIDE уже получилось. Мегареспект ещё раз.
@NRelectronics
@NRelectronics 4 жыл бұрын
@@ober2506 всегда пожалуйста, видео выходят регулярно, смотрите) А чем так подкупил CubeIDE? По нему у меня есть видео кстати.
@ober2506
@ober2506 4 жыл бұрын
@@NRelectronics Про видео я в курсе, смотрел, потому ещё больше и убедился, что надо на нём и остановиться, норм интерфейс, да и бесплатный, и от самого производителя стм32, типа сопровождение и устранение багов будет быстрое, + с иар и кейл незнаком, да и многие тоже поговаривают, что надо на него переходить.
@user-ix8cn5gz3l
@user-ix8cn5gz3l 4 жыл бұрын
Присоединяюсь к мнению Ivan Zagorski. Если на Си работать непосредственно с регистрами BSRR прироста по частоте по сравнению с ассемблером не наблюдается. Был проведен подобный опыт на STM32F103VD, ядро разогнано до 72 мГц(по MCO PLL/2 показал 36 мГц) и с порта А0 были сняты подобные осцилограммы на разных прошивках(asm и C) частота в пачках импульсов на обоих была 18 мГц, мало того одна осцилограма на экране была в записи и когда я их совместил она полностью копировала другую(та часть где импульсы). Единственная разница после импульсов на "сишной" прошивке пропуск больше, но оно и понятно whil() цикл с условием, а на ассемблере простой переход на метку. Я сам не так давно занялся ассемблером потому что бытует мнение о превосходстве в производительности , и уверен что есть ситуации когда он выигрывает у Си, но видимо не в этом примере. PS: Неоспоримое преимущество ассемблера, так это то что он "заставляет" разобраться в работе ядра, даже в самых темных его закоулках.
@NRelectronics
@NRelectronics 4 жыл бұрын
Спасибо за столь всеобьемлещий ответ, и тем более за проведенные эксперименты, это вызывает уважение. Все же можно работать на Си на 36 МГц ;-) Посмотрите моё видео 🎥: STM32. Урок 19. Timers... Практика с ШИМом. kzbin.info/www/bejne/Z2jXq6Cpf86nm7c
@user-ix8cn5gz3l
@user-ix8cn5gz3l 4 жыл бұрын
@@NRelectronics Я это понимаю, у порта максимум 50 мГц, я выводил sysclock 72 он в принципе работал. Я так понял что цель видео показать превосходство асм над си. Я тоже его ищу;-).
@NRelectronics
@NRelectronics 4 жыл бұрын
@@user-ix8cn5gz3l для f103 потолок 36МГц. Для других МК другие частоты. Достоинства Асма обнуляет его сложность и не переносимость.
@user-ix8cn5gz3l
@user-ix8cn5gz3l 4 жыл бұрын
"для f103 потолок 36МГц."@@NRelectronics ??? Что имеется ввиду? Максимальная пропускная шины APB2?
@NRelectronics
@NRelectronics 4 жыл бұрын
@@user-ix8cn5gz3l шины, правильно, и соответственно максимально возможная частота gpio переключения из единицы в ноль.
@DART2WADER
@DART2WADER 2 жыл бұрын
Проще таймер настроить на вывод на ножку чем с ассемблером возится.
@NRelectronics
@NRelectronics 2 жыл бұрын
Ассемблер это конечно особенный се. с)))
@user-il1ci1mo8m
@user-il1ci1mo8m 4 жыл бұрын
Спасибо, познавательно. У меня вопрос, по близкой теме. Хочу использовать внешнюю АЦП на 80 МГц и stm32h750. Обращаюсь напрямую к регистру IDR ( среда Cube IDE) и по таймеру DWT смотрю сколько тактов занимает считывание порта. И получается унылые 123 такта ( чуть более 3МГц). Тоже самое делал на stm32f103, получил 12 МГц ( все по даташиту). В чем прикол не пойму))). Тактовая частота МК stm32h7 максимальна 480МГц ( проверил в кубе и в программе считал данные). Может арбитраж шины?
@NRelectronics
@NRelectronics 4 жыл бұрын
А АЦП висит на какой шине МК и какая у нее частота работы? ;-)
@user-il1ci1mo8m
@user-il1ci1mo8m 4 жыл бұрын
@@NRelectronics Внешняя АЦП (8 бит) передает данные на порт Е (шина АНВ4). Частота максимальная : To AHB4 Peripheral -240 МГц. Спасибо, что ответили
@fareo6127
@fareo6127 4 жыл бұрын
Приветствую применение ассемблера. Проверил на F103C8, на осциллографе с полосой 200MHz и щупом 1:10, 250MHz, фронты остаются вполне приемлимыми. Попробовал через DMA memtomem RAM->GPIO_ODR (GPIO_BSRR) Fmax=3.6MHz. А при опросе входов скорость намного ниже (всё на asme). Как-то странно со стороны производителя при Fclk=72MHz иметь такую медленную скорость реакции (пробовал напрямую и по прерываниям). dsPIC гораздо шустрее с вводом-выводом.
@NRelectronics
@NRelectronics 4 жыл бұрын
Все правильно, когда многократно полоса превышает измеряемую, это гуд по теореме Найквиста. Двухкратное превышение это очень мало, как у меня например, 100МНц. У вас более 4 раз и этого достаточно, чтобы правильно апроксимировать входной сигнал.
@NRelectronics
@NRelectronics 4 жыл бұрын
Вопрос не в "шустроте". А ну ка, догадайтесь почему так получается ;-) ответ этому есть.
@NRelectronics
@NRelectronics 4 жыл бұрын
Лично я не сторонник применения ассемблера, а привел как пример. На Си все хорошо и так получается.
@fareo6127
@fareo6127 4 жыл бұрын
@@NRelectronics Вопрос многогранен, как впрочем и ответ.
@fareo6127
@fareo6127 4 жыл бұрын
@@NRelectronics А я не противник.
@alexivanov4022
@alexivanov4022 5 жыл бұрын
Могу заснять осциллограммы на своем Риголе с частотой пропускания 300МГц, если предоставите прошитые камни....
@NRelectronics
@NRelectronics 5 жыл бұрын
Спасибо за предложение. Может воспользуюсь.
@yunushkin88
@yunushkin88 5 жыл бұрын
А вообще реально загнать возможно серию L0 в пикоамперы на ассемблере? Потому что на работе мужчина один гордится тем что он может загнать мсп430 в пикоамперы )
@NRelectronics
@NRelectronics 5 жыл бұрын
по даташиту от ST - AN4445 - STM32L0xx ultra-low power features overview - можно получить 290нА. А MSP430 самый энергоэкономный - 2xx - 300нА. Поэтому можно сделать вывод что они примерно одинаковы. О пикоамперах речь не идет, Вы опечатались или он Вас хорошо обманул ;-)
@slavaglow6933
@slavaglow6933 5 жыл бұрын
Спасибо за ваш труд. Как тут затронули язык ассемблера, для ассемблера я нашел VisUAL arm emulator salmanarif.bitbucket.io/visual/index.html. Как с Keil получить файл для эмуляции?
@NRelectronics
@NRelectronics 5 жыл бұрын
Спасибо за оценку моей работы, приятно слышать и подстёгивает далее к работе!) Про лайки тоже не забывайте) VisUAL не использовал.
@pavelboboshkin3898
@pavelboboshkin3898 2 жыл бұрын
Название видео вводит в заблуждение. Как будто скорость работы аппаратуры зависит от среды разработки. Надо было писать что то вроде "сравнение эффективности hal и ассемблера." Далее: автор утверждает, что программа на ассемблере работает быстрее, чем на си. Это тоже не верно, и означает, что автор не понимает, что он делает, когда пишет на си. Можно написать на си такую программу, которая после компиляции даст ассемблерный листинг в точности такой же, как ваша ассемблерная программа. За исключением того, что, возможно, будут использованы другие регистры.
@NRelectronics
@NRelectronics 2 жыл бұрын
Ваше предложение из названия это как - поменять шило на мыло. Ваше право.
@Zakharov_Denis
@Zakharov_Denis 5 жыл бұрын
Пожалуйста, выложите файлы на какой-то хост
@NRelectronics
@NRelectronics 5 жыл бұрын
Ок. По свободе выложу на свою страничку.
@NRelectronics
@NRelectronics 5 жыл бұрын
Выложил ссылку под видео для Вас.
@Zakharov_Denis
@Zakharov_Denis 5 жыл бұрын
@@NRelectronics спасибо за труды!
@NRelectronics
@NRelectronics 5 жыл бұрын
@@Zakharov_Denis спасибо что смотрите и учитесь по моим видео!) не забывайте про лайки ;-)
Dad Makes Daughter Clean Up Spilled Chips #shorts
00:16
Fabiosa Stories
Рет қаралды 2,8 МЛН
Unveiling my winning secret to defeating Maxim!😎| Free Fire Official
00:14
Garena Free Fire Global
Рет қаралды 10 МЛН
Gli occhiali da sole non mi hanno coperto! 😎
00:13
Senza Limiti
Рет қаралды 22 МЛН
Кадр сыртындағы қызықтар | Келінжан
00:16
STM32. Урок 13. USART. Теория. Часть 1
45:45
NR.electronics
Рет қаралды 10 М.
GPIO STM32 Схемотехника портов ввода-вывода
13:06
Dad Makes Daughter Clean Up Spilled Chips #shorts
00:16
Fabiosa Stories
Рет қаралды 2,8 МЛН