Atmel mega328p инструкция на русском языке

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

ATmega328P — микроконтроллер группы AVR

Устройство atmega328p имеет 28 контактов. Его знает большинство владельцев конструктора Arduino, как главный элемент электронного комплекта. Но на самом деле, функционал устройства намного шире, чем применение в этом конструкторе. И это подтверждается в atmega328p datasheet.

Микрочип ATmega328P

Семейство микроконтроллеров AVR, куда входит atmega328p, сегодня широко применяется при конструировании электроники разного уровня. Среди них не только микроконтроллер ATmega328P, но и схожий по характеристикам 8-контактный ATtiny45, имеющий чуть меньше функций.

Микроконтроллер также является основой Arduino Nano — маленькой отладочной платы, очень распространённой в любительской среде программистов. Это устройство — компактное по размеру, но по характеристикам не уступающее всем известной Arduino Uno. Она запросто включается в проекты, где параметры очень важны.

Распиновка atmega328p

Как правило, программирование указанных устройств ведется с помощью SPI — последовательного периферийного интерфейса. Через шину данных идет ряд сигналов:

  • MOSI — вход поступления данных;
  • MISO — выход ее распространения;
  • SCK — синхронизирующий вход.

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

Распиновка ATmega328P

Как выбрать физический программатор под ATmega328P

Для указанного микроконтроллера есть множество подходящий программаторов. Один из них производится той же фирмой, Atmel и разрабатывался профессионалами. Он называется «Atmel-ICE».

По мнению радиолюбителей, это лучший программатор для прошивки AVR и схожих микросхем. Его можно приобрести в интернет-магазинах наподобие AliExpress, по стоимости от 5 тысяч рублей. Устройство выглядит так:

Atmel-ICE

К сожалению, такая версия не по карману простым любителям электроники. Рациональнее — остановить выбор на usb — программаторе AVR Pocket Programmer. Он стоит намного дешевше профессионального Atmel-ICE. На некоторых сайтах его можно приобрести даже за 200 р, правда, без проверки.

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

  1. Резисторы.
  2. Светодиоды.
  3. Стабилитроны.

Конструкция самодельного устройства — проста и доступна. Желательна буферизация сигнальных линий, но она не обязательна. Для нее в схеме должен находиться буфер. К примеру, его роль может сыграть устройство 74AC125. Оно же входит и в фирменную версию. Вместо него можно применить транзистор.

Схема 1

Программатор не функционирует без usb-драйвера. Поэтому, радиолюбители обзаводятся универсальным инсталлятором для Windows (7 и более высоких версий), который помогает устанавливать общие драйвера. Установка драйвера в ОС желательна до того, как физическая схема atmega328p подключится к компьютеру.

img

Среди часто используемых программаторов — stk500 atmega328p.

Как подключать и программировать микроконтроллер

Устройства группы AVR программируют с помощью интерфейса SPI, сигнальным прохождением сквозь 6 участкоа:

  • электропитание;
  • «земля»;
  • сброс;
  • получение данных;
  • передача;
  • синхронизирование.

Чтобы все перечисленные сигналы перемещались через устройства, нужен 1 из 2 стандартных разъемов, с 6 или 10 контактами. Программаторная atmega328p плата соединяется с ними с помощью шлейфа-кабеля. Ее заводской вариант укомплектован всеми возможными дополнениями.

Схема 2

Для работы вместе с программным инструментом используются 2 вида контактных разъемов SPI.

Фирменная плата оборудована переключателем режимов электропитания. При его помещении в положение Power Target, она получает от usb напряжение 5 В. В противном случае, то есть, режиме No Power на контакте нет питания. Второй вариант применяется, чтобы программировать чипы с невысоким напряжением, от 1,8 до 3,3 В.

В каждый контроллер atmega328p для avrdude встраивается технология bootloader atmega328p. Она считается самым рациональным и правильным вариантом программирования. Так как специализированные программные адаптеры и набор знаний — не обязательны, необходимо подключение классического кабеля от ПК к плате и активацию программы.

При предварительной переконфигурации atmega328p nano или обычной, старт микроконтроллера идёт со специализированого адреса, где, как правило, располагается atmega328p old bootloader. Это является условием запуска, определяемым состоянием перемычки извне, которая подключается к ножке atmega328p для Ардуино.

Использование утилиты AVRDUDE

Рассмотрим инструмент для строки команд в системе Windows. Для его применения нужно нажать всего 2 клавиши: Пуск, а затем, выполнить. После этого выясните уровень готовности утилиты следующей командой:avrdude -c usbtiny -p atmega328p.

Эта комбинация помогает выяснить, подключен ли микроконтроллерный программатор к разъему usb. Чипы из других серий, соответственно, проверяются другими командами.

Если программатор подключен правильно, утилита выведет на экран следующее (см. Рисунок):

Скрин 1

Если микроконтроллер изготавливается по стандартам, в нем присутствуют идентификаторы. Он определяется при первом запуске утилиты. AVRDUDE в ходе проверки сканирует идентификатор чипа.

Микросхемные идентификаторы имеют разный вид, согласно типу AVR. В частности, идентификация ATmega328P выглядит как 0x1E950F. Эти символы выводятся в специальное окно. После проверки работоспособности схемы, идет следующий шаг — чтение и запись программного кода посредством утилиты.

Участок памяти чипа, как правило, прошиваемый, является энергозависимой областью, местом для хранения программ (Flash). Прошивка atmega328p производится с помощью комбинации: avrdude c usbtiny p atmega328p U flash:w:test.hex. Имя файла здесь дано только как пример.

Чтобы записать flash-память, потребуется некоторое время, большее, чем для считывания информации atmega328p. Проверка устройства, чтение и запись, в свою очередь, меняют командную строку.

Скрин2

Взгляните на этот рисунок, чтобы увидеть, как читается информация в памяти устройства посредством утилиты. Она помещается в специальное окно.

img

Символ U в команде AVRDUDE для atmega328р — отвечает за просмотр и запись. Им владелец демонстрирует использование atmega328p памяти flash. Эта же опция применяется, чтобы читать информацию в памяти AVR. Приведем пример: в файле test.hex ее можно считать по команде avrdude c usbtiny p atmega328p U flash:r:test.hex:r.

Добавочный символ w указывает на запись, затем, через знак “:” идет имя и местонахождение документа, который и записывается в память.

Работа инструмента возможна лишь с теми документами, у которых есть расширение hex.

Отличия ATmega328 от ATmega328P и ATmega328PU

Обычному пользователю сложно понять, почему маркировка кристаллов отличается, и какой выбрать. Попробуем разобраться:

  1. Для использования в обычных сферах между первыми двумя вариантами — разница небольшая, поэтому возможна взаимозаменяемость.
  2. Энергопотребление ATmega328P — существенно ниже, чем Atmega328. Это описано в параметрических таблицах даташит. О чем это говорит? О том, что при разработке первого варианта применялся более точный технический процесс. Как правило, стоимость этих чипов — выше. У микроконтроллеров категории AVR с низким энергопотреблением, согласно классификации производителя, есть отметка PicoPower. Получается, что для батарейных устройств ATmega328P — выгоднее. В них должны быть использованы контролирующие режимы для уменьшение потребления энергии.
  3. У рассматриваемых вариантов — разные сигнатуры чипов. Поэтому, при использовании программ для их чтения (по аналогии с утилитой avrdude) можно увидеть сообщения об ошибке atmega328p при неправильном указании типа микроконтроллера.
  4. Только Atmega328P может быть оснащен корпусом TQFP32, но не TQFP328. Это зависит от большей толщины кристалла, из-за которой он просто не влезает в данный корпус.
  5. В Atmega328 отсутствует фьюз, блокирующий детектор низкого уровня питания. Во втором варианте данный фьюз присутствует, за счет чего дополнительно снижается потребление энергии и происходит отключение BOD. Наличие такого фьюза возможно только у версий группы picoPower. Их обозначение заканчивается символами 48PA, 88PA, 168 PA, 328 P. То же самое касается фьюзов BODS, BODSE.
  6. Система команд, которые относятся к инструкциям перехода, тоже пусть незначительно, но отличается. При компиляции чипа программы в обоих вариантах — работоспособны.
  7. Буквы PU означают вид кристального корпуса. Это -DIP28 из пластика. В него легко помещается ATmega328, вот и дополняется таким суффиксом. Также варианты корпусов обозначаются буквенными сочетаниям AU, MU.

Можно изготовить Ардуино на основе atmega328p mini. Этот вариант — более простой, чем uno, так как там нет участка USB-to-Serial. Как мы знаем, atmega328p pro mini — это, как правило, вариант atmega328p au. Но для некоторых устройств этот вариант — слишком мал, и туда больше подходит PU.

На основе микроконтроллеров создаётся множество устройств, в том числе, atmega328p тестер-транзистор и контроллер atmega328p nano 3.0.

Led-матрица на основе ATmega328p (самодельный Arduino)

Этот прибор может украсить полку любого пользователя и радиолюбителя.

Составляющие элементы

Сначала нужно собрать все необходимые детали. Нам понадобится:

  1. 7 резисторов с сопротивлением 150 Ом.
  2. 5 конденсаторов (50 В, 1 мкФ ).
  3. Резонатор из кварца (16 МГЦ).
  4. Разъём-гребенка с 18 контактами.
  5. Регистор сдвига с DIP-корпусом.
  6. Микросхемная панель 74ch595 с 16 ножками.
  7. 35 световых диодов (3 В).
  8. Непосредственно микроконтроллер в корпусе DIP.
  9. Плата для монтажа 5*7.

Обзаведитесь флюсом, припоем и паяльником, оптимальными проводами, например, МГТФ.

Регистр сдвига

Принцип действия микросхемы 74ch595 — довольно сложен для понимания. Ее основное предназначение — увеличение числа пинов.

74ch595

В схеме есть несколько основных регулирующих контактов: вывода (DS), определения напряжения на выводе (SH), записи состояния в DC, открытия и закрытия микросхемы путем установки контактов в нужное положение (ST).

Последнее, что нужно узнать, — это код для функционирования микросхемы.

Как подготовить матрицу

Иногда светодиодам не хватает места на плате, и тогда нужна обточка мелкой окантовки. Делайте ее аккуратнее, так как световые диоды — довольно хрупкие элементы.

Не забудьте о конденсаторах! При их отсутствии световые диоды погаснут, что помешает оптимизации устройства.

Резисторов, как уже было указано, в конструкции — 7, но видно только 6, так как 1 расположен напрямую под микросхемой.

Вместо генератора с частотой 16 МГц можно использовать имеющий 24 МГц, для ускорения работы. Но такую корректировку можно сделать только в готовом устройстве. Дело в том, что прошивка ATmega328p на генераторе с большей частотой — невозможна.

Расположение светодиодов таково:»+» к 74ch595, «-» — ATmega328p.

img

После запайки всех составляющих можно перейти к припаиванию проводов. Соедините все контакты со световыми диодами, элементы питания — с генератором, световые диоды — с микросхемой 74ch595.

Конечно, не прошитое устройство мгновенно не заработает, однако, можно попробовать воспользоваться классическим blink Arduino. При определённых условиях — может сработать. При мигании света в 1-м ряду можно считать, что эксперимент удался.

Для возможности влияния микроконтроллера на контакты, нужна их инициализация. В противном случае, актуально было бы использование массива и цикла для сокращения функционального кода.

В устройстве обязательно должна быть динамическая память, при отсутствии которой оно просто зависнет.

Как выбрать источник электропитания

Этот момент нужно учесть в первую очередь. Например, выбрать в качестве электроисточника ноут или персональный компьютер — не лучшая идея. Конечно, кое-как при таких пульсациях конструкция какое-то время поработает, но стабильности не ждите.

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

Не все сетевые варианты здесь подходит, гораздо выгоднее — использование автономного питания. Например, подойдут и литий-ионные аккумуляторы для питания мобильников.

А поскольку, согласно технической инструкции, чтобы контроллер ATmega328p при 16 МГц, нужно напряжение около 5 В, здесь не обойтись без модуля преобразователя, который повышает напряжение.

Introduction: Getting Started With the ATMega328P

In the Internet of Things movement, people across the globe are connecting their stuff – TVs, pets, even houseplants — to the internet and transmitting all sorts of data.

If you’re going to be a part of that movement, or want to dabble in creative prototyping on a budget, it’s important to get to know our little friend:

The ATMega.

The real benefit of using this microcontroller is that it’s only $4 US, whereas many other micro-controllers are 10X that price. It can also be easily programmed in the universal programming language, C++. The ATMega is also equipped with a decent amount of memory for any project.

Photo by Will Carlson.

Step 1: Application for the ATMega

Applications for the ATMega continue to grow across the global tech sphere. Today, it’s mostly used in simple machines to receive, interpret, and output information. You may have seen the ATMega used in small machines like RC cars and robots. It can make them autonomous and allow these devices to get from point A to point B on their own.Thus, for its size and its cost, this is a powerful little device. Jaycon Systems is here to equip you with the know-how to put it to use!

For our demo, we’ll use the basic 5V power supply created by founder and friend, Jay. Above you can see a picture of the circuit.

Step 2: Materials

Step 3: Set-up

The ATMega328P is a microcontroller with 23 IO pins, two 8-bit internal clocks, and 32kB of flash memory.
To begin, notice the notch that indicates the direction of the chip — and the dot that indicates Pin 1. All pins that follow suit are in regular numerical order. If you are having trouble with the layout, check out the ATMega328P Datasheet for more information regarding the connections, and the ATMega’s abilities.

Step 4: Set-up — Continued

Add a wire from Power to Pin 7 (Power) and a wire from Pin 8 to Ground.

Then, add the 0.1µF Ceramic Capacitor to Pin 7 and Ground.

Step 5: Set-up — Continued

Add a LED to the first available row next to Pin 1 that is not already being used by the ATMega.

Add a 330 Ohm Resistor from Pin 1 to Power. Pin 1 is the reset pin.

Then, add another 330 Ohm Resistor from Pin 4 to the row that the LED is connected to.
You have now powered the LED.

Note: The power applied from the Resistor to Pin 1 controls what “LOW” should be so the ATMega doesn’t constantly reset itself. The LED also needs the resistor so the ATMega doesn’t kill the LED.

Step 6: Set-up — Continued

The ATMega’s clock is slow and unreliable because it’s not constant.

Let’s add a crystal clock that will speed it up and make the ATMega more reliable.

Add the Quartz crystal clock to Pins 9 and 10. Then, add a 0.1 µF 50V Ceramic Capacitor from Pin 9 to Ground, and another one from Pin 10 to Ground.

(Note: It’s important to not power the ATMega with the clock already installed unless it has been flashed first.)

Step 7: Set-up — Continued

You now have a working circuit, and need the programmer.

Solder the programming adapter together and place it on the board.

Make sure that you place parts in the correct direction, and be careful handling hot tools.

Step 8: Set-up — Continued

The next step is to wire the programming adapter.
You can take any path to wire it in, as long as you use the correct pins.

Optional: If you are going to power your ATMega with the programming adapter, then wire from the “GND” and “+5V” pins on the adapter, across to the power rails.

Here is the Pin map for wiring the rest of the adapter: 17 to MOSI; RST to 1; 19 to SCK; and 18 to MISO.

The USBTiny has a small switch on it labeled “NO POWER” and “POWER TARGET”.
To power the ATMega from the USBTiny, set it to “POWER TARGET”.
Not interested? Simply set it to “NO POWER” to avoid unintentional destruction.

Step 9: Test the Set-up

Now that we have the board completely built, let’s program it so we can make the LED blink.
Once it blinks, you know that you have properly built the board.

Ready for the next steps?
First, we need to make the ATMega use the clock that was just installed.
Download and install WinAVR from this page.

WinAVR is a full suite with a compiler, programmer, debugger, and more!

Use these for the USBTiny. It will include Programmer’s Notepad, which is what we are going to use to program the ATMega, the AVRDude, and will burn fuses and act as a backup for programming the ATMega.

Find “Run” on your computer, type in “cmd” and click “OK”.

Type “avrdude -c usbtiny -p m328p -B 25 -U lfuse:w:0xFF:m -U hfuse:w:0xDE:m -U efuse:w:0x05:m”

-C identifies the programmer “usbtiny”

-P identifies the chip being programed “m328p” (short for ATMega328p)

-B sets the clock rate. We are setting it to 25 because the current clock is much slower than the clock on the programmer.

-U Is a memory operation, lfuse selects the low fuse, w tells the program to write it, and the hex code (0x##) is the fuse value.

This is repeated for the high fuse and extended fuse.

Step 10: Understanding Hex Codes

Hex codes may look intimidating, but they are really just counting, using an extended list from 0–15, starting with 0–9, and then continuing with a-f (filling the 10–15 places). The 0x in front of each code is how the software knows that it is reading a new value, because it never uses “0x”.

Step 11: Understanding Hex Codes — Continued

What happens if you want to count a number bigger than 15?
Hex, like normal math, just counts up, rounding back to 1 followed by a 0; so 10 means 16, 11 means 17, and so on, like normal counting, but with more digits.

So 0xd3 just says 211, and if you want to say 75, just write 0x4b.

Step 12: Understanding Hex Codes — Continued

This sets the necessary fuses the chip needs for the clock without killing itself. Once it is done, we are going to use Programmer’s Notepad to allow you to do a lot more with the chip than what you can do using Arduino.

Once the fuses have been burned, download and install WinAVR from this page. WinAVR is a full suite with a compiler, programmer, debugger, and more! We will use these for the USBTiny. It will include Programmer’s Notepad, which is what we are going to use to program the ATMega.

Step 13: Code to Blink the LED

Now we are going to create a .c file, which will contain the code that will blink the LED, and a makefile to specify what microcontroller we are using among other things.

Open Programmers Notepad and type in the following code:

#include <avr/io.h> // This contains the definitions of the terms used
#include <util/delay.h> // This contains the definition of delay function
 
void main()
{
DDRD = 0b00000100; // Port D2 (Pin 4 in the ATmega) made output 
PORTD = 0b00000000; // Turn LED off
 
while(1)
{
PORTD = 0b00000100; //Turn LED on
_delay_ms(200); // delay of 200 millisecond
PORTD = 0b00000000; //Turn LED off
_delay_ms(200); // delay of 200 millisecond
}
}

Now save the file as led.c (you can choose a different name if you want as long as it has the .c extension).

It is recommended to create a new folder to save all your WinAVR projects.

For example, we created a folder in the desktop called AVR. The led.c file is then saved inside a folder called LED_blink within the AVR folder.

Step 14: Create the Makefile

The next step is to create the makefile.

Open Mfile and follow these steps:

1. Click MakeFile -> Enable Editing of Makefile. This will allow you to modify the text within the Makefile.

2. Click MakeFile -> Main file name. This will open a small window in which you need to type the name of the file you created using Programmers Notepad without the .c extension. In this example we simply typed led and then clicked OK.

3. Since we are using a 16MHZ Quartz Crystal Clock we need to specify the processor frequency. This is done by changing F_CPU = 8000000 to F_CPU = 16000000 (we are only changing the last F_CPU that does not have a “#.” Leave the other ones as they are).

4. Click MakeFile -> MCU type -> ATMega -> atmega328p. This specifies the microcontroller that we are using.

5. Click MakeFile -> Port -> USB.

6. Scroll to the section” Programming Options (avrdude)” and change AVRDUDE_PROGRAMMER to USBtiny.

7. Save the file in the same folder where you saved the led.c file (Desktop\AVR\LED_Blink). Make sure you don’t change the name of the file (Makefile). Leave it as it is.

Step 15: Make Our LED Blink

Now we can upload the code to make our LED blink. Open the led.c file and do the following:

1.Click Tools -> Make All

2.Click Tools -> Make Clean

3.Click Tools -> Program

You can now disconnect the AVR ICSP Programming Adapter and use the 5V power supply. Your LED should be blinking now, like in the video above.

The command “make all” compiles and checks all the software from the two tabs, while “program” programs the ATMega with the newly compiled software. “Make clean” removes all previously created temporary files. It gets you ready for an entire new compile. This is nice because it allows you to compile the software once, and then program multiple chips, one after the other, without going through the whole process again! Trust me, you will be thankful once you start making bigger programs.

Step 16: Explaining the Code

#include <avr/io.h> declares the appropriate Input/Output definitions. For instance, including this header file allows us to use “DDRD” to set port D as an output.

#include <util/delay.h> declares the basic busy-wait functions. This allows us to use the function _delay_ms() to create a delay in millisecond. The argument of the function states the number of milliseconds that we want to wait.

You may notice a semicolon (;) after every line of code. The semicolon tells the program that this is the end of the command. The reason you need this is because when the program reads it, it doesn’t see multiple lines from when you hit “Enter” or “Space”. Instead, it sees it all as one continuous, massive line of code, so it needs the semicolon to know when to start interpreting a different command.

“while(1)” is a simple way of making a continuous loop. The “while” command repeats everything inside the “{ }” immediately after it as long as the statement in the “( )” is true. Because it has been set to “1”, with no real variables or math, the statement will always be true.

The phrase “PORTD = 0b000000100;” translates into “Turn on Port D, number 2”, which corresponds to pin 4 of our microcontroller as seen in the picture above.

Each bit number represents a pin in a port. As you can see Port D has 8 pins: D0 -D7. So saying “PORTD = 0b00000100” is really this “PORTD = 0bD7D6D5D4D3D2D1D0.” Placing a one in one of the port’s pins drives the pin high, while placing a zero drives the pin low.

Step 17: In Conclusion…..

You may need something smaller, or need something to handle more data; otherwise, the Mega can do anything that your average project would require. It’s rare that anything will overpower the ATMega.

For micro projects, or wearable electronics, turn to the AT Tiny.

If you have any questions about this tutorial, don’t hesitate to post a comment, shoot us an email, or post it in our forum!

When you’re ready to start your project, check Jaycon Systems online store for your component needs. While you’re on our website, check out the other great tutorials we have available, and, if you have not already, the other Instructables on our profile.

Thanks for reading!

Let us know what you create!

ATMEGA328P-AU

Цена из AiPCBA

  • Производитель:

    ATMEL

  • Категория:

    8-Bit Microcontroller IC

  • инкапсуляция

    TQFP-32

  • Описание:

    RISC Microcontroller, 8Bit, FLASH, AVR RISC CPU, 20MHz, CMOS, PQFP32, 7 X 7MM, 1MM HEIGHT, 0.8MM PITCH, GREEN, PLASTIC, MS-026ABA, TQFP-32

  • Руководство по страницам:

Время обновления: 2023-11-27 18:40:07 (UTC+8)

ATMEGA328P-AU Справочное руководство пользователя

Страница:из 68

Скачать это даташит


загружать

Everywhere You Are

®

Qu i c k Re f e R e n c e Gu i d e

February 2009

8-bit Microcontrollers

32-bit Microcontrollers and Application Processors


  • Типовая схема включения
     вкл

    страница 40


  • Применение
     вкл

    страница 44

Нажмите перезагрузить, чтобы исправить ошибку страницы >

ATMEGA328P-AU Даташит PDF


ATMEGA328P-AU Даташит PDF

ATMEL

660 Страницы, 32098 KB


ATMEGA328P-AU Справочное руководство пользователя

ATMEL

68 Страницы, 10013 KB


ATMEGA328P-AU Руководство по программированию

ATMEL

51 Страницы, 719 KB


ATMEGA328P-AU Другие Даташит

ATMEL

442 Страницы, 5292 KB


ATMEGA328P-AU Файл уведомления

ATMEL

12 Страницы, 428 KB


ATMEGA328P-AU Каталог продукции

ATMEL

32 Страницы, 483 KB

ATMEGA328 Даташит PDF

ATMEGA328P-AU

Даташит PDF

ATMEL

RISC Microcontroller, 8Bit, FLASH, AVR RISC CPU, 20MHz, CMOS, PQFP32, 7 X 7MM, 1MM HEIGHT, 0.8MM PITCH, GREEN, PLASTIC, MS-026ABA, TQFP-32

ATMEGA328P-AU

Даташит PDF

Microchip

AVR 32K FLASH 2K SRAM, 1KB EEPROM — 20MHz, TQFP, Ind Temp Green

ATMEGA328P-MU

Даташит PDF

Microchip

AVR 32K FLASH 2K SRAM, 1KB EEPROM — 20MHz, MLF/QFN, IND TEMP, GREEN

ATMEGA328P-PU

Даташит PDF

Microchip

AVR 32K FLASH 2K SRAM, 1KB EEPROM — 20MHz, PDIP, IND TEMP, GREEN

ATMEGA328P-AUR

Даташит PDF

Microchip

AVR 32K FLASH 2K SRAM, 1KB EEPROM — 20MHz, TQFP, IND TEMP, GREEN, T&R

ATMEGA328P-PU

Даташит PDF

ATMEL

8Bit Microcontroller with 4/8/16/32K Bytes In-System Programmable Flash, No. of I/O»s: 23, Program Memory Size: 32KB, EEPROM Memory Size :1.024KB, RAM Memory Size: 2KB, CPU Speed: 20MHz, PDIP-28

ATMEGA328P-MU

Даташит PDF

ATMEL

RISC Microcontroller, 8Bit, FLASH, AVR RISC CPU, 20MHz, CMOS, PQCC32, 5 X 5MM, 1MM HEIGHT, 0.5MM PITCH, GREEN, PLASTIC, MO-220VHHD-2, MLF-32

ATMEGA328-AU

Даташит PDF

Microchip

MCU 8Bit AVR RISC 32KB Flash 2.5V/3.3V/5V 32Pin TQFP Tray

ATMEGA328P-MUR

Даташит PDF

Microchip

AVR 32K FLASH 2K SRAM, 1KB EEPROM — 20MHz, QFN/MLF, IND TEMP, GREEN, T&R

ATMEGA328PB-AU

Даташит PDF

Microchip

AVR 32KBytes Flash, 1KBytes EEPROM, 2KBytes RAM, w — 20MHz, TQFP, IND TEMP, GREEN 5V/ TQFP (A)

Поиск по таблице данных в формате PDF

Поиск

100 миллионов листов данных в формате PDF, обновляйте более 5000 PDF-файлов в день.

Фирмой «Atmel», наряду с огромным ассортиментом чипов, выпускаются микроконтроллеры двух видов, снискавшие особое признание в обществе электронщиков. Микроконтроллер ATmega328P и другой продукт компании «Atmel» – чип ATtiny45. Обе популярных микросхемы несколько отличаются одна от другой. Тем не менее, чтобы запрограммировать микроконтроллер  ATmega328P либо прошить чип ATtiny45 программным кодом, применяется практически одинаковый схематичный и программный подход. Рассмотрим подробнее технические способы: программирование ATmega328P и ATtiny45, а также необходимое для прошивки указанных микроконтроллеров программное обеспечение.

СОДЕРЖИМОЕ ПУБЛИКАЦИИ :

  • 1 Микроконтроллеры ATmega328P и ATtiny45 семейства AVR
    • 1.1 Выбор физических программаторов под AVR микроконтроллеры
  • 2 Подключение микроконтроллера и программирование
    • 2.1 Микроконтроллеры: программирование утилитой AVRDUDE
  • 3 Программирование микроконтроллера ATmega8
    • 3.1 Ресурсы программирования  ATmega8

Программируемый чип ATmega328P представлен 28-контактным микроконтроллером, входящим в семейство AVR. Микроконтроллер хорошо знаком обладателям конструктора «Ардуино», где используется в качестве основного компонента электронного набора.

Однако микроконтроллер ATmega328P способен делать куда больше, чем выжимает из этого чипа популярный электронный конструктор «Arduino». Доказательств тому масса, стоит лишь посмотреть фирменный даташит (datasheet) микроконтроллера ATmega328P.

Mini Nano V3.0

Микроконтроллеры семейства AVR

Микроконтроллеры семейства AVR нашли широчайшее применение в практике конструирования электронных устройств различной сложности. Серия ATMega и ATiny часто выбираются для аппаратного программирования

В тесной связке с «братом по крови» выступает другая микросхема — ATtiny45. Но здесь налицо явная отличительная черта: микроконтроллер ATtiny45 имеет 8-контктный форм-фактор.

Микросхема ATtiny45 обладает многими функциями, присущими AT328P. Однако функциональность ATtiny45 несколько ограничена по причине малого числа контактов ввода-вывода.

Традиционно программирование ATmega328P и ATtiny45 осуществляется через последовательный периферийный интерфейс (SPI). Контактная шина на 3 проводника, плюс «земля». По шине данных следуют сигналы:

  1. Вход приёма данных (MOSI)
  2. Выход передачи данных (MISO)
  3. Вход синхронизации приёма(SCK)

Сигнал SCK (SCLK) генерирует ведущее устройство (программатор). Этим сигналом обеспечивается синхронная приём/передача между ведущим и ведомым устройствами. По сути, интерфейс SPI следует рассматривать «синхронной» коммуникационной шиной.

Выбор физических программаторов под AVR микроконтроллеры

Существует масса программаторов, которыми доступно программировать ATmega328P и ATtiny45. Например, профессиональная разработка «Atmel-ICE» от родной чипам компании «Atmel».

Фирменный программатор считается лучшим из всех, пригодных прошивать AVR и другие микросхемы. На китайском AliExpress можно найти по цене от 5000 руб. и выше.

ARDUINO UNO R3

Программатор AVR Pocket Programmer

AVR Pocket Programmer: 1 — входной интерфейс USB; 2 — ISP коллектор; 3 — выходной интерфейс ISP; 4 — буферные элементы 74АС125; 5 — переключатель режима питания; 6 — основной чип ATtiny 2313

Для любителей-электронщиков этот вариант финансово обременительный. Поэтому логичным видится более простой выбор – USB программатор «AVR Pocket Programmer». Нечто подобное доступно купить, к примеру, здесь. В продаже есть другие, более дешёвые программаторы (от 200 руб.), но не проверенные на практике.

На крайний случай несложно собрать программатор «AVR Pocket Programmer» своими руками. Принципиальная схема устройства построена на чипе ATtiny2313. Внешние элементы – лишь несколько резисторов, стабилитронов, светодиодов.

Elego UNO

Принципиальная схема программатора AVR Pocket Programmer

Принципиальная схема программатора AVR Pocket Programmer — достаточно простая, вполне доступная для сборки устройства программирования своими руками

Сигнальные линии (MICO, MOSI, SCK) желательно (но не обязательно) буферизировать. Поэтому следует дополнить схему буфером, к примеру, использовать микросхему 74AC125.

Такой буфер, кстати, применяется на фирменной сборке. Не исключается и транзисторный вариант буфера.

Для работы схемы программатора потребуется драйвер под USB. Возможно, потребуется также программный продукт Zadig, универсальный инсталлятор под Windows для установки общих драйверов USB (версия под Windows 7 и выше):

  • WinUSB
  • Libusb-Win32
  • Libusb0
  • LibusbK

Прошивка и утилиты для «AVR Pocket Programmer» находятся здесь. Драйвер программатора предпочтительно ставить в систему Windows до подключения физической схемы к ПК.

Подключение микроконтроллера и программирование

Микроконтроллеры AVR программируются через интерфейс SPI посредством маршрутизации сигналов через шесть линий:

  • VCC (напряжение питания),
  • GND (сигнальная земля),
  • RST (программный сброс),
  • MOSI (приём данных),
  • MISO (передача данных),
  • SCK (сигнал синхронизации).

Для маршрутизации всех отмеченных сигналов между устройствами, как правило, используется один из двух стандартизированных разъемов:

  1. 6-контактный разъем (2×3).
  2. 10-контактный разъём (2×5).

Разъёмы соединяются с платой программатора и программируемым устройством через шлейф-кабель. Фирменная плата программатора «AVR Pocket Programmer» комплектуется всеми необходимыми аксессуарами.

ATTINY84A-PU

Контактные разъёмы интерфейса ISP

Два типа контактных разъёмов интерфейса ISP применимы к использованию при работе совместно с инструментом программирования

На фирменной плате программатора присутствует переключатель режима питания. Если переключатель находится в положении «Power Target», плата запитана напряжением 5В от USB.

Иначе, в положении переключателя «No Power», питание на контакте 5В отсутствует. Этот вариант — «No Power», используется для программирования чипов с малым питающим напряжением (3,3В или 1,8В).

Микроконтроллеры: программирование утилитой AVRDUDE

Утилита AVRDUDE — это инструмент для командной строки Windows. Чтобы применить этот инструмент, нужно запустить «командную строку» Windows (Пуск -> Выполнить). Затем рекомендуется проверить готовность утилиты вводом команды:

avrdude -c usbtiny -p atmega328p

Команда предполагает наличие подключенного к системному разъёму программатора микроконтроллера ATmega328P. Для чипа другой серии команда, соответственно, несколько изменится.

Так, для микроконтроллера ATtiny45 строка будет выглядеть следующим набором:

avrdude -c usbtiny -p t45

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

Arduino TE359

Инициализация чипа утилитой avr dude

Стандарты изготовления микроконтроллеров предполагают внедрение идентификаторов. При первом запуске утилита определяет этот идентификатор

Эта базовая команда утилиты позволяет идентифицировать подключенный микроконтроллер AVR. Инструмент AVRDUDE в процессе проверки читает идентификатор чипа.

Идентификаторы программируемых микросхем отличаются в зависимости от типа AVR. Тот же микроконтроллер ATmega328P идентифицируется как 0x1E950F, что и отмечено в окне выдачи.

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

Часть памяти чипа, которая обычно прошивается данными, это Flash — энергонезависимая область, где хранятся программы.

Прошивку Flash-памяти выполнит команда:

avrdude c usbtiny p atmega328p U flash:w:test.hex

или для варианта с ATtiny45:

avrdude c usbtiny p t45 U flash:w:test.hex

Примечание: имя файла «test.hex» только в качестве примера.

Процедура записи Flash-памяти требует некоторого времени. Несколько больше, чем при чтении данных. При этом строка состояния командного терминала всегда изменяется при чтении, записи, проверке устройства.

GPS NEO-6M

Чтение и запись чипа утилитой avrdude

Примерно такой выглядит последовательность чтения записи памяти микроконтроллера утилитой в терминальном окне программного инструмента

Опция «U» команды AVRDUDE управляет чтением и записью памяти микропроцессора. Этой опцией пользователь указывает на работу с флеш-памятью.

Дополнительно символом «w» указывается функция записи и следом через двоеточие указывается имя (и расположение) файла (в примере test.hex), содержимое которого требуется записать в память.

Опция «U» также используется для чтения содержимого памяти AVR. Например, следующая команда позволит считать содержимое памяти чипа AVR и сохранить в файле под названием «test.hex»:

avrdude c usbtiny p atmega328p U flash:r:test.hex:r

или для варианта с ATtiny45:

avrdude c usbtiny p t45 U flash:r:test.hex:r

Инструмент поддерживает работу только с файлами, имеющими расширение «*.hex»!

Прочесть развёрнуто об утилите программирования и применяемых в процессе командах можно на этом блоге.

Программирование микроконтроллера ATmega8

Практика электронщиков (начинающих и уже достаточно опытных) отмечает частое пользование ещё одним чипом из серии AVR, именуемым даташит «ATmega8». Несмотря на приличный «возраст» с момента своего рождения, эта микросхема остаётся не менее популярной, чем упомянутые выше микроконтроллеры.

STM32F103C8T6

Популярный микроконтроллер atmega8

Благодаря этой микросхеме удаётся собирать электронные устройства нередко уникальные по своим техническим возможностям

Форм-фактор: 28-контактный (PDIP) либо 32-контактный (TQFP), причём 23 контакта из 28 – это линии ввода/вывода общего назначения. Для питания микросхемы потребуется стабилизированный источник 5В, а для удобства использования рекомендуется применить колодку (сокет) на 28 контактов.

Чтобы понять азы процедуры программирования, достаточно запрограммировать, например, функцию включения /выключения светодиода. Для решения задачи потребуется присоединить электронный элемент — светодиод, к любому контакту ввода/вывода микроконтроллера ATmega8.

Например, выбрать 28 контакт, обозначенный на схеме «PC5», входящий в 7-контактный набор PC0 — PC6 (порт C). Следует отметить: согласно схеме ATmega8, имеются также другие наборы контактов, имеющих отношение к порту B (PB0-PB7) и порту D (PD0-PD7).

Ресурсы программирования  ATmega8

Нужно подготовить программный код для прошивки микросхемы. Потребуется компилятор языка программирования «C». Соответственно, необходим также программатор под загрузку скомпилированного кода в память микроконтроллера.

В качестве компилятора обычно используется фирменное программное средство «Atmel Studio 7.0» (установщик онлайн). Для прошивки микросхемы ATmega8 опять же удачно выступает утилита AVRDUDE.

AVR-AVR

Компилятор кода С Atmel Studio 7

Заставка фирменного компилятора программного кода от компании «Atmel». Мощное средство, необходимое для создания уникальных дампов

Далее пошаговый процесс программирования можно описать следующим образом:

  1. Запускается компилятор «Atmel Studio 7».
  2. В меню выбрать «Новый проект» (New Project) и далее «AVR GCC».
  3. Затем указать месторасположения сохранения проектного файла.
  4. Перейти «Далее» (Next) и выбрать из списка симуляторов ATmega
  5. Завершить кнопкой «Finish» после чего можно писать программный код.

Первая нитка программного кода:

#include <avr / io.h>

Функция Include включает системную библиотеку в проект, обеспечивая доступ к основным функциям ввода / вывода и макросам.

int main()

Вторая строчка указывает точку входа в программу пользователя. Отсюда программа пользователя стартует.

Дальше необходимо обозначить вывод порта C. В данном случае — «PC5». Для этого используется специальный регистр DDRC:

DDRC = 0x20;

Значение регистра 0x20 задаёт целевую «1» для контакта «PC5», согласно двоичному представлению. Тем самым пользователь открывает действие на активацию контакта «PC5».

Следующий шаг, решение непосредственно поставленной задачи — включение и выключение светодиода исполнением кода. Если нужен бесконечный цикл, решение может быть таким:

Код компиляции составленный в Atmel Studio 7

Простейший программный код для микроконтроллера ATmega8, которые заставляет мерцать подключенный к микросхеме светодиод

Завершающий этап компиляции кода выбор опции меню «Сборка» (Build). В результате «Atmel Studio 7» создаст файл с расширением .hex, с именем, указанным пользователем. Например: «test.hex». Останется только записать программный код в память микроконтроллера с помощью прошивки.


Группа компонентов

AVR

Основные параметры

ЦПУ: Ядро

AVR

ЦПУ: F,МГц

от 0 до 20

Память: Flash,КБайт

32

Память: RAM,КБайт

2

Память: EEPROM,КБайт

1

I/O (макс.),шт.

23

Таймеры: 8-бит,шт

2

Таймеры: 16-бит,шт

1

Таймеры: Каналов ШИМ,шт

6

Таймеры: RTC

Да

Интерфейсы: UART,шт

1

Интерфейсы: SPI,шт

1

Интерфейсы: I2C,шт

1

Аналоговые входы: Разрядов АЦП,бит

10

Аналоговые входы: Каналов АЦП,шт

8

Аналоговые входы: Быстродействие АЦП,kSPS

76.9

Аналоговые входы: Аналоговый компаратор,шт

2

VCC

от 1.8 до 5.5

ICC,мА

40

TA,°C

от -40 до 85

Корпус

PDIP-28

MLF-32

TQFP-32


Datasheet

ATmega48P/V, ATmega88P/V, ATmega168P/V, ATmega328P/V (4.2 Мб), 18.10.2007


Производитель


Где купить

Дистрибуторы

Дилеры

Где купить ещё

    Урок 38

    Atmega 328p Pro Mini

Сегодня мы познакомимся поближе с интересной отладочной платой, выполненной на базе микроконтроллера  Atmega 328p. А наибольший интерес у программистов микроконтроллеров AVR данная плата вызвала тем, что помимо того, что контроллер здесь не слабый, но, самое главное, стоит она сущие копейки. Я, например, приобретал её всего лишь за 2,7 $. В видеоверсии данного урока я описании дам ссылку на распаковку и первоначальное тестирование данной платы, а также и на продавца, у которого я её приобретал.

По данной плате есть немало видеотестов, но почему-то все они практически выполнены с применением в качестве программатора переходника USART, и, самое главное, программирование происходит посредством программы для разработки ПО для плат Arduino.

Мы же пойдём другим путём и применим данную плату уже как полноценную отладочную плату для создания приложений под управлением привычной для нас среды программирования Atmel Studio. Соттветственно, в качестве программатора мы также возьмём привычный нам народный программатор, который мы применяем во всех наших занятиях и подключим его к шине SPI.

Я думаю, будет лишним перечисление всех достоинств контроллера Atmega328p по сравнению с контроллером Atmega 8A. Здесь и оперативной памяти больше и памяти под прошивку больше, и также здесь две шины USART по сравнению с одной в восьмой серии.

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

image01

Теперь подключим программатор Для подключения программатора я спаял вот такой переходничок

image02

Распиновка нашей платы совпадает со стандартом Arduino UNO R3. Приводить я её здесь не буду во избежание нарушения прав. Найти данную распиновку не представляет никаких трудностей. Согласно распиновки разъём к плате подключаем следующим образом:

AVR ISP — ATMEGA328
VCC-VCC
GND-GND
RESET-RST
MOSI-11
MISO-12
SCK-13

Получится вот так

image03

Подключим к разъёму программатор и проверим обнаружение платы. Для этого запустим программу avrdude, выберем там контроллер ATmega328P и нажмем кнопку «чтение». Программатор и контроллер должны будут обнаружиться и должны будут считаться калибровочные ячейки

image07

Также считаем фьюзы, чтобы потом установить подобные в протеусе для корректной работы эмуляции, ну и также для того, какие именно фьюзы надо и куда устанавливать, а то ведь фьюзы — это дело такое… Для этого переходим на закладку «Fuses» и жмем там кнопку «Чтение». После этого фьюзы расставятся так, как они уже выставлены в контроллере

image08

Теперь также подключим для тестирования 10 светодиодов. У меня, как вы знаете из моих уроков, есть 10-диодная матрица. Не забываем про токоограничивающие резисторы. Так как я данную матрицу использую ещё в тестах на контроллерах stm32, в которых граничный ток портов ниже, то резисторы там установлены на 680 ом. Менять я их не стал, светодиоды работают и с ними, возможно только светятся не так ярко, но это не страшно. Вот такая вот плата с матрицей

image04

К отладочной плате светодиоды мы подключим следующим образом (нажмите на картинку для увеличения изображения)

image05_0500

Согласно стандарту Arduino соединения получатся следующие

Светодиоды — отладочная плата

GND — GMD

D1 — 2

D2 — 3

D3 — 4

D4 — 5

D5 — 6

D6 — 7

D7 — A0

D8 — A1

D9 — A2

D10 — A3

Теперь создадим проект в Atmel Studio 7 стандартным образом, выбрав в качестве контроллера Atmega 328P, Назовём проект LIGHTS.

Добавим в файл main.c объявление частоты процессора и библиотеки для задержки

#define F_CPU 16000000L

#include <avr/io.h>

#include <util/delay.h>

В функции main() настроим порты

int main(void)

{

  DDRD |= 0b11111100;

  PORTD &= ~(0b11111100);

  DDRC |= 0b00001111;

  PORTC &= ~(0b00001111);

  while(1)

Также добавим код в бесконечный цикл

while(1)

{

  PORTD |= 0b00000100;

  _delay_ms(100);

  PORTD &= ~(0b00000100);

  PORTD |= 0b00001000;

  _delay_ms(100);

  PORTD &= ~(0b00001000);

  PORTD |= 0b00010000;

  _delay_ms(100);

  PORTD &= ~(0b00010000);

  PORTD |= 0b00100000;

  _delay_ms(100);

  PORTD &= ~(0b00100000);

  PORTD |= 0b01000000;

  _delay_ms(100);

  PORTD &= ~(0b01000000);

  PORTD |= 0b10000000;

  _delay_ms(100);

  PORTD &= ~(0b10000000);

  PORTC |= 0b00000001;

  _delay_ms(100);

  PORTC &= ~(0b00000001);

  PORTC |= 0b00000010;

  _delay_ms(100);

  PORTC &= ~(0b00000010);

  PORTC |= 0b00000100;

  _delay_ms(100);

  PORTC &= ~(0b00000100);

  PORTC |= 0b00001000;

  _delay_ms(100);

  PORTC &= ~(0b00001000);

}

Соберём код, перейдём сначала в протеус. Схему я уже показывал, файл протеуса будет в архиве вместе с проектом для студии. Добавим прошивку в настройики проекта в протеусе и настроим там микроконтроллер следующим образом:

image06

Запустим проект. Огни в матрице должны побежать.

Теперь вернёмся в проект, так как программировать микроконтроллер мы будем опять напрямую из Atmel Studio.

Только для 328-го контроллера мы добавим другую строку в сервис. Зайдём таким же образом, как и на прошлом занятии, в меню в пункт «Сервис -> Новые инструменты». добавим там ещё один пункт, назовем его Atmega 328p, только строчку с параметрами добавим следующую

«-p m328p -c usbasp -P usb -U flash:w:$(ProjectDir)Debug$(TargetName).hex:a»

Добавляем, конечно, без кавычек. Теперь Нажимаем на наш новый пункт Сервис -> Atmega 328p и таким образом контроллер наш должен прошиться, а светодиоды по очереди будут светиться, создавая эффект бегущего огня.

Предыдущий урок Программирование МК AVR Следующий урок

Исходный код

Приобрести плату Atmega 328p Pro Mini можно здесь.

Программатор (продавец надёжный) USBASP USBISP 2.0

Смотреть ВИДЕОУРОК (нажмите на картинку)

AVR Atmega 328p Pro Mini


Post Views:
2 707

Понравилась статья? Поделить с друзьями:

Это тоже интересно:

  • Atrauman ag инструкция по применению
  • Atomy saengmodan hair tonic инструкция
  • Atlant холодильники инструкция по применению
  • Atr 121 инструкция на русском
  • Atomy pure spirulina инструкция по применению

  • Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии