🚩Аппаратные или внешние прерывания в Arduino (AVR). Прерывание по кнопке и дребезг контактов

  Рет қаралды 33,154

LabRazum | Виктор Осин

LabRazum | Виктор Осин

4 жыл бұрын

В этом выпуске образовательной рубрики продолжаем говорить о прерываниях - на этот раз, внутренних или аппаратных.
Содержание видео:
- Что такое аппаратные прерывания и как они работают
- Смотрим информацию о прерываниях в datasheet на микроконтроллер ATmega328p
- Пишем программу для внешнего прерывания по кнопке
- Наблюдаем дребезг контактов на графике осциллографа
- Пишем простую программу для борьбы с дребезгом контактов
- Получаем домашнее задание
------------------------------------------------------------------------------------
Розыгрыш, о котором говорится в видео, проведен 16.11.2019:
lrazum?w=wall-10699487...
------------------------------------------------------------------------------------
Группа ВК: lrazum
Страница автора в Instagram: / viktor_osin_

Пікірлер: 94
@LabRazum
@LabRazum 4 жыл бұрын
Программа, позволяющая обойти дребезг контактов кнопки: drive.google.com/drive/folders/1Km0pM3WdDM947XMnONF4SkD8ls-V4UeB?usp=sharing Краткая выжимка из видео: - Что такое аппаратные прерывания и как они работают (0:33) - Смотрим информацию о прерываниях в datasheet на микроконтроллер ATmega328p (2:38) - Пишем программу для внешнего прерывания по кнопке (6:24) - Наблюдаем дребезг контактов на графике осциллографа (14:47) - Пишем простую программу для борьбы с дребезгом контактов (16:00) - Получаем домашнее задание (22:30)
@jaroslavfrunt
@jaroslavfrunt 4 жыл бұрын
ИМХО лучше выкладывать на гитхаб Там можно просто посмотреть код А с диска обязательно скачивать надо
@user-nq3oq6ke1y
@user-nq3oq6ke1y Жыл бұрын
19:53 void button(){ if (millis() - timerPrew >= 200){ timerPrew = millis(); countInterrupt++; } } countOn тут незачем... Если нужный интервал пройден, то сразу считаем количество нажатий. Я могу ошибаться, так как пришёл сюда узнать, как сделать прерывание по кнопке, но при этом показалось, что флажок тут избыточен. Если я заблуждаюсь, буду признателен за критику.
@ded_pihor
@ded_pihor 2 жыл бұрын
Мне кажется это лучшее объяснение прерываний на ардуино в ютубе
@user-nq3oq6ke1y
@user-nq3oq6ke1y Жыл бұрын
Вам не кажется. Так оно и есть.
@starkrim9705
@starkrim9705 3 жыл бұрын
Многое узнал, до чего самостоятельно трудно догадаться, спасибо!
@ShadySt
@ShadySt 2 жыл бұрын
23 минуты пролетели как мгновение. Очень увлекательно!
@user-nq3oq6ke1y
@user-nq3oq6ke1y Жыл бұрын
Особенно на скорости 2х. Большое спасибо за хороший урок.
@guver8036
@guver8036 4 жыл бұрын
Познавательно. Доходчиво объясняешь. Приятно послушать.
@AndriiNikolaiev
@AndriiNikolaiev 4 жыл бұрын
Спасибо. Приятно и полезно смотреть твои видео!
@Mkorostel
@Mkorostel 3 жыл бұрын
Сложные темы, а как просто и доходчиво объясняются. Здорово!
@aradivil
@aradivil 4 жыл бұрын
Спасибо. Просто о сложном. Замечательная подача информации.
@alexandrkontsedalov3613
@alexandrkontsedalov3613 4 жыл бұрын
Прекрасно, образцово подготовлен материал, четкая подача и прекрасная русская речь. Спасибо. Репект!
@oOcitizenOo
@oOcitizenOo 4 жыл бұрын
Ты вернулся, ура!)
@TDMLab
@TDMLab 4 жыл бұрын
Спасибо, подкинул хорошие идейки👍
@avtomatik6893
@avtomatik6893 4 жыл бұрын
Спокойное и познавательное видео! Класс!
@dobriychel7584
@dobriychel7584 3 жыл бұрын
Хорошо подготовился. Спасибо за старание.
@Ardbot
@Ardbot 4 жыл бұрын
Узнал много нового. Спасибо
@user-yc4si3tz5m
@user-yc4si3tz5m 4 жыл бұрын
Так держать, побольши вапускай сваи ролики очень помогают. СПОСИБА
@Boka-and-Joka
@Boka-and-Joka 4 жыл бұрын
Очень хорошие уроки. Спасибо
@loopleet4750
@loopleet4750 4 жыл бұрын
20:48 по мне так лучше бы приучил зрителей объявлять переменные через вот такую форму записи " int16_t " так сразу видно какое количество бит и бай в числе. А какое количество бит в long нужно запомнить. и иногда они могут отличаться. в разных микроконтроллерах или языках. да и увеличить(переименовать) переменную int8_t до int16_t гораздо чем менять bute в int
@user-yu3yv3ti9d
@user-yu3yv3ti9d 3 жыл бұрын
Спасибо за интересное и полезное видео.
@aleksivanov9137
@aleksivanov9137 4 жыл бұрын
Спасибо большое за вашу проделанную огромную работу.Все понятно,легко и доступно объясняете.Есть просьба к Вам,сделайте пожалуйста разные курсы.Как примерно в школе,первый класс это азбука а здесь знакомство с ардуино ну а далее по нарастающей в средних классах хотелось бы увидеть уже письменность на C++ ну там и дальше.Спасибо удачных Вам проектов.
@passaw7
@passaw7 3 жыл бұрын
Отлично объясняешь. Еще бы урок по работе и выбору осцилографа. По каким параметрам выбирать, чтобы можно было прицениться по соотношению цена/качество/функции. Ну и первичный урок как пользоваться и как не нужно подключать устройства к нему.
@user-zs3xt4up8j
@user-zs3xt4up8j 3 жыл бұрын
Спасибо, очень полезно.
@user-gw1pj7fh7q
@user-gw1pj7fh7q 4 ай бұрын
Хороший обучащий канал жаль перестали выходить новые видео
@ProninART89
@ProninART89 2 жыл бұрын
Круто 👍
@alekskapitonov2738
@alekskapitonov2738 4 ай бұрын
Спасибо.
@agood9000
@agood9000 3 жыл бұрын
Отличная подача учебного материала ! именно в связке millis() и прерывания ! материал можно сказать уникальный (именно в связке больше не нашёл ни у кого). Автору огромный респект !!! На хейтеров не обращай внимания они сейчас есть везде . Многие пишут просто откровенную ерунду сами не понимая что. Люди, разберитесь для начала с более простыми вещами . Сам в своё время убил уйму времени на разбор как работать с millis(). А какой резистор поставил автор и как его подтянул ... не об этом тема была =) В функции прерывания не работает delay() ибо задействован один и тот же таймер и нужно работать с millis() , а вы пишете про форму записи и прочую ерунду, он АВТОР и ОН ТАК ВИДИТ =) кому не нравится сами свой контент делайте =)
@borysg7090
@borysg7090 4 жыл бұрын
Спасибо
@user-li2zm9vk8e
@user-li2zm9vk8e 2 жыл бұрын
спасибо
@passaw7
@passaw7 3 жыл бұрын
Для обучалки все ок. Хорошо бы в обучении обращать внимание на переполнение таймера. Скажем, если кто-то делает для себя девайс с долгим включением, то через 70 дней пользователь получит мертвый функционал. И также если значение разницы выходит за int 32768, то на конце числа нужно ставить латинскую Л нижнего регистра, обозначающую сравнение в long
@user-mm7tp7oj5n
@user-mm7tp7oj5n 4 жыл бұрын
Хорошие уроки. Можно сделать еще один урок с акцентом на приоритет прерываний. Допустим собрать часы на ардуино и семисегментнике. На второй счетчик повесить часики, на первый счетчик динамическую индикацию, на нулевой счетчик опрос кнопок. Заметили что мало уроков по ардуино о том как сделать простые часы с будильником, а все потому что милис сидит на нулевом прерывании, а звук сидит на первом прерывании. Тоесть пока играет будильник, часы отстают. Пояснить что на внешнее прерывание желательно вешать только сверхсрочное, какой ни будь датчик аварии, но никак не кнопки. Ну и понятное дело, если тикают часы на таймере, глобально запрещать прерывания нельзя.
@vpetevotov
@vpetevotov 4 жыл бұрын
Под timerPrew имелось в виду previous timer?)
@KJIaBogaB
@KJIaBogaB Жыл бұрын
Спасибо!!! Очень познавательно. Я с этим Delay проект бросил вполне рабочий, т.к. не знал как используются в Ардуино прерывания!!! А если мне нужно 3-5 датчиков удара подключить? Как переинициализировать всего 2 пина для прерываний на 5 пинов аналоговых ? Я делал интерактивный тир, где использовал библиотеки чтения SD карт и воспроизведения аудио: #include // Библиотека для SD Card. #include // Библиотека TMRpcm audio 1.6.1 ). При попадании по панели с приклеенным сзади пьзо-элементом воспроизводится Wav-файл звуковой. Настроил аналоговые А0-А4 входы как сенсоры, подключив к ним пьезоэлементы через подтягивающие резисторы каждый около 1МОм (пьезы для ударного воздействия пульки NERF). И в цикле это всё использовал просто проверяя условия, когда произойдет на том или ином датчике. После срабатывания датчика, звук мишени естественно звучит некоторое время, которое я и задавал через Delay (и ещё, толи библиотека дебильная, толи у меня лыжи не едут - если звук воспроизводился, его действие не прекращалось даже после того, как он проиграет и другой звуковой файл по другому действию не воспроизводится). Кое как нарыл в описании, что надо делать audio.disable() после выдержки времени по delay - расчитывал время звучания каждого звука): void loop() { int val0= analogRead(sensorPin0); int val1= analogRead(sensorPin1); int val2= analogRead(sensorPin2); int val3= analogRead(sensorPin3); int val4= analogRead(sensorPin4); if (val1 > 200) // попадание в тело мишени1 { audio.play("hit1.wav"); // издаём истошные звуки погибели первой мишени delay(3000); audio.disable(); // выключить таймер на выводе и остановить воспроизведение } if (val2 > 200) // попадание в тело мишени2 { audio.play("hit2.wav"); // издаём истошные звуки погибели второй мишени delay(3000); audio.disable(); // выключить таймер на выводе и остановить воспроизведение } // и т.д. по остальные 3 мишеням } Дак вот, во время работы по второй мишени после попадания в первую - вторая мишень не срабатывала именно из-за Delay по воспроизведению звука по первой :( приходится долго ждать пока она пробубнит свою траурную бубню. Возможно ещё и срабатывал "дребезг" контактов, т.к. пьезо полюбому должен дребежжать :) Потом я искал как это обойти, понял что нужны прерывания - но к тому времени не нашел подобное видео и забросил. Сейчас можно продолжать :) Спасибо! А то сын поиграл и всё понравилось, но мне не понравилось такая работа и я разобрал дальше ковырять - в результате забросил.
@alexandr_84
@alexandr_84 4 жыл бұрын
👍
@beenmayer7700
@beenmayer7700 3 жыл бұрын
Здравствуйте. Подскажите пожалуйста как сделать прерывания больше чем с двумя кнопками в моем случае надо 4 кнопки?
@user-cv6hi1mm7z
@user-cv6hi1mm7z 4 жыл бұрын
Не пойму, почему millis - timerPrew всегда точно будет больше 200 через 200мс, а если в момент включения прерывания в миллис набежало уже много часов? Или при срабатывании прерывания миллис начинает тикать с нуля?
@user-mb3vl1gn5v
@user-mb3vl1gn5v 2 жыл бұрын
Добрый день. Подскажите пожалуйста решение задачи. Esp8266 подключается к локальной сети, проверяет PING устройства в сети, когда не получает ответ ЭХО , перепроверяет еща 3 раза, и если ответа нет, передергивает питание. Но в это же время веб страница с возможностью в ручную вкл/выкл. Реле.... кончно жэ тормозит. Подскажите как можно решить эту проблему?
@user-lj9bp7hj3d
@user-lj9bp7hj3d 3 жыл бұрын
на сколько функция attachinterrupt медленнее, чем настройка таймеров регистрами
@user-qe9wl3yk5v
@user-qe9wl3yk5v 4 жыл бұрын
Добрый день или вечер!!! Уважаемый, Вы можете в другом скетче, доработать еще два канала, ролики Ваши просто чудо, но программирование для меня пенсионера очень сложно, спаять схему нет проблем. Заранее спасибо.
@feoktant
@feoktant 3 жыл бұрын
Какие есть рекомендации - прерывание, или опрос в loop?
@3DSpaceX
@3DSpaceX 4 жыл бұрын
Здравствуйте, подскажите а как сделать что бы после нажатия кнопки светодиод загорался с нужной мне задержкой ну допустим с опаданием в 1.5сек? но при отпускании что б срабатывало без задержек уже.
@grieschagriegorjev3453
@grieschagriegorjev3453 4 жыл бұрын
При нажатии на кнопку ставишь(включаешь) флаг и начинаешь отсчёт, по завешению отсчёта выключаешь флаг и запускаешь программу (ну твой диод загорелся), и как дополнительное условие, если флаг включен и кнопка отпущена, программа выполняется сразу, в момент отпускания кнопки.
@spin3602
@spin3602 2 жыл бұрын
Спасибо, много чего узнал о прерываниях, но столкнулся с проблемкой, помогите её решить, думаю много кому поможет. В проекте есть кнопка (на внешнее прерывание), модуль приёмника 433мгц (на внешнее прерывание), шаговый двигатель с драйвером DIR-STEP и другие датчики для опроса, желательно на внешнее прерывание. Как решить такую задачу, на что смотреть для написания скетча? Ведь у NANO только 2 и 3 нога для прерывания. Только ардуино UNO в помощь? или есть библиотеки какие. Жаль нет видео отличия int от pcint
@LabRazum
@LabRazum 2 жыл бұрын
Я бы задействовал дополнительные пины для каждого датчика, и так же направил бы их на один пин прерывания. То есть прерывание на 3 пине регистрируется и обработчик начинает проверять три пина датчиков, которые выдают сигнал. Вот нашёл подобное обсуждение (goo-gl.me/4jiNM ), почитайте, может будет полезным. А вообще я бы не увлекался прерываниями и старался делать быструю программу, в цикле которой успевают отслеживаться все ваши события.
@spin3602
@spin3602 2 жыл бұрын
@@LabRazum Спасибо, я тут почитал чем отличается PCINT* от INT* на ногах, получается как у Вас на видео графики, INT на 2 и 3 ноге, остальные подчти все грубо на кнопки можно сажать для прерывания. Неувлекаясь конечно же.
@andreiserov5525
@andreiserov5525 3 жыл бұрын
Зачем подключать подтягивающий резистор внешне, если можно использовать внутренний подтягивающий резистор функцией pinMode(1, INPUT_PULLUP)?
@MrYurAlex
@MrYurAlex 2 жыл бұрын
Это правила "хорошего тона" для схемотехников.
@Pasha4ur
@Pasha4ur 3 жыл бұрын
Плохая обработка дребезка. Если много кликать, то работа кода по включению и выключению LED по CHANGE периодически инвертируется. 31 led13State: 1 32 led13State: 0 33 led13State: 1 34 led13State: 0 34 led13State: 0 35 led13State: 1 35 led13State: 1
@viktormezler3938
@viktormezler3938 3 жыл бұрын
17:59 Если countOn, можно было сбросить вместе с countInterrupt, то зачем нужна вся это возня с таймером? Дребезг длится где-то 5мс.
@rogo7330
@rogo7330 3 жыл бұрын
Если я правильно понял, вы предлагаете сделать следующее: ... void button() { if(countOn == 0) { countIpt++; countOn = 1; } } ... void loop() { ... cli() int countButton = countIpt; countIpt = 0; countOn = 0; sei() ... } Впринципе это может сработать, но тогда вы привязываете сброс кнопки к скорости, с которой у вас будет повторяться этот сброс. Если loop будет повторяться достаточно часто (например если убрать из этой программы delay), то переменная countOn будет сбрасываться всё ещё чаще, чем надо. Даже чаще 5 мс.
@Fil0sOFF
@Fil0sOFF 2 жыл бұрын
Дребезг длится не 5мс) чаще всего надо ставить 50мс, но есть и такие хреновые кнопки которым и 200мс мало.
@viktormezler3938
@viktormezler3938 2 жыл бұрын
@@Fil0sOFF Странно у меня не больше 10 мс. Ну а с 200мс это уже перебор! Там не кнопка дребезжит, а руки трясутся! 🤣🤣
@ManOleg38
@ManOleg38 4 жыл бұрын
Артикул лампы на струбцине скажи пожалуйста.
@LabRazum
@LabRazum 4 жыл бұрын
Покупал у местного магазина здесь: danomsk.ru/shop/12-gotovye-izdeliya/22-payalnoe-oborudovanie/141-vspomogatelnoe-oborudovanie/163560-lupa-nastolnaya-ma-1503i-3d-s-podsvetkoy-kh1-75-190kh155-mm-dve-energosberegyushchie-lampy-moshchnos/
@user-hd7hq4lf4y
@user-hd7hq4lf4y 2 жыл бұрын
Если резистор ставят для поддтяжки к минусу его называют "стягивающим"
@MrHazur
@MrHazur 4 жыл бұрын
Слишком много переменных. Не проще по прерыванию отключить само прерывание, и через n мелисикунд снова опросить кнопку? Если на кнопке логический 0 - включить заново прерывание.
@user-zl7ve6bm3n
@user-zl7ve6bm3n 2 жыл бұрын
Извините я читал что функции времени таких как millis, delay, micros не работают в обработчике прерываний.
@user-dq2ci5ln5g
@user-dq2ci5ln5g Жыл бұрын
Немного не так! 😲 millis и micros ничего *особенного* не делают, они лишь выдают значение счётчиков в мс и мкс, прошедшее с начала работы МК, вот только во время работы подпрограммы прерывания счётчик-то не будут изменяться! 😳 И delay тоже будет работать, но какбэ необычно... Он может подвесить МК «навсегда» так как, опять же, счётчик времени у нас не меняется... 🤔 И вообще делать что-то долговременное в обработчике прерываний - это тяжкий моветон! Основная задача там - взвести какой-нить флаг, что бы основная программа узнала - у нас произошло какое-то событие, и уже там производить всякие долговременные «операции», иначе логика работы проца и остальной периферии может основательно покоситься и мы можем получить совсем не тот результат, на который рассчитывали! В начале своего «програмно/аппаратного пути» я долго не мог понять, почему моя прога делает совсем не то, что я «замыслил»?!? 🤔 И лишь доскональное заучивание мануала, да ещё пошаговая «пробежка» в отладчике «вправляли» моск на своё законное место! 👍😁🤪
@micromaster4405
@micromaster4405 Жыл бұрын
@@user-dq2ci5ln5g во первых, с чего бы в прерывании не работали функции времени? Во вторых, выполнение основного кода в прерывании - стандарт для систем жёсткого реального времени, особенно в тех МК, где есть приоритеты прерываний
@user-dq2ci5ln5g
@user-dq2ci5ln5g Жыл бұрын
@@micromaster4405 Во первых, а с чего им там работать, если в п/п обработки каких-то прерываний обычно выставляется флаг запрета прерываний! Каждая статья в эту тему, да и все, скажем так, гуру от Ардуины на каждом шагу говорят - функции времени в прерывании не работают! Об этом уже столько баталий было, столько копий переломано в сражениях, типа: «а почему у меня в прерывании не работает то-то и это?»! А, во вторых, в *Ардуине стоит ATmega328* , и мы щаз, какбэ, про него говорим... В других МК, да и неМК тоже, может быть всё по другому! Поэтому, я ещё раз повторюсь, что только «заучивание наизусть» руководства пользователя по программированию позволит получить от МК именно той реакции, которую мы «задумали», вернее «заставить» делать то, что мы хотим! Тщательно читаем и «запоминаем» все доки и маны от «нашего» МК, чтобы не было потом «дурацких» вопросов: - а почему это моя Ардуинка считает неправильно, не видит кнопки, таймер не обрабатывает, АЦП не считает?! Вы вот зайдите на профильные форумы по STM32, там такие вопросы всплывают, что мама не горюй, а всё из-за того, что кто-то что-то не дочитал, а маны там в разы больше чем по Ардуне, или разработчики не подправили доки или софт по разработке, при выпуске новой версии МК! И да, что такое «выполнение основного кода в прерывании» я не понял, от слова - никак! 🤔 Это что, выполнение двух разных команд, в одно и то же время, одним ядром процессора?! 😲
@drollery6399
@drollery6399 3 жыл бұрын
То есть прошло 1.5 месяца и прерывания перестали работать :-) Хакер? Для МК 1.5 месяца, как мгновение, особенно если он в каком-нибудь девайсе с постоянным питанием.
@user-dp3fw9vw7j
@user-dp3fw9vw7j 4 жыл бұрын
Зачем подтягивающий резистор, если у ардуино есть встроенный резистор?
@LabRazum
@LabRazum 4 жыл бұрын
Посмотрите на размеры и мощность выводного резистора и подумайте о надежности встроенного в микроконтроллер микро-резистора - они очень любят выгорать при наводках и не надежны, поэтому я в любых проектах использую только внешнюю подтяжку.
@LabRazum
@LabRazum 4 жыл бұрын
@@zhuk462 ну дак вы подтверждайте доказательствами, что это ерунда :) Например, здесь в разделе о подключении кнопок об этом тоже говорят: easyelectronics.ru/podklyuchenie-mikrokontrollera-likbez.html и здесь тоже: www.radiokot.ru/forum/viewtopic.php?p=1431616
@user-rw9od8yx1g
@user-rw9od8yx1g 4 жыл бұрын
@@zhuk462 как только понимаешь, что ляпнул "ерунду" начинаешь переобувается на ходу)))) тебе же автор ясно и понятно объяснил, что предпочитает надежность, а ты флудить начинаешь и тут же говоришь о предпочтениях. Если не нравиться не грузи автора глупостями у него не так много времени чтобы тратить его на таких как ты.
@user-rw9od8yx1g
@user-rw9od8yx1g 4 жыл бұрын
@@zhuk462 что значит "спалиш порт что так что эдак"? Если в твоей схеме резистор подобран соответствующего номинала как же ты порт спалиш))) или опять переобуваться будешь на ходу)))
@Unregistered33
@Unregistered33 4 жыл бұрын
@@user-rw9od8yx1g тоже заметил))) крутится как уж на сковородке. сначала шлепнет языком, потом оправдывается. и дизлайк единственный он и поставил )))
@user-zu7iu7ui3i
@user-zu7iu7ui3i 2 жыл бұрын
Какой смысл писать если вы ни кому не отвечаете
@criterrors
@criterrors 2 жыл бұрын
Насколько я знаю, современные компьютеры не используют прерывания для работы с мышью
@user-rd3lj4gn4s
@user-rd3lj4gn4s Жыл бұрын
Ну и почему под роликом нет ссылки на первое видео про прерывания, раз уж его рекомендуете. Несерьёзно относитесь к своей работе :(
@LabRazum
@LabRazum Жыл бұрын
Потому что научитесь пользоваться подсказками/рекомендуемыми видео, там я специально в момент, когда говорю об этой части, закрепил видео на первую часть.
@user-rd3lj4gn4s
@user-rd3lj4gn4s Жыл бұрын
@@LabRazum Ура, в этот раз я смогу вам кое что интересное и новое рассказать! :) То что вы назвали «подсказки/рекомендованные видео» можно увидеть только на стационарном компьютере, и то только в том случае если у вас в настройке включена опция «Аннотации». И в этом случае подсказка выскочит лишь на секунду. Стоило тебе отвернуться и ты уже не знаешь о том что там что-то было. А если опция «Аннотации» выключена - то я и не узнаю что были какие-то подсказки. Но я смотрю ютьюб с планшета iPad (он рекламу только 1 раз показывает перед видео, а не каждые 5-7 минут как на стационарном компе), и там в мобильной версии вообще никогда не выпадают подсказки, а в настройках даже раздела «Аннотации» не усуществует. В общем ни пользователи компьютеров, ни планшетов/смартфонов ваши подсказки не видят (за исключением тех кто включит эту опцию на ПК). Гораздо логичней если вы на что-то ссылаетесь - прописать это в ссылках под видео, как это делают все остальные...
@LabRazum
@LabRazum Жыл бұрын
@@user-rd3lj4gn4s хорошо, спасибо, буду прописывать! Есть еще раздел «другие видео», если нажать на шестеренку, в самом низу. Там я обычно смотрю все предложенные видео автором. Это и с ipad и с телефона работает.
@argielu6524
@argielu6524 4 жыл бұрын
+
@Drak0sha13
@Drak0sha13 5 ай бұрын
Или автор дает очень упрощённое понятие volatile, или сам не до конца понимает его использование. Например, если переменная используется только в прерывании, то volatile не нужно ставить.
@Relevantium
@Relevantium 2 жыл бұрын
Спасибо понятно, но проще было бы INPUT PULLUP или же резистором вручную подтянуть и дребезг уйдет
@LabRazum
@LabRazum 2 жыл бұрын
Нет, дребезг останется, т.к. происходит он из-за контактов, которые несколько раз замыкаются между собой. А подтяжка всего лишь делает стабильным 0 или 1 - нажато/отпущено, без помех.
@Relevantium
@Relevantium 2 жыл бұрын
@@LabRazum все этим пользуются, а вы пытаетесь опровергнуть, говорю же работает
@LabRazum
@LabRazum 2 жыл бұрын
@@Relevantium я с такой логикой спорить не буду, но вы бы хоть загуглили для чего нужна подтяжка :)
@Relevantium
@Relevantium 2 жыл бұрын
@@LabRazum я знаю для чего она нужна, но с дребезгом тоже помогает, иначе бы не советовал
@LabRazum
@LabRazum 2 жыл бұрын
@@Relevantium если вы так настаиваете, тогда можете коротко пояснить, как это происходит? Или дать ссылку хоть на одну статью или пример где об этом рассказано?)
@user-tx8op6kz6e
@user-tx8op6kz6e 3 жыл бұрын
А можешь конечно не бесплатно проверить скетч.
Super sport🤯
00:15
Lexa_Merin
Рет қаралды 11 МЛН
Sigma Girl Education #sigma #viral #comedy
00:16
CRAZY GREAPA
Рет қаралды 14 МЛН
Маленькая и средняя фанта
00:56
Multi DO Smile Russian
Рет қаралды 4 МЛН
Уроки Arduino: энергосбережение и сон
19:03
Заметки Ардуинщика
Рет қаралды 115 М.
Энкодер.
14:00
Andrey Frolov
Рет қаралды 17 М.
Простая беспроводная сеть датчиков на Arduino и 433 MHz
18:54
Заметки Ардуинщика
Рет қаралды 255 М.
Уроки Ардуино. Прерывания по таймеру
9:04
Заметки Ардуинщика
Рет қаралды 102 М.
Переходник для IPhone • 181649538                         Делюсь обзорами в профиле @lykofandrei
0:15
Обманет ли МЕНЯ компьютерный мастер?
20:48
Харчевников
Рет қаралды 177 М.
Как я сделал домашний кинотеатр
0:41
RICARDO
Рет қаралды 1,3 МЛН
Apple. 10 Интересных Фактов
24:26
Dameoz
Рет қаралды 115 М.