⏰ Прерывания в Arduino (AVR) по таймеру и многозадачность. Arduino для начинающих

preview_player
Показать описание
Говорим о том, как сделать ваши программы более гибкими и избавиться от пресловутой функции delay(), которая, по сути, останавливает работу всего микроконтроллера.

======================================================
ОПИСАНИЕ:
Это первая часть, пожалуй, самой важной и сложной темы в рамках курса «Основы Arduino для начинающих», поскольку сегодня мы будем говорить о прерываниях. А конкретно, о прерываниях по таймеру. О том, как сделать ваши программы более гибкими и избавиться от пресловутой функции delay(), которая, по сути, останавливает работу всего микроконтроллера.
======================================================

======================================================

======================================================
Помочь нашему проекту можно по этим реквизитам:
Яндекс.Деньги - 410011223685103
Webmoney - R516670493738
Сбербанк - 4276450014692863

Рекомендации по теме
Комментарии
Автор


На 7:09 очепятка - 0.001с = 1 мс
На 11:02 забыл добавить обязательное обнуление переменной timerLED1, когда она отсчитает 1000, будьте внимательны.
Правильно будет так:
timerLED1++;
if(timerLED1 == 1000)
{
timer LED1 = 0;
timerLED1Sec++;
}

LabRazum
Автор

Парень молодец. Подаёт материал грамотно, без запинок, а-канья, из ума всё. Все выпуски просмотрел, ждём продолжения. СПАСИБО!!!

iopkoheb
Автор

Все четко, по полочкам! Безмерно благодарен. Продолжайте проект это очень нужно новичкам.

incorruptibilis
Автор

7:12 0.010 c - это 10 миллисекунд, а не одна. Но вот действительно равно 0.001, то есть 1 миллисекунде.

romanberngardt
Автор

7.08- 7.27 Виправте помилки з нулями. 1мс =0.001с. Гарне навчальне відео, дякую.

shonnews
Автор

Так долго ломал голову над тем как сделать что бы два двигателя в моем проекте работали одновременно. И тут в рекомендацию выходит это видео. Спасибо!

chingizbashirov
Автор

Не видно обещанных последующих видеоуроков. Продолжайте пожалуйста, всем интересно, ждем!

sylstall
Автор

Огромное спасибо за такой труд, это именно то видео которого мне так не хватало!!!
Спасибо автору за такое очень полезное пояснение в видео!!!
От меня Лайк!!!

Редкиевидеороликипрокомпанетнт
Автор

Не так давно обнаружил Ваш канал, огромное спасибо за труды, все очень доступно и понятно. Жду продолжения!

Razmarin
Автор

Чувствую не один раз буду пересматривать это видео :) Спасибо за информацию)

topalov_al
Автор

Народ! Да я спасен! Это не вероятно. Целую неделю я думал как обойти эту бычевскую "дилей".
Ролик прям в точку.

Yupitrer
Автор

Отлично подан материал. Я уже не Личинка кодера, но и далеко не Кодер-Прогер-Старичок. Но каждое ВАШЕ видео очень полезно. Это основы. Которых так не хватает. Когда делаешь что то сложное. А уж тем более многозадачное. Спасибо за самые важные базовые Кирпичи знаний.

Инженерка
Автор

У светодиодах одинаковое время горения и время не горения, а как сделать, что бы было как blinka, что бы можно было менять время горения и не горения каждого светодиода.

pupkin
Автор

Спасибо большое.Отлично.Молодцы что оставили скетчи в ссылках, появилась возможность самому по заниматься и разобраться.

aleksandrzv
Автор

Круть! Ничего не понял, но понял, что нужно разобраться в этих таймингах,

Denis
Автор

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

santhermTV
Автор

Здравствуйте! Нравятся Ваши видео, очень доступно объясняете)) В своих кодах вы пишете "Если таймер отсчитал больше заданного значения". Но возник один вопрос - допустим в основном цикле у меня выполняется задача, в которой очень важно сохранять равные промежутки времени (не 1, 001мс, не 0, 9999мс, а ровно 1мс). При этом есть прерывание, например при нажатии кнопки производится какое-то действие. Оно же занимает определенное кол-во тактов, так? Основной цикл останавливается на это время. Получится незначительное изменение, времени работы, но мне то оно значительно! Не пойму, как синхронизировать работу так, чтобы отсчет в основном цикле всегда работал чётко, несмотря на прерывания. Есть идеи?))

Хэндрикс
Автор

Проекту и автору огромное спасибо! почему долго не выходят следующие уроки жду с ни терпением!!!!

danik
Автор

Очень полезное видео, спасибо!

Подскажите пожалуйста, возможно ли обеспечить многозадачность работы одной платы Ардуино UNO так, что бы она одновременно излучала ИК сигнал по протоколу NEC, например, и принимала его ИК приёмником типа CHQ 1838?

RetiredNihilist
Автор

Насчёт переменной подсчёта мс. Можно 16 разрядную положительную и спец алгоритм который учитывает переполнения. Например записываем или сравниваем с неким сгенерированный числом который учитывает переполнения

araxma-rg