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

YOUTUBE · 30.11.2025 08:59

Ключевые темы и таймкоды

Введение в прерывания

0:00
  • Прерывания по таймеру делают программы более гибкими.
  • Прерывание - это сигнал, сообщающий процессору о наступлении события, требующего немедленного внимания.
  • Пример с дверным звонком иллюстрирует работу прерываний в микроконтроллере.

Функция delay

1:37
  • Функция delay приостанавливает работу микроконтроллера на заданное время.
  • Использование delay для значительных задержек может замедлить работу микроконтроллера.
  • Рекомендуется использовать delay только для незначительных задержек.

Прерывания и таймеры

3:52
  • Прерывания позволяют использовать несколько таймеров для параллельной работы.
  • В микроконтроллере ATmega328 есть три таймера: T0, T1 и T2.
  • Таймеры подсчитывают импульсы тактового генератора и могут вызывать прерывания.

Настройка таймеров

5:52
  • Для точного подсчета времени используется предварительный делитель частоты.
  • Делитель позволяет выбрать фиксированные коэффициенты деления.
  • Пример настройки таймера для прерывания каждую миллисекунду.

Использование таймера

7:22
  • Настройка таймера включает выбор режима работы и указание значения для сброса.
  • Разрешение прерывания и установка предварительного делителя частоты.
  • Глобальный запуск работы всех прерываний.

Управление таймером

9:07
  • Переменная timer_count_1 инкрементируется при каждом срабатывании таймера.
  • Использование переменной для подсчета времени работы системы.
  • Пример кода для управления светодиодами с помощью таймера.

Многозадачность и управление таймером

10:22
  • Переменная, накапливающая время работы системы, может переполниться.
  • Решение проблемы - создание переменной, подсчитывающей секунды.
  • Управление таймером с помощью переменной timer_count_1_on.

Задание интервала задержки для таймера

12:07
  • В основном коде указываем разрешение работы таймера и сохраняем значение переменной таймер лет один в другую переменную.
  • Прерывание нужно останавливать на незначительный промежуток времени, чтобы избежать испорченных данных.
  • После остановки прерывания можно безопасно использовать полученное значение.

Проверка и управление таймером

13:07
  • Проверяем значение таймера с помощью условия и включаем или выключаем светодиод.
  • Обнуляем переменную таймер лет один и разрешаем прерывание.
  • Добавляем еще два таймера для других светодиодов, чтобы проверить многозадачность устройства.

Создание функций для светодиодов

14:07
  • Создаем копии переменных для каждого светодиода и меняем номер светодиода.
  • Создаем отдельные функции для каждого светодиода, передавая номер пина и значение задержки.
  • Указываем задержку для каждого светодиода: 1000, 500 и 100 миллисекунд.

Применение прерываний по таймеру

15:07
  • Светодиоды - наглядный пример применения прерываний по таймеру.
  • Примеры использования: вывод информации на дисплей, считывание показаний датчиков, отправка смс-сообщений.
  • Программирование на живых примерах начнется после изучения внешних прерываний.
  • Подписывайтесь на сообщество ВКонтакте для получения дополнительной информации.