1. Введение: что такое микроконтроллер
Микроконтроллер (МК) — это однокристальная микросхема, объединяющая на одном чипе:
- центральное процессорное ядро (CPU);
- память (программу, данные, настройки);
- периферийные модули ввода‑вывода;
- системные контроллеры (тактования, сброса, питания).
Ключевое отличие от микропроцессора: МК ориентирован на автономное управление устройствами, а не на общую вычислительную нагрузку. Он «зашит» в прибор и работает без внешней оперативной памяти и жёсткого диска.
Области применения:
- бытовая техника (стиральные машины, микроволновки);
- автомобильная электроника (ABS, ЭБУ двигателя);
- промышленная автоматика (ПЛК, датчики);
- IoT‑устройства (умные розетки, сенсоры);
- носимая электроника (фитнес‑трекеры, часы).
2. Ядро микроконтроллера
2.1. Функции ядра
- выполнение машинных инструкций;
- управление потоками данных между памятью и периферией;
- обработка прерываний;
- координация режимов энергосбережения.
2.2. Архитектуры ядер
- RISC (Reduced Instruction Set Computer):
- короткий фиксированный набор команд;
- высокая тактовая частота и производительность на инструкцию;
- примеры: ARM Cortex‑M, AVR, PIC.
- CISC (Complex Instruction Set Computer):
- сложные многобайтовые команды;
- ниже производительность на инструкцию, но компактность кода;
- реже в современных МК.
2.3. Ключевые характеристики
- Разрядность (8, 16, 32 бита) — определяет размер регистров и адресного пространства.
- Тактовая частота (МГц–сотни МГц) — число операций в секунду.
- Набор инструкций (ISA, Instruction Set Architecture) — какие команды поддерживает.
- Конвейеризация — параллельное выполнение нескольких инструкций на разных стадиях.
- Кэши (для 32‑битных МК) — ускорение доступа к часто используемым данным.
2.4. Примеры ядер
- ARM Cortex‑M0/M3/M4/M7 — 32‑бит, RISC, широкое распространение.
- AVR (Atmel/Microchip) — 8‑бит, простая архитектура.
- PIC (Microchip) — 8/16/32‑бит, разнообразная линейка.
- MSP430 (TI) — 16‑бит, ультранизкое энергопотребление.
3. Память микроконтроллера
3.1. Flash‑память (память программ)
Назначение: хранение прошивки (программы), констант, таблиц.
Особенности:
- энергонезависимая (сохраняет данные без питания);
- ограниченное число циклов перезаписи (обычно 10 000–100 000);
- относительно медленная запись (мс на страницу);
- быстрая чтение (на тактовой частоте МК).
Типичные объёмы: от 1 КБ до 2–4 МБ в современных МК.
Организация:
- страницы/секторы для стирания;
- байтовая/словая запись после стирания.
Применение:
- код программы;
- конфигурационные параметры;
- шрифты, изображения (в мультимедийных МК).
3.2. RAM (оперативная память)
Назначение: временное хранение переменных, стека, буферов.
Особенности:
- энергозависимая (теряет данные при отключении питания);
- быстрое чтение/запись (на тактовой частоте);
- неограниченное число циклов чтения/записи.
Типичные объёмы: от 128 Б до 512 КБ–1 МБ.
Организация:
- байтовая адресация;
- иногда разделение на банки для повышения пропускной способности.
Применение:
- локальные переменные функций;
- глобальные данные;
- стековый фрейм (вызовы функций, прерывания);
- входные/выходные буферы (UART, SPI и т. п.).
3.3. EEPROM (электрически стираемая ПЗУ)
Назначение: долговременное хранение настроек, калибровочных коэффициентов, логов.
Особенности:
- энергонезависимая;
- отдельное пространство адресов (часто вне общего адресного пространства);
- число циклов перезаписи — 100 000–1 000 000;
- запись медленнее Flash (десятки мс на байт/страницу);
- чтение сравнимо с RAM.
Типичные объёмы: от 64 Б до 4–16 КБ.
Применение:
- пользовательские настройки (громкость, яркость);
- серийные номера, ключи;
- счётчики наработки, лог ошибок;
- калибровочные коэффициенты датчиков.
3.4. Другие виды памяти (опционально)
- OTP (One‑Time Programmable) — однократно программируемая память для ключей/идентификаторов.
- Backup RAM — RAM с резервным питанием (от батарейки) для хранения данных при отключении основного питания.
- Cache — в 32‑битных МК для ускорения доступа к Flash.
4. Периферийные модули МК
4.1. Таймеры‑счётчики
- Функции: измерение времени, генерация ШИМ, подсчёт импульсов.
- Типы: 8/16/32‑битные, с предделителями, режимами захвата/сравнения.
- Применение: управление двигателями, светодиодами, формирование задержек.
4.2. Интерфейсы ввода‑вывода
- GPIO (General Purpose I/O) — универсальные пины (вход/выход, прерывания).
- UART/USART — последовательная связь (RS‑232, TTL).
- SPI — высокоскоростной синхронный интерфейс (Flash, датчики).
- I²C — двухпроводной интерфейс (датчики, EEPROM).
- USB — подключение к ПК, периферии.
- CAN — промышленная сеть (автомобили, автоматика).
- Ethernet MAC — сетевая связь (в продвинутых МК).
4.3. Аналоговая периферия
- АЦП (ADC) — преобразование аналогового сигнала в цифровой.
- разрядность: 8–16 бит;
- число каналов: 4–16;
- скорость: до 1 Мвыб/с.
- ЦАП (DAC) — обратное преобразование (редко в бюджетных МК).
- Компараторы — сравнение двух аналоговых сигналов.
- Операционные усилители (в некоторых МК) — аналоговая обработка на кристалле.
4.4. Системы тактирования
- Внутренний RC‑генератор — низкая точность, не требует внешних компонентов.
- Внешний кварц — высокая точность (ppm).
- PLL (Phase‑Locked Loop) — умножение частоты для повышения производительности.
- Watchdog oscillator — независимый генератор для сторожевого таймера.
4.5. Системы безопасности и мониторинга
- Сторожевой таймер (Watchdog Timer, WDT) — сброс МК при зависании.
- Детектор пониженного напряжения (BOD, Brown‑Out Detection) — сброс при просадке питания.
- CRC‑модуль — контроль целостности данных.
- Криптографические ускорители (в защищённых МК) — AES, SHA, RSA.
4.6. Энергосберегающие модули
- Режимы сна (Sleep, Stop, Standby) — снижение потребления.
- RTC (Real‑Time Clock) — часы реального времени с низким потреблением.
- Перманентные регистры (backup registers) — сохранение данных в режиме Standby.
4.7. Специализированные модули
- DMA (Direct Memory Access) — пересылка данных без участия CPU.
- CRC/Parity — контроль ошибок.
- Логические блоки (PLA, CCL) — программируемая логика на кристалле.
- Сенсорные контроллеры (для кнопок, слайдеров).
- Графические контроллеры (в МК с дисплеем).
5. Взаимодействие компонентов: пример работы
- Запуск: после сброса CPU начинает выполнять код из Flash.
- Инициализация: ядро настраивает периферию (таймеры, UART, АЦП), RAM, тактирование.
- Основной цикл:
- АЦП оцифровывает сигнал → данные сохраняются в RAM;
- UART принимает команду → ядро обрабатывает и отправляет ответ;
- таймер генерирует ШИМ → управляет мотором.
- Прерывания:
- внешнее событие (нажатие кнопки) → ядро



