Working with external interrupts INT and PCINT on AVR microcontrollers

Sdílet
Vložit
  • čas přidán 22. 07. 2024
  • In this video, we will talk about external interrupts INT0 and PCINT. The video will demonstrate examples in C and using libraries for the Arduino IDE.
    First, let's talk about how to work with the INT0 interrupt using the functions of the Arduino IDE development environment. And then I will give an example sketch for working with INT0 using registers. The examples will be on the ATtiny13 microcontroller.
    After that, we will analyze two sketches working with PCINT. With one and two buttons. Both sketches are in C with direct control of microcontroller registers.
    At the end, I will show a library that allows you to use functions to work with the PCINT interrupt instead of registers.
    Library for working with PCINT - github.com/NicoHood/PinChange...
    Sketches:
    Arduino INT0 Interrupt - drive.google.com/file/d/19zoL...
    Interrupt INT0 C++ - drive.google.com/file/d/1cYza...
    One button PCINT C++ interrupt - drive.google.com/file/d/1EDgf...
    PCINT C++ interrupt with two buttons - drive.google.com/file/d/1C3vi...
    Arduino PCINT interrupt with two buttons (not working) - drive.google.com/file/d/1dbI1...
    0:00 External interrupts INT0 and PCINT
    3:39 Hardware interrupt INT0
    7:52 PCINT interrupt
    12:30 Connecting 2 or more buttons
    13:29 Library for working with PCINT
  • Věda a technologie

Komentáře • 32

  • @quasar3885
    @quasar3885 Před 2 lety +5

    Спасибо вам за видео... Не бросайте пожалуйста ваш канал....

    • @neoalternator
      @neoalternator  Před 2 lety +2

      Спасибо за отзыв! Куда же я теперь денусь с такой прекрасной аудиторией!)

  • @SMV1972
    @SMV1972 Před 3 měsíci

    Спасибо, отличное изложение!

  • @saidgusainov6252
    @saidgusainov6252 Před 2 lety +2

    Спасибо вам большое.

  • @Palladln
    @Palladln Před rokem

    Афигенчик! то шо надо..

  • @AlexanderBelikov
    @AlexanderBelikov Před 2 lety +1

    Большое спасибо за видео! Полезно!

  • @user-bs4jn3ms8h
    @user-bs4jn3ms8h Před 2 lety +2

    Спасибо!
    То что нужно.

  • @vmlnn
    @vmlnn Před 2 lety +5

    Ни разу не пожалел, что подписался! Спасибо!
    Планируется в дальнейшем написание связи с другими устройствами и мк? Я имею ввиду точно так же по даташиту, а не с использованием готовых библиотек. Очень интересна эта тема, но желательно так же доступно как и с прерываниями (видимо не одна серия понадобится?).

    • @neoalternator
      @neoalternator  Před 2 lety +2

      Отлично! Надеюсь и дальше не разочарую) Да, будет еще много роликов и по другим мк, по их связи друг с другом и с периферией

    • @quasar3885
      @quasar3885 Před 2 lety +1

      @@neoalternator Подскажите, это конечно сложно сделать но не думали попробовать сделать ролик по подключению и с считыванию шины автомобильной на примере K-line... В дельнейшем создания БК на базе той же ардуино...

  • @XMatri89
    @XMatri89 Před rokem

    Спасибо! Очень полезное видео!
    Из документации вычитала, что запуск программы начинается с прерывания reset (с нулевого адреса основной памяти), которое вызывается после включения или перезагрузки МК

    • @XMatri89
      @XMatri89 Před rokem

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

  • @OttoLilo
    @OttoLilo Před 2 lety +1

    Реально полезная информация, особенно с регистрами.
    Сделайте видео по работе с прерыванием INT0 и режимами сна. Интересует такое же сравнение ардуиновских функций и работе с регистрами.

    • @neoalternator
      @neoalternator  Před 2 lety +1

      Так есть у меня такое видео - czcams.com/video/szExLJDM2kI/video.html

    • @OttoLilo
      @OttoLilo Před 2 lety

      @@neoalternator Спасибо, как по на глаза не попалось

  • @MitsuZer0G
    @MitsuZer0G Před 9 měsíci

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

  • @TrasherFCR
    @TrasherFCR Před 2 lety +1

    12:41 Почему не используете внутренние подтягивающие резисторы микроконтроллера?

    • @neoalternator
      @neoalternator  Před 2 lety +1

      Так нагляднее. И в готовых устройствах стараются внешние использовать.

  • @usapower6208
    @usapower6208 Před 2 lety +1

    Того всё внешнее прерывал.

  • @SAM58SAM58
    @SAM58SAM58 Před rokem +1

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

    • @Palladln
      @Palladln Před rokem

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

    • @SAM58SAM58
      @SAM58SAM58 Před rokem

      @@Palladln случается. Ради одной программки я бы тоже не стал. Я бы ее вообще из командной строки собирать научился бы. Но если это реально увлечение, то купить б.у. для десятки сейчас можно достаточно дешево. А разрабатывать более , чем 1 программку гораздо -гораздо-гораздо удобнее. Я даже больше скажу - отказываться от платформио это уже такой вид мазохизма. Впрочем, каждый выбирает сам. Кому то и садо-мазо по душе. Главное, что бы это было по кайфу. Каждый тут свою дорогу выбирает. Главное получать удовольствие и результат - удовольствие от результата. И решить что для вас результат. Там тоже критериев куча. Для самурая, к примеру, как известно результат не цель, но путь. Но при этом прошу задуматься вот над чем - зачастую мы оправдываем свое нежелание учить что-то новое тем, что мол условий нет. Оно же и на старом работает. А тут надо потратить кучу умственных сил, иногда материальных ресурсов , а на выходе получить вроде бы тот же результат. Вот мозг и ищет отмазки. Я ни в коей мере не утверждаю, что это так у Вас. Я просто за то, что бы любой выбор был осознанным, что бы люди были честны перед собой. А то иногда сами себя убедят в чем то и начинают даже сами в это верить. Вот если Ваш ответ самому себе "да, я действительно пишу одну программку в год и мне этого не надо" - ок. Если вы себе ответите - "да , этот придурок в интернете прав и я просто морда ленивая" - тоже ок. А вот если ответ будет первый, но это будет отмазом т. к. ситуация вторая- вот это уже не ок. Успехов вам. Простите за размер ответа.

  • @jw5gi
    @jw5gi Před 2 lety +1

    Возможно ли реализовать одновременно прерывания на Attiny13 и внешние и по таймеру?

    • @neoalternator
      @neoalternator  Před 2 lety +1

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

    • @jw5gi
      @jw5gi Před 2 lety

      @@neoalternator Может пример есть у вас?

    • @neoalternator
      @neoalternator  Před 2 lety

      Если речь про переполнение таймера, например TIM0_OVF, то реализация есть в примерах для Тини13 (там блинк по переполнению таймера) и у меня в видео, где электронный термометр на Т13 собирал

    • @jw5gi
      @jw5gi Před 2 lety

      @@neoalternator Не совсем то. Нужно, чтобы контроллер выводился из глубокого сна по watchdog и от внешних прерываний во время сна. Возможно так?

    • @Evgen-Evgen-Evgen
      @Evgen-Evgen-Evgen Před 2 lety +1

      @@jw5gi atmega328 так может, посмотрите даташит, раздел Power Management and Sleep Modes там должна быть табличка по каким прерываниям просыпается

  • @Evgen-Evgen-Evgen
    @Evgen-Evgen-Evgen Před 2 lety

    13:57 что за библиотека ВЫБЫТ? у меня такая же)

    • @neoalternator
      @neoalternator  Před 2 lety +1

      ВЫБЫТ - это не слишком удачный перевод на русский слова retired. Т.е. там собраны устаревшие примеры. Например, там есть примеры работы с wi-fi для плат типа ESP32, ESP8266. Но самые актуальные примеры для них доступны после выбора в Инструментах данных плат.

    • @Evgen-Evgen-Evgen
      @Evgen-Evgen-Evgen Před 2 lety

      @@neoalternator спасибо)