О микроконтроллере ATMEGA328P
ATmega328P — это 8-разрядный микроконтроллер CMOS с низким энергопотреблением, основанный на усовершенствованной архитектуре AVR RISC. Чип разработан компанией Atmel Corporation (Microchip Technology). Он имеет тактовую частоту 20 МГц, 32 КБ флэш-памяти, 16-разрядный таймер и 23 программируемые линии ввода-вывода. Обычно используется в платах Arduino и других проектах на базе микроконтроллеров.
Особенности ATMEGA328P
- Высокопроизводительный 8-разрядный микроконтроллер AVR с низким энергопотреблением;
- Усовершенствованная архитектура RISC;
- Высокопрочный сегмент энергонезависимой памяти;
- Сброс при включении питания и программируемое обнаружение пониженного напряжения;
- Внутренний калиброванный генератор;
- Внешние и внутренние источники прерываний;
- Шесть режимов сна: простоя, подавления шума АЦП, энергосбережения, выключения, ожидания и расширенного ожидания.
Параметры ATMEGA328P
- Емкость флэш-памяти: 32 КБ
- SRAM: 2 КБ
- Емкость памяти EEPROM: 1 КБ
- Частота тактового генератора: 20 МГц
- Тип интерфейса: I2C, SPI, USART
- Напряжение питания мин.: 1,8 В макс.: 5,5 В
- Напряжение питания Устройства для поверхностного монтажа: Поверхностный монтаж
- Тип корпуса: PDIP/TQFP
- Количество выводов: 28-PDIP, 32-TQFP
- Диапазон рабочих температур: от -40 °C до +85 °C
- Входные/выходные линии: 23
- Количество входов АЦП: 8
- 8-разрядный таймер/счетчик: 2
- 16-разрядный таймер/счетчик: 1
- ШИМ: 6 каналов
- Метод программирования: ISP, IAP, H/PV
- Метод моделирования: debugWIRE
Распиновка ATMEGA328P
Микроконтроллер ATMEGA328P имеет 28 универсальных входных/выходных (GPIO) выводов, каждый из которых может быть сконфигурирован как цифровой вход или выход.

Пакет ATMEGA328P
ATmega328P доступен в различных вариантах корпуса, таких как PDIP (пластиковый двойной линейный корпус), TQFP (тонкий четырехсторонний плоский корпус) и QFN (четырехсторонний плоский корпус без выводов). В контексте микроконтроллера ATmega328P буква «P» обозначает тип корпуса микросхемы. Таким образом, в данном случае «P» конкретно обозначает корпус PDIP.

Блок-схема ATMEGA328P

Как записать загрузчик Arduino на ATMEGA328P?
Приобретенные в Интернете платы разработчика Arduino запрограммированы с помощью BootLoader, поэтому вы можете напрямую использовать Arduino IDE для загрузки программ.
Однако в новом микроконтроллере ATMEGA328P BootLoader отсутствует, поэтому Arduino IDE нельзя использовать для прямой загрузки программы, и программа может быть запрограммирована только через ICSP.
Чтобы использовать Arduino IDE для разработки, нам необходимо самостоятельно запрограммировать BootLoader для MCU.
Необходимые материалы
- ATmega328P;
- Кварцевый генератор 16 МГц;
- 22 пФ конденсатор*2;
- Резистор 10 кОм;
- Плата разработчика Arduino (Uno или nano).

Процесс
- Загрузите программу ArduinoISP на Arduino Uno;
- Подключение ATmega328P к Arduino Uno;
- Запишите BootLoader на ATmega328P;
- Протестируйте программу мигания светодиода на ATmega328P.
Шаг 1: Загрузите программу ArduinoISP на Arduino Uno
Подключите плату разработчика Arduino Uno к компьютеру. Найдите и щелкните «Файл>Примеры>ArduinoISP» в программном обеспечении Arduino.

В коде ArduinoISP можно увидеть, что контакты MOSI, MISO и SCK определены как 11, 12 и 13 соответственно, что соответствует контактам на плате разработчика Arduino Uno.

Затем настройки в меню «Инструменты» в IDE будут следующими:
- Плата: «Arduino Uno»
- Порт: «COM(Arduino Uno)»
- Программатор: «Arduino as ISP»

Нажмите на значок загрузки, и через некоторое время программа ArduinoISP будет загружена на вашу плату разработчика Arduino Uno.

Шаг 2: Подключение ATmega328P к Arduino Uno
Согласно определению контактов ISP в коде ArduinoISP выше, метод подключения и схема между Arduino и ATmega328P следующие:
| Arduino | ATmega328P |
|---|---|
| 10 | PIN1(RESET) |
| 11 | PIN17(MOSI) |
| 12 | PIN18(MISO) |
| 13 | PIN19(SCK) |
| GND | GND |
| VCC | VCC |

Шаг 3: Запись BootLoader на ATmega328P
После завершения подключения между Arduino Uno и ATmega328P необходимо подключить Arduino Uno к компьютеру. Затем нажмите «Tools>Burn Bootloader» (Инструменты>Записать загрузчик), чтобы записать загрузчик на ATmega328P.

Шаг 4: Протестируйте программу мигания светодиода на ATmega328P
Подключите положительный полюс светодиода к PIN2 ATmage328P, а отрицательный полюс к D. PIN2 ATmega328P соответствует PD0, поэтому в коде он обозначается как «0».
const int LED_PIN = 2; // Define the LED pin
void setup() {
pinMode(0, OUTPUT); // Set the LED pin as output
}
void loop() {
digitalWrite(0, HIGH); // Turn on the LED
delay(1000); // Wait for one second
digitalWrite(0, LOW); // Turn off the LED
delay(1000); // Wait for one second
}

Как видно на изображении выше, программа мигания светодиодов работает нормально.


