STM32. CMSIS #7. Динамическая индикация

แชร์
ฝัง
  • เผยแพร่เมื่อ 9 ก.พ. 2025
  • Купить книгу "Освоение STM32 самостоятельно" по CMSIS:
    • При печати на Xprinter...
    Скачать PVS-Studio для проверки своего можно бесплатно на:
    pvs-studio.com...
    Официальная страничка в TH-cam:
    / pvsstudiotool
    Официальная страничка ВКонтакте:
    pvsstud...
    Разбираемся уже в достаточно сложно проекте на библиотеке CMSIS - над динамической индикацией семи-сегментного индикатора. Рассматривается подробнейшая работа, также рекомендации для схем подключения индикатора с общим анодом и катодом.
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    Станьте спонсором канала, и вы получите доступ к эксклюзивным бонусам. Подробнее:
    / @nrelectronics
    или через Яндекс-деньги:
    money.yandex.r...

ความคิดเห็น • 64

  • @dobroliub1908
    @dobroliub1908 3 ปีที่แล้ว +2

    оооо...подвезли свежачок,налетай))) Очень рад что продолжаете тему CMSIS.Спасибо большое))

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว +1

      Ага, подвожу периодически)) Пока свежие пирожки налетайте)

  • @openFrimeTv
    @openFrimeTv 3 ปีที่แล้ว +2

    о, снова cmsis, люблю эту тему)

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว +1

      Я тоже её обожаю)

  • @AndySm1973
    @AndySm1973 3 ปีที่แล้ว +2

    Огромное спасибо за крайне полезный материал!

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      Спасибо) Дальше проекты сложнее будут и может не каждую недельку. Добирать будем и халом.

    • @vicgreen1413
      @vicgreen1413 3 ปีที่แล้ว

      @@NRelectronics HAL в топку

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      я бы так не сказал, все к месту.

  • @RadioTexnik
    @RadioTexnik 3 ปีที่แล้ว +1

    Спасибо за достаточно редкий курс для встраиваемых систем на русскоязычном сегменте!

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว +1

      Вам спасибо за оценку. Рекомендуйте другим.

  • @avi-crakhome2524
    @avi-crakhome2524 3 ปีที่แล้ว +2

    Есть более продвинутый вариант алгоритма программы. Вместо ручного назначения для каждой цифры - использовать макросы сборки тех самых цифр. При этом привязку делать уже к физическим ногам одного порта, а управлять через регистр BRR.
    Получается программа разделённая на слои: железо, драйвер, модуль индикации, и логика пользователя. Можно в любой момент изменить любой слой, например поменять ноги мк под индикатор, или добавить сегментов...
    А у вас уровень железа протянут до логики, и если что-то нужно будет менять - проект придётся переписать полностью.

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      Есть и продвинутый и второй и третий и куча вариантов. Предложенный мной самый доступный по доставаемости и цене, любой студент за 100₽ такой индикатор сможет купить. А от другого железа и реализация другая, и на все сразу не напишешь...

    • @avi-crakhome2524
      @avi-crakhome2524 3 ปีที่แล้ว +2

      @@NRelectronics В программе разделённой на слои - сегментный индикатор может быть абсолютно любым. На уровне железа нужно будет назначить каждому сегменту ногу мк, и этот момент всегда уникален. А вот всё остальное можно использовать многократно. В этом и прелесть разделения - написать один раз, использовать многократно.

  • @sergheik9582
    @sergheik9582 ปีที่แล้ว

    Материал просто супер !особенно для меня после PICов ,, это небо и земля,,, но хотелось бы что бы автор больше о прерываниях рассказал ,,, по настройке ,,, то как они вызываются ,, и тд,, возможно есть такое видео ( но я что то не обратил внимание

    • @NRelectronics
      @NRelectronics  ปีที่แล้ว +2

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

  • @shizlgizI
    @shizlgizI 2 ปีที่แล้ว

    А как бы вы реализовали управление яркостью индикации по шим?

    • @NRelectronics
      @NRelectronics  2 ปีที่แล้ว

      Изменением скважности Шима, или его обратным коэффициентом - коэффициентом заполнения.

  • @shizlgizI
    @shizlgizI ปีที่แล้ว

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

    • @NRelectronics
      @NRelectronics  ปีที่แล้ว

      Я вроде бы схемку показывал в ролике...

  • @ivanrusev2270
    @ivanrusev2270 3 ปีที่แล้ว +1

    А как точку выводить? в динамической индикации?И разрядность для часов другие? Led print?

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      Через lead stream, к сожалению в видео это не показал. Вообще планировал сделать видео с реализацией на семисегментике часов с RTC, там это как раз четенько будет показано. Тут тема все же динамическая индикация как сам механизм.

    • @ivanrusev2270
      @ivanrusev2270 3 ปีที่แล้ว

      @@NRelectronics Через DMA?А на часах другая разрядность.

    • @ivanrusev2270
      @ivanrusev2270 3 ปีที่แล้ว

      @@NRelectronics А какая?

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      На часах можно и точку как раз же выводить. Какая RTC ещё не решил, у меня их много разных...

    • @ivanrusev2270
      @ivanrusev2270 3 ปีที่แล้ว

      @@NRelectronics Лучше ds3231

  • @alexivanov4022
    @alexivanov4022 3 ปีที่แล้ว +1

    я бы собрал свитч покомпактнее: кейс, операция присваивания, брейк - все в одной строке. Так читаемость кода гораздо лучше)
    switch(segment) {
    case 0: r=0xC0; break;
    case 1: r=0xF9; break;
    ...

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

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

  • @evgenprofi2819
    @evgenprofi2819 3 ปีที่แล้ว

    👍👍👍

  • @ivanrusev2270
    @ivanrusev2270 3 ปีที่แล้ว

    Примерно так же на AVR.

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      Везде оно похоже...

    • @ivanrusev2270
      @ivanrusev2270 ปีที่แล้ว

      @@NRelectronics У меня ещё один вопрос а как вывести вещественный результат на 7-сегментник

  • @sergheik9582
    @sergheik9582 ปีที่แล้ว

    Хочу немного поделиться своими наработками) как число разбить на отдельные цифры что бы не плодить глобальные переменные а сразу работать с массивом
    1 объявить глобальный массив в моем случае это uint8_t buffer [4]={0,0,0,0};
    2 написать функцию что бы передаваемое число при каждой итерации делилось на саму себя и делилось по модулю
    void numer_parser (uint32_t number)
    {
    uint8_t i = 0;
    for(i = 0; iODR |=num[buffer[0]]; 0,,,1,,2,3 и тд
    просто перебрать цифры в массиве

    • @NRelectronics
      @NRelectronics  ปีที่แล้ว +1

      Спасибо за код, по свободе посмотрю.

  • @philkulibin2602
    @philkulibin2602 3 ปีที่แล้ว

    А я не понял зачем было заморачиваться на четыре дискретных транзистора ? Нагрузка у них и так диодная открытый коллектор не обязателен. Не проще ли было использовать например какой нибудь самый дешёвый кмоп аналог к561ла7 ? Один корпус - четыре инвертора.

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      А затем что таких транзисторов море у каждого, а ставить статически неустойчивую КМОП ЛА7 ни возможности ни желания нет.

  • @FEDORVASYA
    @FEDORVASYA 3 ปีที่แล้ว

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

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      Будет времечко, обязательно сделаю для вас.

  • @АбуЗаррФарадей
    @АбуЗаррФарадей 3 ปีที่แล้ว

    👍🏼

  • @Electronika_
    @Electronika_ 3 ปีที่แล้ว

    Тоесть анализатор ругается даже на библиотеку от Cortex? Что-то в нём не так)))

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว +1

      Да вот нет, как раз к библиотеке много вопросов...

    • @Electronika_
      @Electronika_ 3 ปีที่แล้ว

      @@NRelectronics С недавнего времени осваиваю STM и HALовский кот в мешке дико не нравится, а тут ещё новость, что и с базовой CMSIS не всё красиво.

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

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

  • @finskiymaster
    @finskiymaster 3 ปีที่แล้ว +1

    На редкость замороченная и неудобная реализация динамической индикации. Для учебных целей - сойдет, но в реальном проекте лучше так не делать.

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

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

    • @finskiymaster
      @finskiymaster 3 ปีที่แล้ว +1

      @@NRelectronics Веселости начнутся, когда во время разводки платы под реальное устройство, придется несколько раз переназначать подключение сегментов к портам (или разрядов), в угоду удобства прокладки дорожек и сокращения числа перемычек. И тогда придется все эти магические 0xC0, 0xF9 и т.д. перевычислять с калькулятором, какой бит какой ножке соответствует. Кроме того, при вашем подходе невозможно что-то отобразить кроме цифр. Буковку, символ "-" или прочее, что вообще можно отображать на семи сегментах.

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      Почему при моем подходе невозможно что-то кроме цифры обозначить? То что "-" не указаны и символы совершенно не значит что это нельзя)

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      С разводкой весëлости могут быть такие, но с таким малым МК не отрассировать эти выводы подряд идущие это тоже нужно умудриться)

    • @finskiymaster
      @finskiymaster 3 ปีที่แล้ว +1

      @@NRelectronics Сколько в таком случае появится case'ов в функции segchar? на каждый доп. символ - еще один case? При этом пропорционально возрастает трудоемкость модифицирования символов в каждом конкретном случае (при разных вариантах подключения сегментов). Вам ниже правильно сказали, символы нужно дефайнить.

  • @maxcobra9781
    @maxcobra9781 3 ปีที่แล้ว +1

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

    • @NRelectronics
      @NRelectronics  3 ปีที่แล้ว

      по всякому бывает. сделаем и отдельно.