Найти в Дзене
"Разберём на атомы"

ARM, RISC‑V или AVR: что выбрать гику в 2026 году и почему холивары не утихают

Если вы когда‑нибудь заглядывали в мир микроконтроллеров, то наверняка сталкивались с главным вопросом: на чём делать проект?
ARM Cortex‑M, открытый RISC‑V или старый добрый AVR?
Каждый вариант — это не просто чип, а целая философия: от архитектуры ядра до инструментов отладки. Я перерыл тысячи страниц Reference Manual, паял отладочные платы и писал драйверы на уровне регистров. В этой статье — не маркетинг, а взгляд изнутри: что реально важно, когда вы выходите за рамки Arduino и начинаете считать такты. Главное отличие между контроллерами кроется в наборе инструкций (ISA). 🔹 ARM Cortex‑M — фактически стандарт индустрии. Использует технологию Thumb‑2: инструкции бывают 16‑битными и 32‑битными, что позволяет экономить память, но сохранять производительность.
Но настоящая магия — в контроллере прерываний NVIC. Он обрабатывает прерывания аппаратно, без лишних переключений контекста. Если у вас два прерывания подряд, NVIC делает tail‑chaining — просто переходит к следующему обработчику,
Оглавление

Если вы когда‑нибудь заглядывали в мир микроконтроллеров, то наверняка сталкивались с главным вопросом: на чём делать проект?
ARM Cortex‑M, открытый RISC‑V или старый добрый AVR?
Каждый вариант — это не просто чип, а целая философия: от архитектуры ядра до инструментов отладки.

Я перерыл тысячи страниц Reference Manual, паял отладочные платы и писал драйверы на уровне регистров. В этой статье — не маркетинг, а взгляд изнутри: что реально важно, когда вы выходите за рамки Arduino и начинаете считать такты.

1. Что у нас под капотом? Архитектурный ликбез

Главное отличие между контроллерами кроется в наборе инструкций (ISA).

🔹 ARM Cortex‑M — фактически стандарт индустрии. Использует технологию Thumb‑2: инструкции бывают 16‑битными и 32‑битными, что позволяет экономить память, но сохранять производительность.
Но настоящая магия — в контроллере прерываний
NVIC. Он обрабатывает прерывания аппаратно, без лишних переключений контекста. Если у вас два прерывания подряд, NVIC делает tail‑chaining — просто переходит к следующему обработчику, не тратя десятки тактов на сохранение регистров. Для моторов, дронов или любой real‑time задачи это критично.

🔹 RISC‑V — открытая архитектура, набирающая обороты. Её фишка — модульность. Вы сами решаете, нужны ли вам аппаратное умножение (расширение M) или сжатые инструкции (расширение C).
Но есть и обратная сторона: у RISC‑V пока нет единого стандарта на контроллер прерываний. У ARM — NVIC везде одинаков, а у RISC‑V каждый производитель (Espressif, SiFive, Western Digital) реализует свой PLIC. Перенос кода с одного RISC‑V чипа на другой может превратиться в небольшое приключение.

🔹 AVR (например, ATmega328 из Arduino Uno) — классика. Простая архитектура, понятная даже новичку. Но никакого аппаратного DMA, сложных таймеров и глубоких режимов сна. Для протоколов вроде USB или Ethernet придётся писать всё на программном уровне.

2. Периферия, которая решает всё

Гик смотрит не на количество GPIO, а на матрицу мультиплексирования и DMA.

DMA (прямой доступ к памяти) позволяет пересылать данные между периферией и памятью без участия процессора.
На AVR (в классическом ATmega328) DMA нет вообще. Хотите одновременно читать АЦП и отправлять данные в UART? Процессор будет занят этим целиком.

На ARM (STM32) или на новом RP2040 можно настроить DMA так, что он сам, по событию таймера, обновит ШИМ на 4 каналах, перешлёт массив данных в SPI‑дисплей — и всё это в фоновом режиме. Процессор в это время спит в режиме WFI (Wait For Interrupt).
Разница в энергопотреблении и отзывчивости — колоссальная.

Таймеры — тоже не все одинаковы. У ARM есть таймеры с поддержкой квадратурных энкодеров, с генерацией мёртвого времени (dead‑time) для H‑мостов. По сути, это готовый контроллер электродвигателя на борту.

-2

3. Инструментарий: где настоящая боль и настоящая мощь

Настоящий разработчик не ограничивается Arduino IDE. В ход идут Makefile, OpenOCD, JTAG и SWD.

ARM принесла в мир SWD (Serial Wire Debug) — всего два пина для отладки. Это позволяет оставлять отладчик прямо в серийном устройстве, не занимая разъём.

Но самое интересное — это ETM (Embedded Trace Macrocell). Если у вас есть нормальный отладчик (например, Segger J‑Trace), вы можете смотреть трассировку выполнения кода в реальном времени, без остановки ядра. Это единственный способ поймать глюки, которые возникают при включении мощной нагрузки или при сбоях питания.

У AVR ничего подобного нет. Там отладка — это классическое «поставить точку остановки и надеяться».

4. Битва за энергопотребление: IoT на батарейке

Если вы делаете носимую электронику или датчик, который должен работать годами, режимы сна становятся ключевыми.

ARM Cortex‑M предлагает несколько уровней:

  • Sleep — ядро спит, но DMA и периферия работают.
  • Stop — почти всё выключено, но регистры сохраняются. Выход по прерыванию за микросекунды.
  • Standby — ядро полностью отключено, работает только RTC. Ток — единицы микроампер.

У RISC‑V пока всё сильно зависит от вендора. На некоторых чипах переход из глубокого сна может занимать миллисекунды, а периферия в спящем режиме не всегда может работать автономно.

5. Программный стек: HAL, LL или регистры?

В экосистеме STM32 есть два подхода:

  • HAL (Hardware Abstraction Layer) — быстро начать, но код раздутый. Один вызов HAL_UART_Transmit() может тащить за собой сотни байт проверок.
  • LL (Low Layer) — макросы, которые компилируются буквально в одну‑две инструкции. Идеально, когда важна скорость и размер кода.
  • Регистровый доступ — для хардкорщиков, которые открывают Reference Manual на 2000 страниц и пишут *(volatile uint32_t*)0x40020014 |= (1<<3);.

По производительности: Cortex‑M7 (STM32H7) выдает до 2000 CoreMark на мегагерц. AVR — около 0.2 DMIPS на мегагерц. Разница как между гоночным болидом и велосипедом. Но велосипед тоже нужен — для простых задач, где важна предсказуемость и дешевизна.

-3

Что выбрать в итоге?

🔹 AVR — если вы делаете простое устройство, учитесь или хотите полностью контролировать каждый байт без сложных абстракций.
🔹
ARM Cortex‑M — если нужна производительность, детерминированность, богатая периферия (USB, Ethernet, камеры), сложные алгоритмы и вы готовы разобраться в NVIC и DMA.
🔹
RISC‑V — если вы хотите быть на передовой открытой архитектуры, не зависеть от лицензионных отчислений ARM и готовы иногда дописывать драйверы под конкретный чип.

Главный совет: не верьте маркетингу. Смотрите в Reference Manual и считайте такты. А если хотите сделать статью визуально крутой — используйте промты выше, чтобы сгенерировать уникальные иллюстрации в Gemini или любой другой нейросети.

Подписывайтесь на канал, чтобы не пропустить разбор реальных кейсов: как мы проектировали устройство с ultra‑low‑power и что пошло не так на этапе согласования питания.

Если нужно, могу адаптировать под конкретную тематику вашего канала (робототехника, IoT, DIY) или добавить ссылки на полезные утилиты (OpenOCD, CubeMX, PlatformIO).