Микроконтроллер ATmega328P: полное руководство

Содержание

О микроконтроллере 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 Pinout (28-pin PDIP)
ATMEGA328P Pinout (28-pin PDIP)

Пакет ATMEGA328P

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

ATmega328P 28-lead Plastic Dual Inline Package (PDIP)
ATmega328P 28-lead Plastic Dual Inline Package (PDIP)

Блок-схема ATMEGA328P

ATMEGA328P Block Diagram
ATMEGA328P Block Diagram

Как записать загрузчик Arduino на ATMEGA328P?

Приобретенные в Интернете платы разработчика Arduino запрограммированы с помощью BootLoader, поэтому вы можете напрямую использовать Arduino IDE для загрузки программ.

Однако в новом микроконтроллере ATMEGA328P BootLoader отсутствует, поэтому Arduino IDE нельзя использовать для прямой загрузки программы, и программа может быть запрограммирована только через ICSP.

Чтобы использовать Arduino IDE для разработки, нам необходимо самостоятельно запрограммировать BootLoader для MCU.

Необходимые материалы

  • ATmega328P;
  • Кварцевый генератор 16 МГц;
  • 22 пФ конденсатор*2;
  • Резистор 10 кОм;
  • Плата разработчика Arduino (Uno или nano).
Materials for Burning Bootloader to ATmega328P
Materials for Burning Bootloader to ATmega328P

Процесс

  1. Загрузите программу ArduinoISP на Arduino Uno;
  2. Подключение ATmega328P к Arduino Uno;
  3. Запишите BootLoader на ATmega328P;
  4. Протестируйте программу мигания светодиода на ATmega328P.

Шаг 1: Загрузите программу ArduinoISP на Arduino Uno

Подключите плату разработчика Arduino Uno к компьютеру. Найдите и щелкните «Файл>Примеры>ArduinoISP» в программном обеспечении Arduino.

Choose the ArduinoISP Program for Arduino Uno
Choose the ArduinoISP Program for Arduino Uno

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

Define Pin MOSI, Pin MISO and Pin SCK in the ArduinoISP code
Define Pin MOSI, Pin MISO and Pin SCK in the ArduinoISP code

Затем настройки в меню «Инструменты» в IDE будут следующими:

  • Плата: «Arduino Uno»
  • Порт: «COM(Arduino Uno)»
  • Программатор: «Arduino as ISP»
Setting Board, Port, and Programmer for Arduino Uno in Arduino IDE
Setting Board, Port, and Programmer for Arduino Uno in Arduino IDE

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

Upload the ArduinoISP program to Arduino Uno
Upload the ArduinoISP program to Arduino Uno

Шаг 2: Подключение ATmega328P к Arduino Uno

Согласно определению контактов ISP в коде ArduinoISP выше, метод подключения и схема между Arduino и ATmega328P следующие:

ArduinoATmega328P
10PIN1(RESET)
11PIN17(MOSI)
12PIN18(MISO)
13PIN19(SCK)
GNDGND
VCCVCC
Wiring Diagram the ATmega328P to Arduino Uno
Wiring Diagram the ATmega328P to Arduino Uno

Шаг 3: Запись BootLoader на ATmega328P

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

Start to Burn BootLoader on ATmega328P
Start to Burn BootLoader on 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
}

				
			
LED Blinking Test on ATmega328P
LED Blinking Test on ATmega328P

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

Подписаться

Присоединяйтесь к нашему списку подписчиков, чтобы получать ежемесячные обновления блога, новости о технологиях, практические примеры. Мы никогда не будем рассылать спам, и вы можете отказаться от подписки в любое время.

Об авторе

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Поделиться

Рекомендуемый пост

Tags

Нужна помощь?

Прокрутить вверх

Instant Quote