Много кнопок одно перывание

Поделиться
HTML-код
  • Опубликовано: 29 сен 2024
  • Как подключить много тактовых кнопок к одному прерыванию.
    Пример на Atmega8 - в одном прерывании опрашивается 5 кнопок.
    Исходники, hex, эмуляция в протеусе - yadi.sk/d/HYaU...
    Схема в пдф yadi.sk/i/lRff...

Комментарии • 20

  • @excelentdevicesl5061
    @excelentdevicesl5061 3 года назад

    cli не совсем запрещает прерывания - они копятся - надо снимать флаг - чтобы прерывание не выполнилось после

    • @artemdavinci
      @artemdavinci Год назад

      Думаю, что лучше не флаг снимать, а запрещать именно само данное прерывания (точнее и то (флаг) и другое (прерывание) и глобальное). Так как кнопка может быть нажата и после того как флаг сброшен, хоть и чисто технически, человек не в состоянии обогнать по скорости МК)). Даже если и не писать запрет на прерывания, то в данном коде мы очень навряд сможем так быстро нажать следующую кнопку. Но в более "сложных" программах, конечно нужно перестраховываться.

  • @LevanMatchavariani
    @LevanMatchavariani 5 лет назад +1

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

    • @andreyfrolov301
      @andreyfrolov301  5 лет назад

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

    • @LevanMatchavariani
      @LevanMatchavariani 5 лет назад

      @@andreyfrolov301 попробую

    • @LevanMatchavariani
      @LevanMatchavariani 5 лет назад

      а как вам послать то вернее куда

    • @andreyfrolov301
      @andreyfrolov301  5 лет назад

      @@LevanMatchavariani dr.somet@yandex.ru

    • @LevanMatchavariani
      @LevanMatchavariani 5 лет назад

      @@andreyfrolov301 Уже отправил

  • @pavelkazakov6347
    @pavelkazakov6347 4 года назад

    Отличная идея! Реализовал в своей программке, все работает правильно.

  • @AlekseiChip
    @AlekseiChip 5 лет назад

    а таким образом можно опросить одновременно несколько кнопок?

    • @andreyfrolov301
      @andreyfrolov301  5 лет назад

      я так понял вы имеете ввиду зафиксировать нажатие сразу нескольких кнопок?теоретически можно, практически нет т.к. человек не сумеет так быстро нажать две и более кнопок, чтобы обогнать прерывание
      нужна некая задержка между срабатыванием прерывания и опросом пинов.
      можно рц цепочкой отсрочить прерывание.можно программную задержку вставить
      может быть еще что-то можно придумать.

    • @AlekseiChip
      @AlekseiChip 5 лет назад

      @@andreyfrolov301 В моём проекте планируется подсчитывать два разных импульса и от 8 до 10 кнопок и может произойти, что одновременно может прийти 2 импульса да плюс и зажмётся одна или несколько кнопок. Наверное всё же лучше всего классический динамический опрос.

    • @andreyfrolov301
      @andreyfrolov301  5 лет назад

      @@AlekseiChip да, этот метод для случая когда кнопки нужно вешать именно на прерывание.