18. Таймеры и прерывания в Arduino | Программирование микропроцессоров

106 подписчиков

12+
12+

6 часов назад

ПожаловатьсяНарушение авторских прав

106 подписчиков

12+
12+

6 часов назад

ПожаловатьсяНарушение авторских прав
12+
12+

6 часов назад

Курс "Программирование микропроцессоров" специальность 09.03.04 "Программная инженерия", 1 курс. Про подготовку программистов в Институте iSpring здесь: https://ispring.institute/software-engineering Во второй части лекции по программированию микроконтроллеров разбираемся, как микроконтроллер реагирует на аппаратные события без постоянного опроса устройств в основном цикле программы. На примере Arduino Uno и микроконтроллера ATmega328P рассмотрим аппаратные таймеры и прерывания. Настроим Timer1 для периодического переключения встроенного светодиода, переведём процессор в режим сна и увидим, как таймер продолжает работать независимо от CPU. В лекции: * принцип работы аппаратного таймера: тактовый сигнал, prescaler, счётчик и compare register; * различия между polling и interrupts; * устройство обработчика прерывания ISR; * назначение таблицы векторов прерываний; * использование volatile при работе с периферией и общими данными; * настройка Timer1 через аппаратные регистры AVR; * инструкции cli, sei, sleep и reti; * interrupt latency и вложенные прерывания; * состояния гонки и критические секции; * особенности чтения 16-битных значений на 8-битном процессоре; * устройство startup code и инициализация среды выполнения; * машинный код, который компилятор генерирует для программы Arduino. Также с помощью avr-objdump заглянем внутрь полученного ELF-файла. Посмотрим таблицу векторов, код инициализации, пролог и эпилог ISR, обращения к аппаратным регистрам и реализацию главного цикла Arduino. Главная цель лекции — показать, что прерывания, таймеры и Arduino-функции не являются магией. В конечном итоге программа превращается в конкретные инструкции AVR, а её выполнение определяется взаимодействием процессора с аппаратной периферией. Полезные ссылки: * Слайды и задачи по этому курсу: https://github.com/alexey-malov/mpp * Мой Telegram для связи с подписчиками: https://t.me/vivid_coding * Поддержать меня на Boosty: https://boosty.to/vivid-bw Тайм-коды: 0:00 — Таймеры микроконтроллера 6:01 — Прерывания 10:55 — Обработка прерываний в Arduino 17:13 — Таблица векторов прерываний 19:19 — Управление светодиодом по таймеру 34:48 — Дизассемблирование прошивки 1:08:15 — Задержка обработки прерываний 1:12:08 — Обработка вложенных прерываний 1:14:15 — Состояние гонки и борьба с ним 1:21:55 — Управление работой прерываний 1:28:23 — Особенности гарвардской архитектуры AVR 1:30:32 — Изучение кода прошивки В заставке использована композиция "Папа может в Си" музыкального коллектива "Научно-технический рэп" (https://vk.com/nii_rap). Во вступительной заставке используется шейдер "Enter The Matrix" https://www.shadertoy.com/view/cl3XRX (автор kishimisu).

Название:

18. Таймеры и прерывания в Arduino | Программирование микропроцессоров

Категория:

Разное