ATMega328P: Полное Руководство — Архитектура, Распиновка, Применение
Микроконтроллеры — мозг современных устройств. ATMega328P — легенда хоббийной электроники: сердце Arduino Uno/Nano, основа тысяч проектов. AVR, 8-бит, RISC, низкое потребление, богатая периферия. Разберем архитектуру, пины, память и сферы применения.
Что такое ATMega328P?
Однокристальный 8-битный микроконтроллер семейства AVR (Microchip/Atmel). Архитектура RISC — большинство инструкций за 1 такт. 131 инструкция, такт до 20 МГц (на Arduino 16 МГц). Потребление: ~0,2 мА/МГц (активный), ~0,1 мкА (Power-down). Работает от 1,8–5,5 В. Корпус DIP-28 / TQFP-32 / QFN-32.
Распиновка (DIP-28)
| Пин | Имя | Функции |
|---|---|---|
| 1 | PC6 (RESET) | Сброс (активный низкий), PCINT14 |
| 2 | PD0 (RXD) | UART RX, PCINT16 |
| 3 | PD1 (TXD) | UART TX, PCINT17 |
| 4 | PD2 (INT0) | Внешнее прерывание 0, PCINT18 |
| 5 | PD3 (INT1/OC2B) | Внешнее прерывание 1, PWM Timer2, PCINT19 |
| 6 | PD4 (T0/XCK) | Timer0 внешний счетчик, USART XCK, PCINT20 |
| 7 | VCC | Питание +1,8…5,5 В |
| 8 | GND | Земля |
| 9 | PB6 (XTAL1/TOSC1) | Кварц 1 / Timer2 асинхр., PCINT6 |
| 10 | PB7 (XTAL2/TOSC2) | Кварц 2, PCINT7 |
| 11 | PD5 (T1/OC0B) | Timer1 вход, PWM Timer0, PCINT21 |
| 12 | PD6 (AIN0/OC0A) | Аналог. компаратор +, PWM Timer0, PCINT22 |
| 13 | PD7 (AIN1) | Аналог. компаратор -, PCINT23 |
| 14 | PB0 (ICP1/CLKO) | Timer1 захват, выход такта, PCINT0 |
| 15 | PB1 (OC1A) | PWM Timer1A, PCINT1 |
| 16 | PB2 (SS/OC1B) | SPI SS, PWM Timer1B, PCINT2 |
| 17 | PB3 (MOSI/OC2A) | SPI MOSI, PWM Timer2A, PCINT3 |
| 18 | PB4 (MISO) | SPI MISO, PCINT4 |
| 19 | PB5 (SCK) | SPI SCK, PCINT5 |
| 20 | AVCC | Питание АЦП (должен быть подключен) |
| 21 | AREF | Опорное напряжение АЦП |
| 22 | GND | Земля (АЦП) |
| 23 | PC0 (ADC0) | АЦП вх.0, PCINT8 |
| 24 | PC1 (ADC1) | АЦП вх.1, PCINT9 |
| 25 | PC2 (ADC2) | АЦП вх.2, PCINT10 |
| 26 | PC3 (ADC3) | АЦП вх.3, PCINT11 |
| 27 | PC4 (ADC4/SDA) | АЦП вх.4, I2C SDA, PCINT12 |
| 28 | PC5 (ADC5/SCL) | АЦП вх.5, I2C SCL, PCINT13 |
Итого: 23 I/O (14 Digital + 6 Analog), 6 PWM (OC0A/B, OC1A/B, OC2A/B), UART, SPI, I2C (TWI), 10-бит АЦП (6 кн.), 2×8-бит + 1×16-бит таймеры, WDT, аналог. компаратор.
Память и тактирование
- Flash: 32 КБ (загрузчик ~0,5–2 КБ).
- SRAM: 2 КБ.
- EEPROM: 1 КБ.
- Тактирование: внешний кварц/резонатор до 20 МГц, встроенный RC 8 МГц (калибруемый), внешний генератор.
- Диапазон температур: -40…+105 °C (индустриальный).
Как использовать
- Программируем через ISP (SPI: MOSI, MISO, SCK, RST, VCC, GND) — программатор USBasp, Arduino as ISP, AVRISP mkII.
- Или через UART-загрузчик (Bootloader) — как в Arduino (RX/TX/RST).
- Среда: Arduino IDE, PlatformIO, Atmel Studio (Microchip Studio), avr-gcc + avrdude.
- Пишем код → компилируем → прошиваем → МК выполняет программу.
Применение
- Arduino Uno, Nano, Pro Mini, Mega (вторичный МК), и клоны.
- Встраиваемые системы: умный дом, автоматизация, вентиляция, полив.
- Управление двигателями, реле, насосами, клапанами.
- Измерительные приборы: мультиметры, осциллографы, логгеры данных.
- Дисплеи, клавиатуры, интерфейсы (I2C, SPI, 1-Wire).
- Блоки питания, зарядки, MPPT-контроллеры.
- Робототехника: балансиры, манипуляторы, дроны (flight controllers на базе 328P).
FAQ
ATMega328 vs ATMega328P — в чем разница?
Архитектура идентична. «P» — Picopower: более низкое потребление, дополнительные режимы сна, другой сигнатура (Device ID). Для Arduino Uno используется 328P. 328 без P — старее, выше ток в спячке.
Можно ли использовать ATMega328P без платы Arduino?
Да. Нужен: МК в DIP-28, кварц 16 МГц + 2 конд. 22 пФ, питание 5 В, конд. развязки 100 нФ, программатор (USBasp ~$3) или другой Arduino как ISP. Схема минимальная — на макетке собирается за 10 мин. Это дешевле и компактнее платы.
Заключение
ATMega328P — идеальный старт в мир AVR/встраиваемых систем. Богатая периферия, огромное комьюнити, дешевые инструменты. Освоив «голый» 328P, вы поймете, как работает Arduino «под капотом», и сможете создавать свои компактные автономные устройства. Вопросы по схемотехнике или прошивке — обращайтесь.
Промышленные технологии
- Эволюция Arduino: CEO Фабио Виоланте о трендах индустрии и будущих инновациях
- Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
- FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
- DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
- Создание пользовательских LED-часов с будильником — видно с 12 метров
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Оптимизированные решения питания для проектов на Arduino
- Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
- Пошаговое руководство: сборка умного четырёхногого робота на Arduino
- Своё рулевое управление (джойстик) для игр на Arduino