Prog Academy

MilTech · за підпискою

C++ для embedded і MilTech

Прошивка, яку можна перевірити: C++ для мікроконтролерів на віртуальних платах

  • 20 модулів
  • 45+ практичних завдань
  • Автоматична перевірка
  • Українською

Отримати доступ до курсу

Курс за підпискою · Навчання у власному темпі

Про курс

Що це за курс?

У кожному дроні, наземному роботі чи метеостанції є мікроконтролер (MCU, microcontroller unit) — мікросхема з процесором, пам'яттю і вбудованими апаратними блоками (периферією). Програма, записана в нього, називається прошивкою (firmware): вона опитує датчики, керує двигунами й передає телеметрію по радіо — без операційної системи, без винятків і без динамічної пам'яті, зате з регістрами, перериваннями й таймерами. Помилки там не падають з гарним повідомленням: вони мовчки втрачають події, переповнюються через 49 днів роботи або ламаються лише на морозі.

У цьому курсі ви пишете модулі прошивки для віртуальних плат: послідовний порт UART і таймер, датчик вологості з контрольною сумою CRC, IMU (гіроскоп і акселерометр) на шині I2C, генератор ШІМ для двигунів, сторожовий таймер (watchdog). Кожне завдання — невеликий проєкт: тестовий стенд (main.cpp), заголовки й моки «заліза» доступні лише для читання, а ваш файл — один .cpp. Саме так прошивку тестують без жодної плати. Усі терміни й скорочення розшифровано в першому уроці.

Аудиторія

Для кого цей курс?

  • C++-розробник, що йде в embedded

    Навчитеся писати прошивку без heap і винятків: регістри, переривання, таймери, CRC, ШІМ і watchdog.

  • Знаєте C++, але не електроніку

    Регістри, шини й периферію пояснюємо з нуля, а прошивку тестуєте на віртуальних платах у браузері.

  • Шлях «MilTech Software Engineer»

    У фіналі зберете модуль прошивки віртуальної IMU-плати, який тестується через інтерфейси.

Спершу потрібна підготовка

Курс спирається на знання, позначені нижче як обов’язкові.

Потрібно знати

  • C++ на рівні безкоштовного курсу «Основи програмування на C++» — змінні, умови, цикли, функції, std::vector

  • Курс «C++ Advanced» — масиви й покажчики, ->, вихідні параметри, рядки в стилі C (strchr, strtol, snprintf), покажчики на функції, static на рівні файлу, класи й інтерфейси, поділ коду на .h і .cpp.

    Детальніше
    • Усе це задачі курсу використовують від першого модуля

Не потрібно знати заздалегідь

  • Пояснюємо в курсі

    Двійковий і шістнадцятковий запис, побітові операції, регістри, шини, периферію

  • Плата, паяльник чи знання електроніки.

    Детальніше
    • Компілятор — g++ (C++17, лише стандартна бібліотека), код пишете й запускаєте в браузері

Якщо цих знань ще немає — пройдіть курси за порядком:

  1. З нуля
  2. Обов’язково Основи програмування на C++
  3. Обов’язково C++ Advanced
  4. Цей курс C++ для embedded і MilTech

Результат

Що ви навчитеся робити

працювати з бітами й полями регістрів, типами фіксованої ширини, переповненням і порядком байтів

писати драйвери через мок регістрів: опитування статусу, прапорці, що скидаються записом одиниці, read-modify-write

будувати кільцеві буфери, черги подій, статичні пули пам'яті без new

рахувати дроби без float (фіксована кома Q15 і Q16.16), інтерполювати таблиці калібрування

усувати брязкіт кнопок, писати кінцеві автомати, програмні таймери й планувальник суперциклу

безпечно обмінюватися даними з перериваннями: критичні секції, атомарне читання лічильника

обробляти помилки без винятків, перевіряти кадри CRC-8/16/32, розбирати рядки UART

налаштовувати ШІМ і сторожовий таймер, а у фіналі — зібрати модуль прошивки IMU-плати, який тестується через інтерфейси

Формат

Як влаштоване навчання?

20 модулів: спершу «мова регістрів» (біти, типи, байти), потім розмова з залізом і зберігання даних, далі поведінка в часі (кнопки, автомати, таймери, переривання) і надійність (помилки, CRC, драйвери шин, ШІМ, watchdog), наприкінці — фінальна плата. У кожному модулі — теорія з прикладом і 2–3 практичні задачі з автоматичною перевіркою на прихованих сценаріях: інші швидкості, переходи лічильника через нуль, від'ємні температури, збої шини. Третина задач — «знайдіть помилку»: код компілюється і навіть працює на прикладі, але містить типовий для embedded дефект. Є тести з поясненнями і практичні форми.

  • Теорія

    22 уроки з прикладами

  • Практика в браузері

    45+ завдань з автоматичною перевіркою

  • Тести

    7 тестів для самоперевірки

  • Власний темп

    Онлайн на my.prog.academy, без встановлення програм

AI-помічник

AI-помічник поруч під час навчання

На сторінках курсу, уроків і завдань є кнопка «Запитати AI». Помічник знає матеріали саме цього курсу й урок, на якому ви зараз, тому відповідає по темі й показує, у яких уроках про це йдеться.

  • Пояснить інакше

    Не зрозуміли урок з першого разу — попросіть пояснити простіше або дати ще один приклад.

  • Допоможе із завданням

    Застрягли — підкаже, з чого почати, і допоможе знайти помилку у вашому рішенні. Готового рішення не дає.

  • Знайде потрібну тему

    Запитайте, де пояснювали поняття, — і отримаєте посилання на потрібні уроки курсу.

  • Продовжить розмову

    Уточнюйте без повторів: помічник пам’ятає розмову, а нещодавні розмови курсу зберігаються.

Входить у кожен тариф оплаченої підписки — Basic і Premium. У Premium ліміти використання AI-помічника вищі — ним можна користуватися активніше. Це помічник у навчанні, а не генератор готових відповідей: він пояснює й підказує, а завдання ви розв’язуєте самі.

Програма

Програма курсу

20 модулів, 45+ практичних завдань з автоматичною перевіркою і 7 тестів. Відкрийте модуль, щоб побачити всі теми.

Модуль 1 — Біти й маски регістрів 3 уроки · 2 практики

Регістр — це набір бітів і полів. Встановити, скинути, прочитати поле, не зачепивши сусідів

  • Теорія Вступ: де працює прошивка і як влаштований курс
  • Теорія Підготовка: двійкові числа, hex і C++ понад базовий курс
  • Теорія Біти, маски, поля
  • Практика Конфігурація порту GPIO
  • Практика Знайдіть помилку — декодер статусу живлення
Модуль 2 — Типи фіксованої ширини та переповнення 1 урок · 3 практики

uint16_t, int32_t і що з ними робить integer promotion. Переповнення таймера, акумулятора й команди двигуна

  • Теорія Ширина типу — частина специфікації
  • Практика 16-бітний таймер і тайм-аут
  • Практика Знайдіть помилку — усереднення АЦП
  • Практика Мікшер команд з насиченням
Модуль 3 — Порядок байтів (endianness) 1 урок · 2 практики · 1 тест

Little-endian і big-endian у кадрах датчиків і логах плат; знакове розширення 24-бітних значень

  • Теорія Хто перший — старший чи молодший байт
  • Практика Поля кадру датчика
  • Практика Логи старих і нових плат
  • Тест Біти, типи, порядок байтів
Модуль 4 — Карта пам'яті і мок регістрів 1 урок · 3 практики

Периферія за адресами, опитування статусу з повторним читанням, W1C-прапорці і тестування драйвера без плати

  • Теорія Регістри за адресами і мок шини
  • Практика Драйвер передавача UART
  • Практика Знайдіть помилку — втрачені переривання таймера
  • Практика Розбір регістра АЦП
Модуль 5 — Кільцевий буфер 1 урок · 2 практики

FIFO фіксованого розміру без динамічної пам'яті: індекси, повнота, переповнення і вільні лічильники

  • Теорія Кільцевий буфер
  • Практика FIFO радіомодуля
  • Практика Знайдіть помилку — приймальне кільце GNSS
Модуль 6 — Фіксована кома: Q15 і Q16.16 1 урок · 2 практики · 1 тест

Дробові числа без FPU: масштаб, округлення, насичення і переповнення проміжного добутку

  • Теорія Дроби в цілих числах
  • Практика Арифметика Q15
  • Практика Знайдіть помилку — фільтр барометричної висоти
  • Тест Регістри, буфери, фіксована кома
Модуль 7 — Таблиці та інтерполяція 1 урок · 2 практики

Калібрувальні таблиці замість формул: пошук відрізка, лінійна інтерполяція в цілих числах, краї таблиці

  • Теорія Таблиця + інтерполяція
  • Практика Термістор NTC
  • Практика Знайдіть помилку — крива газу робота
Модуль 8 — Усунення брязкоту входів 1 урок · 2 практики

Механічні контакти брязкочуть: лічильниковий debounce, події натискання, довге натискання й автоповтор

  • Теорія Debounce
  • Практика Лічильниковий дебаунсер
  • Практика Довге натискання й автоповтор
Модуль 9 — Кінцеві автомати 1 урок · 2 практики · 1 тест

Стани, події, пріоритет правил і таблиця переходів; switch без провалів

  • Теорія Кінцевий автомат у прошивці
  • Практика Автомат зарядного пристрою
  • Практика Знайдіть помилку — кришка вантажного відсіку
  • Тест Інтерполяція, debounce, автомати
Модуль 10 — Черги подій 1 урок · 2 практики

Статична черга з пріоритетами, стабільний порядок, злиття подій «останнього значення»

  • Теорія Події замість прапорців
  • Практика Черга подій з пріоритетами
  • Практика Злиття подій сенсорного хаба
Модуль 11 — Тики таймера та планування 1 урок · 2 практики

Системний тик, програмні таймери без дрейфу, порівняння з переходом через нуль, суперцикл

  • Теорія Час у прошивці
  • Практика Програмні таймери
  • Практика Знайдіть помилку — суперцикл робота
Модуль 12 — Патерни, схожі на ISR (симуляція) 1 урок · 3 практики · 1 тест

Спільні дані з перериваннями: розірване читання лічильника, критична секція, атомарне «взяти й очистити»

  • Теорія Переривання і спільні дані
  • Практика 32-бітний лічильник з двох половин
  • Практика Знайдіть помилку — прапорці радіомодема
  • Практика Огляд коду обробників переривань
  • Тест Час і переривання
Модуль 13 — Статичні пули замість heap 1 урок · 2 практики

Пул блоків фіксованого розміру зі списком вільних, подвійне звільнення, спільні буфери з лічильником посилань

  • Теорія Пам'ять без malloc
  • Практика Пул пакетів телеметрії
  • Практика Знайдіть помилку — спільні буфери пакетів
Модуль 14 — Обробка помилок без винятків 1 урок · 2 практики

Коди помилок, повтори лише для тимчасових збоїв, один шлях прибирання, перша помилка перемагає

  • Теорія Коди помилок і прибирання
  • Практика Запуск датчика вологості
  • Практика Валідатор конфігурації
Модуль 15 — CRC 1 урок · 3 практики · 1 тест

Контрольні суми кадрів: CRC-8 датчика, табличний CRC-16, потоковий CRC-32 образу прошивки

  • Теорія Циклічні контрольні суми
  • Практика CRC-8 датчика вологості
  • Практика Знайдіть помилку — табличний CRC-16
  • Практика Потоковий CRC-32 образу прошивки
  • Тест Пам'ять, помилки, CRC
Модуль 16 — Драйвер віртуального I2C-датчика 1 урок · 2 практики

Транзакції I2C, ACK/NACK, ідентифікація, read-modify-write поля, burst-читання з автоінкрементом

  • Теорія I2C і драйвер датчика
  • Практика Драйвер IMU на I2C
  • Практика Знайдіть помилку — барометр читає сміття
Модуль 17 — Парсер рядків UART 1 урок · 2 практики

Складання речень NMEA з потоку байтів: початок, кінець, переповнення, контрольна сума; сувора перевірка чисел

  • Теорія Від байтів до повідомлень
  • Практика Складання речень GNSS
  • Практика Знайдіть помилку — сервісна консоль
Модуль 18 — ШІМ і коефіцієнт заповнення 1 урок · 3 практики · 1 тест

Дільник і період таймера, off-by-one ARR, заповнення в проміле, обмеження швидкості зміни сигналу

  • Теорія ШІМ на апаратному таймері
  • Практика Налаштування ШІМ-таймера
  • Практика Плавне кермо робота
  • Практика ШІМ для сервоприводу вручну
  • Тест I2C, UART, ШІМ
Модуль 19 — Сторожовий таймер (watchdog) 1 урок · 2 практики

Апаратний watchdog і нагляд за задачами; причина скидання, пам'ять без ініціалізації і захист від циклу перезавантажень

  • Теорія Watchdog, що справді рятує
  • Практика Нагляд за задачами
  • Практика Захист від циклу перезавантажень
Модуль 20 — Фінал: модуль прошивки віртуальної IMU-плати 1 урок · 3 практики · 1 тест

Драйвер, конвеєр телеметрії і монітор справності IMU за інтерфейсами — тестовані без заліза

  • Теорія Прошивка, яку тестують без плати
  • Практика Драйвер IMU через інтерфейс шини
  • Практика Конвеєр телеметрії IMU
  • Практика Монітор справності IMU
  • Тест Підсумковий тест: прошивка IMU-плати

Стек

Які технології використовуються?

  • C++

Код пишете й запускаєте в браузері на платформі — встановлювати нічого не потрібно.

Застосування

Де застосовуються ці знання?

  1. Прошивки мікроконтролерів дронів, роботів і метеостанцій
  2. Драйвери датчиків на шинах I2C і UART
  3. Надійне вбудоване ПЗ без динамічної пам'яті й винятків

Доступ

Як отримати доступ?

  1. Залиште заявку

    Заповніть коротку форму на цій сторінці.

  2. Завершіть реєстрацію в боті

    Після заявки оберіть Telegram або Viber — бот надішле подальші інструкції щодо доступу.

  3. Навчайтеся на платформі

    Уроки, практика й тести — на my.prog.academy, у зручному для вас темпі.

Контакт

Почніть навчання на платформі

Залиште контакти — надішлемо деталі доступу до курсу «C++ для embedded і MilTech».

Наступні й суміжні курси

C++ · Python

Системи реального часу

Планування задач, яке можна довести: утилізація, час відгуку, RM і EDF, інверсія пріоритетів і контроль дедлайнів.

12 модулів · 25+ практичних завдань

Часті питання про курс

Що це за курс?

«C++ для embedded і MilTech» — онлайн-курс за підпискою на навчальній платформі Prog Academy. Прошивка, яку можна перевірити: C++ для мікроконтролерів на віртуальних платах. У кожному дроні, наземному роботі чи метеостанції є мікроконтролер (MCU, microcontroller unit) — мікросхема з процесором, пам'яттю і вбудованими апаратними блоками (периферією). Програма, записана в нього, називається прошивкою (firmware): вона опитує датчики, керує двигунами й передає телеметрію по радіо — без операційної системи, без винятків і без динамічної пам'яті, зате з регістрами, перериваннями й таймерами. Помилки там не падають з гарним повідомленням: вони мовчки втрачають події, переповнюються через 49 днів роботи або ламаються лише на морозі.

Для кого цей курс?

Розробникам, які знають C++ на рівні основ і хочуть перейти в embedded-розробку.

Які знання потрібні перед стартом?

Обов'язково: C++ на рівні безкоштовного курсу «Основи програмування на C++» — змінні, умови, цикли, функції, std::vector Обов'язково: курс «C++ Advanced» — масиви й покажчики, ->, вихідні параметри, рядки в стилі C (strchr, strtol, snprintf), покажчики на функції, static на рівні файлу, класи й інтерфейси, поділ коду на .h і .cpp. Усе це задачі курсу використовують від першого модуля Пояснюємо з нуля: двійковий і шістнадцятковий запис, побітові операції, регістри, шини, периферію Не потрібно: плата, паяльник чи знання електроніки. Компілятор — g++ (C++17, лише стандартна бібліотека), код пишете й запускаєте в браузері

Які практичні завдання будуть?

20 модулів: спершу «мова регістрів» (біти, типи, байти), потім розмова з залізом і зберігання даних, далі поведінка в часі (кнопки, автомати, таймери, переривання) і надійність (помилки, CRC, драйвери шин, ШІМ, watchdog), наприкінці — фінальна плата. У кожному модулі — теорія з прикладом і 2–3 практичні задачі з автоматичною перевіркою на прихованих сценаріях: інші швидкості, переходи лічильника через нуль, від'ємні температури, збої шини. Третина задач — «знайдіть помилку»: код компілюється і навіть працює на прикладі, але містить типовий для embedded дефект. Є тести з поясненнями і практичні форми.

Які технології використовуються?

C++. Код пишете й запускаєте прямо в браузері на платформі — встановлювати нічого не потрібно.

Скільки модулів містить курс?

20 модулів: Біти й маски регістрів; Типи фіксованої ширини та переповнення; Порядок байтів (endianness); Карта пам'яті і мок регістрів; Кільцевий буфер; Фіксована кома: Q15 і Q16.16; Таблиці та інтерполяція; Усунення брязкоту входів; Кінцеві автомати; Черги подій; Тики таймера та планування; Патерни, схожі на ISR (симуляція); Статичні пули замість heap; Обробка помилок без винятків; CRC; Драйвер віртуального I2C-датчика; Парсер рядків UART; ШІМ і коефіцієнт заповнення; Сторожовий таймер (watchdog); Фінал: модуль прошивки віртуальної IMU-плати. Практичних завдань з автоматичною перевіркою — 45+, тестів — 7.

Як отримати доступ?

Залиште заявку на цій сторінці й завершіть реєстрацію в Telegram- або Viber-боті Prog Academy — там ви отримаєте подальші інструкції щодо доступу. Навчання проходить на платформі my.prog.academy у власному темпі.

Чи входить курс у підписку?

Так. Курс входить у підписку на платформі Prog Academy: доступ до всіх курсів за підпискою; ai-помічник з навчання в кожному курсі; усі уроки, домашні завдання та автоматична перевірка; нові курси за підпискою додаються автоматично.

Які сценарії й дані використовуються в курсі?

Усі плати, датчики й сценарії в курсі віртуальні й цивільні: знімальний дрон, наземний робот доставки, метеостанція, наземна станція.

Не знайшли відповідь?

Залиште запитання — підкажемо, чи підходить вам курс і з чого краще почати.