Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

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)

ПинИмяФункции
1PC6 (RESET)Сброс (активный низкий), PCINT14
2PD0 (RXD)UART RX, PCINT16
3PD1 (TXD)UART TX, PCINT17
4PD2 (INT0)Внешнее прерывание 0, PCINT18
5PD3 (INT1/OC2B)Внешнее прерывание 1, PWM Timer2, PCINT19
6PD4 (T0/XCK)Timer0 внешний счетчик, USART XCK, PCINT20
7VCCПитание +1,8…5,5 В
8GNDЗемля
9PB6 (XTAL1/TOSC1)Кварц 1 / Timer2 асинхр., PCINT6
10PB7 (XTAL2/TOSC2)Кварц 2, PCINT7
11PD5 (T1/OC0B)Timer1 вход, PWM Timer0, PCINT21
12PD6 (AIN0/OC0A)Аналог. компаратор +, PWM Timer0, PCINT22
13PD7 (AIN1)Аналог. компаратор -, PCINT23
14PB0 (ICP1/CLKO)Timer1 захват, выход такта, PCINT0
15PB1 (OC1A)PWM Timer1A, PCINT1
16PB2 (SS/OC1B)SPI SS, PWM Timer1B, PCINT2
17PB3 (MOSI/OC2A)SPI MOSI, PWM Timer2A, PCINT3
18PB4 (MISO)SPI MISO, PCINT4
19PB5 (SCK)SPI SCK, PCINT5
20AVCCПитание АЦП (должен быть подключен)
21AREFОпорное напряжение АЦП
22GNDЗемля (АЦП)
23PC0 (ADC0)АЦП вх.0, PCINT8
24PC1 (ADC1)АЦП вх.1, PCINT9
25PC2 (ADC2)АЦП вх.2, PCINT10
26PC3 (ADC3)АЦП вх.3, PCINT11
27PC4 (ADC4/SDA)АЦП вх.4, I2C SDA, PCINT12
28PC5 (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, аналог. компаратор.

Память и тактирование

Как использовать

  1. Программируем через ISP (SPI: MOSI, MISO, SCK, RST, VCC, GND) — программатор USBasp, Arduino as ISP, AVRISP mkII.
  2. Или через UART-загрузчик (Bootloader) — как в Arduino (RX/TX/RST).
  3. Среда: Arduino IDE, PlatformIO, Atmel Studio (Microchip Studio), avr-gcc + avrdude.
  4. Пишем код → компилируем → прошиваем → МК выполняет программу.

Применение

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 «под капотом», и сможете создавать свои компактные автономные устройства. Вопросы по схемотехнике или прошивке — обращайтесь.

Промышленные технологии

  1. Эволюция Arduino: CEO Фабио Виоланте о трендах индустрии и будущих инновациях
  2. Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
  3. FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
  4. DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
  5. Создание пользовательских LED-часов с будильником — видно с 12 метров
  6. Find Me: Умный поисковик вещей на Arduino и Bluetooth
  7. Оптимизированные решения питания для проектов на Arduino
  8. Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
  9. Пошаговое руководство: сборка умного четырёхногого робота на Arduino
  10. Своё рулевое управление (джойстик) для игр на Arduino