STM32. CMSIS #6. Устраняем дребезг кнопки

แชร์
ฝัง
  • เผยแพร่เมื่อ 6 พ.ค. 2021
  • Продолжение предыдущего видео. В реализованном проекте по работе кнопки мы реализовываем алгоритм борьбы с дребезгом кнопки, сначала в виде блок-схем, а потом и в коде на языке Си. Также подробно рассмотрим работу алгоритма в режиме отладки микроконтроллера по шагам с множественными пояснениями.
    Скачать проект можно из соответствующего урока:
    github.com/nr-electronics/CMS...
    __________________________________________________
    Вы можете помочь каналу через Яндекс-деньги:
    money.yandex.ru/to/4100115727...
    или через банковскую карту:
    4377 7237 6190 5714
    __________________________________________________

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

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

    Свежачок поступил) Спасибо)) По сложившейся традиции ждём CMSIS)))

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

      пожалуйста)) только этот ролик ведь и так на CMSIS)

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

      @@NRelectronics Ваша правда, думал одно написал другое)

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

      Ничего страшного, все мы люди и можем описаться/оговориться)

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

    я для кнопок использую банальное инкрементирование переменной в цикле. и когда оно достигло определенного значения, считаю кнопку нажатой)

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

      Тоже можно вполне.

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

      Переменная может накопиться дребезгом, нужно обнулять, а копить только в случае безперерывного нажатия. Более того, нужно подтверждать еще и отпускание кнопки, то есть принимать решение только после цикла КНОПКА ТОЧНО НАЖАТА - КНОПКА ТОЧНО ОТПУЩЕНА. Это избавит еще и от залипания кнопки.

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

      Дребезгом 10000 или 100000 такого не будет. Поэтому есть инкремент и декремент. Интегрирующий вариант алгоритма крайне надежен.

  • @user-ni1kh3su8p
    @user-ni1kh3su8p 2 ปีที่แล้ว

    Спасибо за уроки. Небольшие замечания по поводу программы.
    1) Button_State = READ_BIT(GPIOB->IDR, GPIO_IDR_IDR3);
    Button_State принимает значения:
    0х00 - при нажатой кнопке,
    0х08 - при отжатой кнопке (это видно в отладчике).
    исходя из этого никогда не выполнится условие в обработчике Debounce_Handler:
    else
    {
    if(Button_State == 1)
    {
    return 0; //кнопка гарантированно отжата
    }
    }
    Правильнее заменить на if(Button_State != 0)
    2) В обработчике Debounce_Handler вторую проверку if(Button_State == 0) можно не делать:
    if(Button_State == 0)
    {
    if(Button_count

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

      Вы хорошо подошли к алгоритмы. Программа правильная, но могут быть и другие варианты, я об этом тоже говорил.

  • @user-bb6ym1bo3h
    @user-bb6ym1bo3h ปีที่แล้ว

    Здравствуйте! Большое спасибо за видеоурок! Будет ли продолжение обучающих видео по данной библиотеке?

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

      Здравствуйте. Да, конечно

  • @user-wb1ow1pk9v
    @user-wb1ow1pk9v 3 ปีที่แล้ว

    👍🏼

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

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

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

      Не соглашусь. Нагляднее визуальной информации нет ничего. Потом сказали бы зрители что непонятно что выводил цифрами)) Тут народ такой.

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

    👍👍👍

  • @user-qr2br1ut2d
    @user-qr2br1ut2d 3 ปีที่แล้ว

    А не планируете снимать что нибудь по G0/4? Интересные и свежие линейки

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

      Желание есть, да и платки тоже. Смущает цена G4. Не сильно народная цена то.

  • @5erG0
    @5erG0 6 หลายเดือนก่อน

    а с HAL_GPIO_TOGGLE тоже будет работать?

    • @NRelectronics
      @NRelectronics  6 หลายเดือนก่อน

      Это библиотека Хал.

    • @5erG0
      @5erG0 6 หลายเดือนก่อน

      @@NRelectronics, этот алгоритм будет работать чтобы при нажатии светодиод переключал свое состояние? Один раз нажали - включился, второй раз нажали - выключился. Скорее всего нужно добавить защиту от удержания кнопки.

    • @NRelectronics
      @NRelectronics  6 หลายเดือนก่อน

      Нужно будет добавить защиту от дребезга. От удержания не надо, будет без неё работать.