STM32. Внешние прерывания EXTI. Подключаем кнопки и инкрементальный энкодер.

Поділитися
Вставка
  • Опубліковано 7 сер 2024
  • Привет друзья! Решил выпустить небольшую серию видеоуроков о переходе с платформы Arduino на STM32. Кроме уроков, будет еще и практика. Это видео одно из практических. Скажу сразу - я не профессионал. Я так же учусь. Надеюсь мои разборы хоть кому-то будут полезны :) Данный курс нацелен больше на новичков. Тех, кто только-только начинают осваивать 32-битные МК от STMicroelectronics. Если есть чего предложить, показать - милости просим к нам в команду.
    Использую для конфигурации CubeMX и библиотеку HAL.
    Заходи в нашу группу ВК solderingiron.stm32
    Материалы из практического занятия: github.com/Solderingironspb/L...
    ЯндексДзен: zen.yandex.ru/id/622208eed2eb...
    00:00 Введение
    00:39 Схема подавления дребезга контактов
    01:47 Конфигурирование в CubeMX
    07:10 Пример работы с кнопкой
    09:40 Пример работы с инкрементальным энкодером
    20:37 Альтернативная запись if else.
  • Наука та технологія

КОМЕНТАРІ • 39

  • @user-bx3qg8js3b
    @user-bx3qg8js3b Рік тому +1

    Олег, здравствуйте. Мне нравится ваши уроки , если можно так сказать, доходчиво приподносите материал. Продолжайте так дальше. Спасибо. Всех благ.

  • @svbHiTek
    @svbHiTek 3 місяці тому

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

  • @ALCohol-qu7ib
    @ALCohol-qu7ib 3 роки тому +2

    Продолжайте в том же духе, думаю со временем подписчиков у вас станет значительно больше.

  • @dronwolf5199
    @dronwolf5199 3 роки тому

    Спасибо за помощь)

  • @dr.emmettbrown8466
    @dr.emmettbrown8466 3 роки тому +1

    Да подтверждаю, схема на триггере Шмидта отлично работает с энкодером и кнопками, устраняя дребезг. На этой схеме у меня уже не один проект работает.

  • @AndreyChigisheff
    @AndreyChigisheff 2 роки тому

    Хм, когда работаешь с короткой записью if, тогда еще можно понять переопределение А. А вот в случае с полным if else elsif то это уже паранойя. A уже определено и А = А писать не надо. Не думаю, что компилятор настолько оптимизирует код, что выкинет лишнее. В случае с контроллером - это уже перебор. Можно легко в out of memory вляпаться

  • @alexpetrov521
    @alexpetrov521 3 роки тому

    Здравствуйте. Хочу в автомобиль сделать регулятор скорости вращения вентилятора отопителя. Чтобы управлять энкодером и к примеру каждый его шаг добавлял 10% к ШИМ и увеличивал или уменьшал скорость вентилятора.
    И при этом выводить на тфт дисплей анимацию, сколько в данный момент задано значение.
    Реально ли это сделать новичку?) Не хочу моргать светодиодом, хочется сразу с полезного начать.

    • @Solderingironspb
      @Solderingironspb  3 роки тому

      Добрый день) можно) но без вникания в процессы, я б не советовал делать это. Все же в автомобиль встраивать хотите... узел должен быть надежным и безопасным. Энкодер фильтровать нужно, шим подключать не в ключевом режиме, как ардуинщики делают, а через шим драйвер, чтоб мосфет не перегревался и не взорвался(да, такое только так бывает на высоких частотах). Ну и само собой, предохранитель на все это дело. Про дисплей - это можно, при условии, что библиотеку под него напишете или найдете.

  • @d1zz3l
    @d1zz3l 3 роки тому

    Олег, подскажите как выводить подсказки у функций в момент их написания

    • @Solderingironspb
      @Solderingironspb  3 роки тому

      Ctrl + пробел)

    • @d1zz3l
      @d1zz3l 3 роки тому

      @@Solderingironspb большое вам спасибо за совет и видео. Продолжайте их выпускать, очень полезный материал, все понятно.

  • @ivanrusev2270
    @ivanrusev2270 5 місяців тому

    Это всё хорошо.Но в обработчике внешних прерываний код много нельзя писать а дребезг контактов.Я отказываюсь от програмной заденжке.А сделал свою аппаратно -программную задержку используя вн. прерывание и прерывание по таймеру.

  • @rn4acw
    @rn4acw 3 роки тому +2

    Очень интересна связка стм32 и flprog! Так как подругому программировать я и миллионы других не умеют. А стм желанная вкусняжка.

    • @Solderingironspb
      @Solderingironspb  3 роки тому +3

      FlProg интересная штука. Сам еще год назад, сидя на ардуино, слизывал оттуда куски кода общения по modbus) но программист, если начнет в ней работать, то переплюется тысячу раз) и дело будет как раз в том, что ему не будет хватать гибкости. Это как при конфигурировании ПЛК. Что тебе дано - тем и пользуйся. Универсальности мало, зато риск накосячить минимален)

    • @rn4acw
      @rn4acw 3 роки тому +1

      @@Solderingironspb Согласен. Но я по жизни схемотехник, flprog это манна небесная для меня. Мой склад ума и flprog это как одно целое.
      Как думаете возможно сделать проект в flprog и оптимизировать код для stm32?

    • @Solderingironspb
      @Solderingironspb  3 роки тому +2

      @@rn4acw можно, НО это будет очень долго и сложно, т.к. код там генерируется на ядре ардуино и под определенный МК(по крайней мере, когда я работал в нем, в коде многие команды были на регистрах). Это нужно полностью понимать весь сгенерированный код, далее адаптировать его уже под свой МК(тот же Stm32F103C8T6). Как ни крути, придется изучать программирование... Но в данном случае нужно хорошо знать МК, под который FLProg генерирует код, и МК, под который данный код адаптировать... А вообще, не бойтесь начать изучать программирование. Все, что я сейчас делаю - это заслуга упорства и мой опыт в чуть больше года. Начал все 28.07.2019 на Arduino Mega. Через месяц написал свой первый проект. Еще через 2 месяца, уже создал печатную плату с Atmega328 на борту, гальванической развязкой и простеньким алгоритмом на регистрах. Через пол года уже сделал себе умный дом(я вообще боялся даже подумать о нем). Главное в этом деле - начать. Начнутся вопросы - Вы сами же на них себе ответите на форумах, на ютубе и прочих ресурсах. Так шаг за шагом сформируется база знаний. А если еще и читать книги будете, то вообще взлетите по продуктивности. Я знаю о чем говорю, т.к. я не программист, я инженер энергетик по образованию, а работаю вообще в сфере ремонтов лабораторного оборудования. Так что и у Вас все получится)

    • @user-bn2qp6sh8r
      @user-bn2qp6sh8r 3 роки тому

      @@Solderingironspb а я умный дом называю "ленивый дом ". Т. К. Ничего умного в нём не вижу

    • @Solderingironspb
      @Solderingironspb  3 роки тому

      Ну...защита от протечки, поддержание чистого воздуха в квартире, поддержка климата. Мне кажется - это не так уж и плохо) а так да) каждому свое.

  • @fedorsova6832
    @fedorsova6832 3 роки тому

    Проверять во внешнем прерывании от чего произошло прерывание, которое и так уже известно от чего оно должно вызываться это лишнее. В прерывании сразу можно прописывать действия. Иначе чем от нажатия кнопки оно и не могло произойти.

    • @Solderingironspb
      @Solderingironspb  3 роки тому +1

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

  • @cybercube7915
    @cybercube7915 3 роки тому

    Я может чего не понимаю, но почему не настраиваете проект сразу cubeide ведь он содержит в себе cubemx

    • @Solderingironspb
      @Solderingironspb  3 роки тому

      ну....предыдущее видео Вам в пример. CubeIDE просто начинает обновляться или тормозить именно тогда, когда я видео записывать начинаю.

    • @cybercube7915
      @cybercube7915 3 роки тому

      @@Solderingironspb Понятно..я то думал .Хорошая у вас подача материала для новичков

    • @Solderingironspb
      @Solderingironspb  3 роки тому +1

      Спасибо)

    • @avr_stm_pro2955
      @avr_stm_pro2955 3 роки тому +1

      Спасибо за труд

  • @user-si2kj5jk9y
    @user-si2kj5jk9y Рік тому

    Олег, всё толково и понятно.
    А в телеграмм у вас нет канала?

    • @Solderingironspb
      @Solderingironspb  Рік тому

      Есть. Но мы там особо ничего и не делаем, все в вк.t.me/+ZrLLZvFxvWU4YjBi

  • @user-bn2qp6sh8r
    @user-bn2qp6sh8r 3 роки тому

    А вы к чему хотите прийти в программировании ? Или занимаетесь просто для общего развития?

    • @Solderingironspb
      @Solderingironspb  3 роки тому +1

      Вообще все начиналось для общего развития, т.к. работаю ведущим сервисным инженером в промышленности. Хотел знать, как работает тот или иной узел, чтоб быстрее делать диагностику и качественней проводить ремонты. Но меня чего-то уносит все дальше и дальше...теперь хочу вообще все знать и уметь, чтоб при любом вопросе я б мог пойти и собрать аналог устройства, ни чуть не хуже, а может еще и с доп. фичами. Ну и самое главное, чтоб быть уверенным в своих устройствах. Поэтому я и ушел с ардуино. Хобби перешло в работу.

    • @user-bn2qp6sh8r
      @user-bn2qp6sh8r 3 роки тому

      @@Solderingironspb и как успехи сейчас? Что то стоящее удалось сделать?

    • @Solderingironspb
      @Solderingironspb  3 роки тому +1

      Ну...умный дом собрал. Мешалку верхнеприводную для сред с ПИД регулированием сделал. Переходники для джойстиков от sega и nes на USB. Устройство для запроса данных с электросчетчика по modbus сделал. Контроллер аварийного отключения двигателя при сухом ходе. Плакат с LED подсветкой и управлением по ИК. Коммерческие заказы были.... так если посмотреть, то много всего полезного для себя за этот год сделал.

    • @user-bn2qp6sh8r
      @user-bn2qp6sh8r 3 роки тому

      @@Solderingironspb а где информацию брали ? Видео или печатное что то?

    • @Solderingironspb
      @Solderingironspb  3 роки тому +2

      @@user-bn2qp6sh8r Везде, где только можно... Т.к. я работаю в промышленности, то я вижу каждый день, как работают ПЛК, как работает ПИД регулятор. Могу заглянуть внутрь и посмотреть, как и что устроено. Поползать в их программах при наладке, что-то новое для себя подчерпнуть. Знаю про существование датчиков с выходом 0-10В, 4-20mA, термосопротивлений pt100, pt1000, термопар К типа и прочего(а многие, кроме модулей, как они называют "для ардуино", ничего и не пробовали.). т.е. база знаний у меня, не постесняюсь, приличная была уже. Далее я купил ардуино, начал с канала AlexGyver и второго канала Заметки Ардуинщика. Смотрел именно теорию, а не самоделки. Далее друг помог с первым проектом (просто попробовали сделать вытяжку для кухни. Там были кнопки и семисегментный индикатор). После этого я начал уже как-то ориентироваться, что и куда. Коллега у меня на работе знает си на высочайшем уровне. У него часто консультировался. А так...В большей степени UA-cam(Умный дом - Alex Kvazis и Электроника в объективе. Промышленные решения на ардуино и электротехника -
      Arduino Prom, Artem Kashkanov, Виктор Кравченко). Самым большим и переломным моментом в программировании для меня было - это взять в руки Stm32 и начать ее изучать. Пусть со мной многие не согласятся, но я считаю работу с Stm32 куда более логичной и понятной, чем работу с библиотеками в ардуино, т.к. там черт ногу сломит, кто как пишет. Ничего не понятно. Подключишь несколько библиотек, что-то отвалится. Сидишь тупишь...Зайдешь в группу с ардуиноведами, задашь вопрос, а его либо игнорят, либо школьники начинают писать фигню. Здесь же прочел две книги и оно само как-то прет по чуть-чуть. Самый ценный ресурс в данной теме - это время. Его у меня уходит очень много...