Working with external interrupts INT and PCINT on AVR microcontrollers

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 ก.ค. 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
  • วิทยาศาสตร์และเทคโนโลยี

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

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

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

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

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

  • @SMV1972
    @SMV1972 3 หลายเดือนก่อน

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      Так есть у меня такое видео - th-cam.com/video/szExLJDM2kI/w-d-xo.html

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

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

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

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

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

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

  • @j05gp
    @j05gp 3 หลายเดือนก่อน

    Немного не понял как у вас получилось с переменной bool flag без указания volatile?

  • @MitsuZer0G
    @MitsuZer0G 9 หลายเดือนก่อน

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • @Evgen-Evgen-Evgen
      @Evgen-Evgen-Evgen 2 ปีที่แล้ว +1

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

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

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

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

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

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

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

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

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

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

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

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

      @@neoalternator спасибо)

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

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