Datasheet microchip atmega328p-au

Параметры

Parameters / Models ATMEGA328P-15AZ ATMEGA328P-AN ATMEGA328P-ANR ATMEGA328P-AU ATMEGA328P-AUR ATMEGA328P-AURA0 ATMEGA328P-MMH ATMEGA328P-MMHR ATMEGA328P-MMHRA0 ATMEGA328P-MN ATMEGA328P-MNR ATMEGA328P-MU ATMEGA328P-MUR ATMEGA328P-PN ATMEGA328P-PU
# of Comparators 1 1
ADC Input 8 8 8 8 8 8 8 8 8 8 8 8 8
ADC with Computation No No No No No No No No No No No No No
ADCC with Computation No No
Angular Timer No No No No No No No No No No No No No No No
Архитектура 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
CPU 8-bit AVR 8-bit AVR
CPU Type 8-bit AVR 8-bit AVR 8-bit AVR 8-bit AVR 8-bit AVR 8-bit AVR 8-bit AVR 8-bit AVR 8-bit AVR 8-bit AVR 8-bit AVR 8-bit AVR 8-bit AVR
CRC No No No No No No No No No No No No No
CRC/Scan No No
Class B Hardware No No No No No No No No No No No No No
EEPROM / HEF 1024 1024
Emulated EEPROM in Flash 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024
High Voltage Capable No No No No No No No No No No No No No No No
I2C 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Internal Oscillator Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Internal Voltage Reference, Bandgap Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Lead Count 32 32 32 32 32 28 28 32 32 32 32 28 28
Math Accelerator No No No No No No No No No No No No No No No
Max # PWM outputs, including complementary outputs 6 6
Max 16 Bit Digital Timers 1 1
Max 16-Bit Digital Timers 1 1 1 1 1 1 1 1 1 1 1 1 1
Max 8 Bit Digital Timers 2 2
Max 8-Bit Digital Timers 2 2 2 2 2 2 2 2 2 2 2 2 2
Max A/D Resolution, bits 10 10
Max ADC Resolution, Bits 10 10 10 10 10 10 10 10 10 10 10 10 10
Max CPU Speed, МГц 20 20 20 20 20 20 20 20 20 20 20 20 20
Max PWM outputs, including complementary 6 6 6 6 6 6 6 6 6 6 6 6 6
Max. CPU Speed MHz 20 20
Количество компараторов 1 1 1 1 1 1 1 1 1 1 1 1 1
Рабочий диапазон температур, °C от -40 до +85 от -40 до +85
Operation Voltage Max, В 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
Operation Voltage Max.(V) 5.5 5.5
Operation Voltage Min, В 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8
Operation Voltage Min.(V) 1.8 1.8
Package Width 7x7x1mm 7x7x1mm 7x7x1mm 7x7x1mm 7x7x1mm 4x4x1mm 4x4x1mm 5x5x1mm 5x5x1mm 5x5x1mm 5x5x1mm .300in .300in
Peripheral Pin Select, PPS No No
Peripheral Pin Select / Pin Muxing No No No No No No No No No No No No No
Pin count 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
Размер памяти программ, KB 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
RAM, bytes 2048 2048
SPI 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
SRAM, Bytes 2048 2048 2048 2048 2048 2048 2048 2048 2048 2048 2048 2048 2048
Temp Range Max 85 85 85 85 85 85 85 85 85 85 85 85 85
Temp Range Min -40 -40 -40 -40 -40 -40 -40 -40 -40 -40 -40 -40 -40
Temp. Range Max. 85 85
Temp. Range Min. -40 -40
Total # of A/D channels 8 8
UART 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Windowed Watchdog Timer, WWDT No No
Zero Cross detect No No No No No No No No No No No No No No No

Чтение и запись фьюзов Ардуино

avrdude -C ../etc/avrdude.conf -c usbasp -p m328p -U lfuse:r:-:h

  • -c <programmer> — псевдоним используемого программатора, в данном случае usbasp.
  • -p <partno> — тип микроконтроллера. Я считываю фьюзы из Ардуино Уно, в которой установлен микроконтроллер ATmega328p, поэтому в качестве <partno> указано значение m328p.
  • -U <memtype>:r|w|v:<filename> — комплексная опция для указания производимой с памятью операции (чтение. запись, проверка). -U lfuse:r:-:h означает, что требуется прочитать содержимое младшего байта конфигурации и вывести считанное значение на экран в щестнадцатеричном виде.

А вот и результат выполнения приведенной команды:

Если у вас в результате присутствует строка avrdude: warning: cannot set sck period, please check for usbasp  firmware update, то не обращайте на нее внимание. Это всего лишь предупреждение, не ошибка, работе оно не мешает

Если вы всё же хотите от него избавиться, то нужно обновить прошивку USBasp, данная процедура подробно расписана в статье Прошивка USBasp. Как видно из скриншота, значение младшего конфигурационного байта равно 0xff, команда отработала успешно.

Теперь проверим запись фьюзов с использованием USBasp. Я изменю значение дополнительного конфигурационного байта с 0xFF на 0xFD, что приведет к установке порога срабатывания схемы BOD в 2.7В. Команда для Avrdude и результат ее выполнения приведены ниже:

avrdude -C ../etc/avrdude.conf -c usbasp -p m328p -U efuse:w:0xFD:m

Чтение и запись FLASH и EEPROM памяти Ардуино

В приведенных выше примерах команд для Avrdude в качестве параметра <memtype> использовались значения lfuse и efuse для доступа к конфигурационным байтам микроконтроллера. Данный параметр может принимать и другие значения, они приведены ниже:

  • calibration — байты калибровки RC-генератора;
  • eeprom — энергонезависимая память микроконтроллера;
  • efuse — дополнительный конфигурационный бит;
  • flash — FLASH память микроконтроллера;
  • fuse — фьюз-байт для микроконтроллеров с одним fuse-байтом;
  • hfuse — старший fuse-байт;
  • lfuse — младший fuse-байт;
  • lock — байт блокировки (ячейка защиты);
  • signature — три байта что обозначают сигнатуру чипа (device ID);
  • fuseN — байт с фьюзами для ATxmega чипов, N — целое число для каждого фьюза что поддерживается устройством;
  • application — область приложений во Flash памяти для МК ATxmega;
  • apptable — таблица приложений в области Flash памяти для устройств ATxmega;
  • boot — загрузочная область Flash памяти для устройств ATxmega;
  • prodsig — область с производственной сигнатурой (calibration) для устройств ATxmega;
  • usersig — область с пользовательской сигнатурой для устройств ATxmega.

Таким образом, для чтения FLASH Ардуино Уно (микроконтроллера ATmega328p) может быть использована следующая команда:avrdude -C ../etc/avrdude.conf -p m328p -c usbasp -U flash:r:flash_dump.hex:i
Файл с содержимым FLASH памяти микроконтроллера будет создан в каталоге Avrdude. Либо можно прописать в команде полный путь к файлу.
Для записи в FLASH память содержимого файла flash_dump.hex можно использовать команду:avrdude -C ../etc/avrdude.conf -p m328p -c usbasp -U flash:w:flash_dump.hex:i
Чтение EEPROM:avrdude -C ../etc/avrdude.conf -p m328p -c usbasp -U eeprom:r:eeprom_dump.hex:i
Запись EEPROM:avrdude -C ../etc/avrdude.conf -p m328p -c usbasp -U eeprom:w:eeprom_dump.hex:i

Запись загрузчика в Ардуино

Процедуру записи загрузчика я описывал ранее в публикации Arduino as ISP — программатор из Ардуино. Как и в прошлый раз для записи загрузчика мы будем использовать IDE Arduino. Последовательность шагов следующая:

Что такое Arduino? Вы серьезно?

После 2003 года сложно было не услышать что-либо об Arduino; нравятся ли они вам или нет, но эти платы вездесущи. Но что такое Arduino?

Вопреки тому, как многие думают, Arduino не является микроконтроллером, это особый бренд сборок на печатных платах, которые содержат микроконтроллеры. Эти микроконтроллеры – это чаще всего ATmega от компании Atmel (которая сейчас входит в состав Microchip), а одним из наиболее часто используемых ATmega является AT328P. Но не каждый AT328P будет работать на печатной плате Arduino или с Arduino IDE (интегрированной средой разработкой); на скриншоте ниже показано, что произойдет, когда вы попытаетесь загрузить скетч в обычный AT328P, который приобрели в магазине.

Ошибка при попытке загрузить скетч в AT328P

Как можете видеть, загрузка не удалась десять раз, и каждый сбой происходил по одной и той же причине. Несмотря на то, что сообщения об ошибках не указывают на это, ошибки были вызваны тем, что микроконтроллер ATmega не содержал загрузчик Arduino, небольшую часть кода, который говорит микроконтроллеру ATmega, как реагировать на инструкции Arduino IDE. К счастью, код загрузчика может быть загружен на нужные микроконтроллеры ATmega через относительно простой процесс.

Далее следуют пошаговые инструкции по загрузке кода загрузчика Arduino на AT328P-PU с помощью полноценной платы Arduino Uno. По сути, процесс разбивается на четыре части:

  1. сборка схемы загрузчика;
  2. настройка Arduino Uno как ISP (внутрисхемного программатора);
  3. подключение Arduino Uno к схеме загрузчика;
  4. прошивка кода загрузчика.

После успешной загрузки кода загрузчика на AT328P-PU схема загрузчика может быть легко преобразована в схему программирования и эксплуатации микроконтроллера, создав таким образом платформу для разработки со многими возможностями полноценной платы Arduino Uno. В этой статье будут представлены подробности этого процесса.

Распиновка ATmega328P

Прежде чем приступить к рассмотрению обвязки ATmega328P считаю нужным привести описание его выводов. Когда мы работаем с платами Ардуино, то не задумываемся о соответствии физических выводов микроконтроллера используемым в IDE Arduino обозначениям. Когда же речь идет об отдельном микроконтроллере, то под рукой всегда нужно иметь его распиновку. Поэтому советую сохранить ее:

Есть еще один интересный прием — это распечатать номера выводов и наклеить получившуюся шпаргалку на микроконтроллер, как показано на следующем фото. Мелковато, но вполне читабельно. PDF файл для печати можно скачать по этой ссылке.

OCM1C2 – модулятор выходов таймеров

Встроенный модулятор Output Compare Modulator (OCM) позволяет генерировать модулированные сигналы. Он использует выходы блоков сравнения (Output Compare Unit B) двух появившихся в ATmega328PB новых 16-разрядных таймеров/счетчиков Timer/Counter3 и Timer/Counter4, о которых было сказано выше. Когда работа модулятора разрешена, два выхода каналов сравнения образуют модулятор, где один канал служит источником несущей частоты, а другой – модулирующей, как это показано на Рисунке 3.

Рисунок 3. Блок-схема модулятора выходов таймеров.

Выходы блоков сравнения Output Compare 3B и Output Compare 4B совместно используют один вывод порта PD2. Имея более высокий приоритет, выходы блоков сравнения (OC3B и OC4B) переопределяют конфигурацию вывода PD2, заданную битом PORTD2. Когда OC3B и OC4B разрешены одновременно, автоматически разрешается работа модулятора.

Подключение питания

Напряжение питания подается на выводы микроконтроллера VCC и GND и не должно превышать значение, указанное в технической документации. Для ATmega328P верхняя граница рекомендуемого напряжения питания составляет 5,5В, абсолютный максимум — 6В, продолжительная работа при таком напряжении может вывести микроконтроллер из строя.
Для подавления высокочастотных помех в цепи питания рекомендуется устанавливать керамический конденсатор емкостью 0.1мкФ между VCC и GND. Причем располагаться он должен как можно ближе к питающим выводам микроконтроллера для минимизации паразитной индуктивности и сопротивления подводящих проводников.

ATmega328P имеет двойное питание: выводы VCC и GND (выводы 7 и 8) используются для питания цифровых схем микроконтроллера; AVCC и GND (выводы 20 и 22) — для питания аналого-цифрового преобразователя. Даже если вы не собираетесь использовать АЦП, к нему должно быть подведено питание: соедините выводы VCC с AVCC, а цифровую землю с аналоговой. Если же вы планируете использовать АЦП, то в цепь питания следует добавить фильтр для уменьшения помех. Так в даташите рекомендуется соединить AVCC c VCC через индуктивность 10мкГн и с GND через емкость 0.1мкФ. Однако данная рекомендация не выполняется даже в платах Ардуино и вывод AVCC на них просто соединен с VCC.

Рекомендуемая схема подключения питания ATmega328P
при использовании встроенного АЦП

Делаем ISP программатор из Arduno Uno

После двойной проверки схемы прошивки загрузчика, прежде чем подключать ее к Arduino Uno, вы должны настроить Arduino Uno для работы в качестве программатора ISP (In-circuit Serial Programmer, внутрисхемный последовательный программатор). Подключите Arduino Uno к компьютеру и запустите Arduino IDE. Затем выполните шаги, как показано на следующих скриншотах.

  1. Укажите, что подключена обычная плата Arduino Uno.
    Определение платы, подключенной к компьютеру
  2. Укажите назначение платы Arduino Uno как Arduino ISP.
    Назначение режима работы Arduino Uno в качестве ISP программатора
  3. Откройте скетч Arduino ISP.
    Скетч Arduino ISPСкетч Arduino ISP
  4. Загрузите скетч Arduino ISP в Arduino Uno.
    Загружаем скетч Arduino ISP в Arduino Uno
  5. Когда вы увидите сообщение «done uploading» (загрузка завершена), ваша плата Arduino Uno будет готова работать в качестве ISP программатора, и будет способна понимать и отвечать на инструкции от Arduino IDE.
    Arduino Uno готова работать в качестве ISP программатора

Datasheets

Просмотр и загрузка
Datasheet ATmega328/P — Summary

PDF, 407 Кб, Файл опубликован: 10 дек 2016, Страниц: 248-bit AVR Microcontrollers

Выписка из документа

8-bit AVR Microcontrollers ATmega328/P
DATASHEET SUMMARY Introduction
The Atmel picoPower ATmega328/P is a low-power CMOS 8-bit
microcontroller based on the AVR enhanced RISC architecture. By
executing powerful instructions in a single clock cycle, the ATmega328/P
achieves throughputs close to 1MIPS per MHz. This empowers system
designer to optimize the device for power consumption versus processing
speed. Feature
High Performance, Low Power AtmelAVR 8-Bit Microcontroller Family

Advanced RISC Architecture
— 131 Powerful Instructions
— Most Single Clock Cycle Execution
— 32 x 8 General Purpose Working Registers
— Fully Static Operation
— Up to 20 MIPS Throughput at 20MHz
— On-chip 2-cycle Multiplier

High Endurance Non-volatile Memory Segments
— 32KBytes of In-System Self-Programmable Flash program
Memory
— 1KBytes EEPROM
— 2KBytes Internal SRAM

ATmega328/P
AVR Microcontroller with picoPower Technology
Introduction
The picoPower ATmega328/P is a low-power CMOS 8-bit microcontroller based on the AVR enhanced
RISC architecture. By executing powerful instructions in a single clock cycle, the ATmega328/P achieves
throughputs close to 1 MIPS per MHz. This empowers system designers to optimize the device for power
consumption versus processing speed. Feature
High Performance, Low-Power AVR 8-Bit Microcontroller Family
Advanced RISC Architecture

— 131 Powerful instructions
— Most single clock cycle execution
— 32 x 8 General purpose working registers
— Fully static operation
— Up to 20 MIPS throughput at 20 MHz
— On-chip 2-cycle multiplier

High Endurance Nonvolatile Memory Segments
— 32K Bytes of in-system self-programmable Flash program memory
— 1K Bytes EEPROM
— 2K Bytes internal SRAM
— Write/erase cycles: 10,000 Flash/100,000 EEPROM
— Data retention: 20 years at 85°C/100 years at 25°C(1)

ATmega328/P. Datasheet Complete

2

Скачать PDF

2

31 предложений от 16 поставщиков
Плата Arduino Pro Mini на базе микроконтроллера ATmega328, создана на основе открытой архитектуры серии Arduino.Платформа содержит 14 цифровых входов/выходов (6 из…

AliExpressВесь мир Оригинальная плата Atmega328p с кабелем Aurdino Ch340g Smd Подлинная Италия для Uno R3 Arduino 11 ₽ Купить
ТриемаРоссия ATMEGA328P-AU 107 ₽ Купить
GearBestВесь мир ATmega328P Nano V3 Module Improved Version With USB Cable Development Board Geekcreit for Arduino — products that work with official Arduino boards 222 ₽ Купить
ДКО ЭлектронщикРоссия ATMEGA328P-AURMicrochip по запросу Купить

Во-первых, аппаратное обеспечение

ATmega328P – это 28-контактный микроконтроллер от Atmel, один из линейки AVR. Вероятно, он наиболее известен, как наиболее часто используемый микроконтроллер в отладочных платах Arduino, но AT328P способен на гораздо большее, чем то, насколько он используется в Arduino. Если вы хотите увидеть некоторые доказательства этого утверждения, посмотрите на 660-страничное техническое описание.

ATtiny45 – 8-выводный микроконтроллер, который может считаться «младшим братом» ATmega328P. Он обладает многими из тех же функций, но у него не так много контактов ввода/вывода.

Для программирования ATmega328P и ATtiny45 используется последовательный периферийный интерфейс SPI; это трехпроводная (плюс общий провод) шина, состоящая из сигналов «Выход ведущего, вход ведомого» (Master Out, Slave In – MOSI), «Вход ведущего, выход ведомого» (Master In, Slave Out – MISO) и «Тактовый сигнал» (Serial Clock – SCK). Тактовый сигнал генерируется ведущим устройством (мастером) и используется для обеспечения синхронной связи между ведущим и ведомым (или ведомыми); поэтому SPI является «синхронной» шиной связи.

Схемы программирования

Схемы программирования показаны ниже

Обратите внимание, что резистор R2 и LED1 не требуются для программирования, но включены в схемы для тестирования, что будет описано ниже

Схема программирования ATmega328P с помощью AVR Pocket программатораСхема программирования ATtiny45 с помощью AVR Pocket программатора

Выбор программатора

Доступно несколько программаторов, работающих с ATmega328P и ATtiny45; Atmel-ICE находится в верхней части списка, является прекрасным программатором и будет рассмотрен в следующей статье. Пока что у нас есть менее дорогостоящие варианты, и скупым автором статьи использовался программатор Sparkfun AVR Pocket Programmer. Если вы предпочитаете что-то другое, не стесняйтесь выбирать тот, который соответствует вашим предпочтениям и вашему кошельку. Просто убедитесь, что он использует SPI интерфейс, как описано выше, и будьте готовы внести соответствующие изменения в информацию в этой статье.

ВНИМАНИЕ! Обязательно загрузите и установите на компьютер соответствующий драйвер для AVR Pocket Programmer, прежде чем подключать программатор в первый раз. Если Windows будет разрешено установить неправильный драйвер, то это будет сложно исправить

Инструкции для получения драйвера AVR Pocket Programmer приведены ниже.

AVR Pocket Programmer поставляется с шлейфовым кабелем, который должен быть подключен к микроконтроллеру Atmel. Он оснащен тремя разъемами: разъем 2×5 (мама), который вставляется в штырьковый разъем на AVR Pocket Programmer, еще один разъем 2×5 (мама) ниже на кабеле примерно через 23 см (в данной статье не используется), плюс разъем 2×3 (мама) на другом конце кабеля. Распиновка разъемов показана ниже.

Распиновка разъемов на кабеле программатора AVR Pocket Programmer

Сборки схем программирования на макетных платах

На следующих фотографиях показаны сборки схем программирования ATmega328P и ATtiny45 на беспаечных макетных платах. Шесть коротких перемычек используются для подключения необходимых проводов от разъема 2×3 (мама) к соответствующим контактам микроконтроллера на макете

Обратите внимание, что цвета проводов на фотографиях соответствуют обозначениям на схемах

Схема программирования ATmega328P с помощью AVR Pocket программатораСхема программирования ATtiny45 с помощью AVR Pocket программатора

Список комплектующих

Кроме нескольких перемычек, для сборки схемы программирования понадобятся следующие комплектующие.

Перечень элементов
Обозначение элемента Описание
U1 Микросхема, ATmega328P-PU, флеш 32 КБ, DIP-28, 1,8–5,5 В
U1 Микросхема, ATtiny45-PU, флеш 4 КБ, DIP-8, 2,7–5,5 В
R1 Резистор, 10 кОм, 0,25 Вт
R2 Резистор, 470 Ом, 0,25 Вт
LED1 Светодиод, T1 3/4, желтый
C1 Конденсатор керамический, 0,1 мкФ, 50 В
нет Программатор, AVR Pocket, PGM-09825
нет Макетная плата, беспаечная, 400 контактов

Заключение

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

Интересный документ по теме — рекомендации Microchip, которые необходимо соблюдать при проектировании оборудования с использованием микроконтроллеров AVR, ссылка: AN2519 AVR Microcontroller Hardware Design Considerations

Заключение

Увеличенное количество коммуникационных интерфейсов, 10 каналов ШИМ, контроль тактовой частоты и, самое главное, поддержка сенсорного интерфейса QTouch значительно расширяют область применения микроконтроллера ATmega328PB. Это могут быть промышленные системы контроля и управления, драйверы светодиодных светильников, приборы учета, средства домашней автоматизации. Дополнительная информация доступна в техническом описании.

Микроконтроллер ATmega328PB поддерживается основными программными, аппаратными и системными отладочными инструментами, включая Atmel Studio 6 и Atmel Power Debugger. Кроме того, множество примеров, программных библиотек и вспомогательных инструментов доступно пользователям в Atmel Gallery.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector