Як влаштована автономна система: погляд програміста
Автономний робот зсередини: сенсори, регулятори, автомат режимів і захисна логіка — у коді, який можна запустити.
MilTech · за підпискою
Прошивка, яку можна перевірити: C++ для мікроконтролерів на віртуальних платах
Отримати доступ до курсу
Курс за підпискою · Навчання у власному темпі
Про курс
У кожному дроні, наземному роботі чи метеостанції є мікроконтролер (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.
Не потрібно знати заздалегідь
Двійковий і шістнадцятковий запис, побітові операції, регістри, шини, периферію
Плата, паяльник чи знання електроніки.
Якщо цих знань ще немає — пройдіть курси за порядком:
Результат
працювати з бітами й полями регістрів, типами фіксованої ширини, переповненням і порядком байтів
писати драйвери через мок регістрів: опитування статусу, прапорці, що скидаються записом одиниці, 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». Помічник знає матеріали саме цього курсу й урок, на якому ви зараз, тому відповідає по темі й показує, у яких уроках про це йдеться.
Не зрозуміли урок з першого разу — попросіть пояснити простіше або дати ще один приклад.
Застрягли — підкаже, з чого почати, і допоможе знайти помилку у вашому рішенні. Готового рішення не дає.
Запитайте, де пояснювали поняття, — і отримаєте посилання на потрібні уроки курсу.
Уточнюйте без повторів: помічник пам’ятає розмову, а нещодавні розмови курсу зберігаються.
Входить у кожен тариф оплаченої підписки — Basic і Premium. У Premium ліміти використання AI-помічника вищі — ним можна користуватися активніше. Це помічник у навчанні, а не генератор готових відповідей: він пояснює й підказує, а завдання ви розв’язуєте самі.
Програма
20 модулів, 45+ практичних завдань з автоматичною перевіркою і 7 тестів. Відкрийте модуль, щоб побачити всі теми.
Регістр — це набір бітів і полів. Встановити, скинути, прочитати поле, не зачепивши сусідів
uint16_t, int32_t і що з ними робить integer promotion. Переповнення таймера, акумулятора й команди двигуна
Little-endian і big-endian у кадрах датчиків і логах плат; знакове розширення 24-бітних значень
Периферія за адресами, опитування статусу з повторним читанням, W1C-прапорці і тестування драйвера без плати
FIFO фіксованого розміру без динамічної пам'яті: індекси, повнота, переповнення і вільні лічильники
Дробові числа без FPU: масштаб, округлення, насичення і переповнення проміжного добутку
Калібрувальні таблиці замість формул: пошук відрізка, лінійна інтерполяція в цілих числах, краї таблиці
Механічні контакти брязкочуть: лічильниковий debounce, події натискання, довге натискання й автоповтор
Стани, події, пріоритет правил і таблиця переходів; switch без провалів
Статична черга з пріоритетами, стабільний порядок, злиття подій «останнього значення»
Системний тик, програмні таймери без дрейфу, порівняння з переходом через нуль, суперцикл
Спільні дані з перериваннями: розірване читання лічильника, критична секція, атомарне «взяти й очистити»
Пул блоків фіксованого розміру зі списком вільних, подвійне звільнення, спільні буфери з лічильником посилань
Коди помилок, повтори лише для тимчасових збоїв, один шлях прибирання, перша помилка перемагає
Контрольні суми кадрів: CRC-8 датчика, табличний CRC-16, потоковий CRC-32 образу прошивки
Транзакції I2C, ACK/NACK, ідентифікація, read-modify-write поля, burst-читання з автоінкрементом
Складання речень NMEA з потоку байтів: початок, кінець, переповнення, контрольна сума; сувора перевірка чисел
Дільник і період таймера, off-by-one ARR, заповнення в проміле, обмеження швидкості зміни сигналу
Апаратний watchdog і нагляд за задачами; причина скидання, пам'ять без ініціалізації і захист від циклу перезавантажень
Драйвер, конвеєр телеметрії і монітор справності IMU за інтерфейсами — тестовані без заліза
Стек
Код пишете й запускаєте в браузері на платформі — встановлювати нічого не потрібно.
Застосування
Доступ
Заповніть коротку форму на цій сторінці.
Після заявки оберіть Telegram або Viber — бот надішле подальші інструкції щодо доступу.
Уроки, практика й тести — на my.prog.academy, у зручному для вас темпі.
Контакт
Залиште контакти — надішлемо деталі доступу до курсу «C++ для embedded і MilTech».
Автономний робот зсередини: сенсори, регулятори, автомат режимів і захисна логіка — у коді, який можна запустити.
Бінарні кадри, контрольні суми CRC, байт-стафінг і декодер наземної станції для MAVLink-подібного формату.
Планування задач, яке можна довести: утилізація, час відгуку, RM і EDF, інверсія пріоритетів і контроль дедлайнів.
Залиште запитання — підкажемо, чи підходить вам курс і з чого краще почати.