Программирование микроконтроллеров AVR с помощью программатора USBASP и Atmel Studio 7.0
Существует несколько способов программирования микроконтроллеров семейства AVR. В данной статье мы рассмотрим один из наиболее популярных в настоящее время способов программирования данных микроконтроллеров – с помощью программатора USBASP v2.0 и программы Atmel Studio 7.0. Хотя на нашем сайте уже есть достаточно подробные статьи про программатор USBASP и программу Atmel Studio 7.0 я все таки решил перевести с иностранного сайта и эту статью – вдруг кто то найдет в ней для себя что то интересное.
В данной статье будут рассмотрены следующие вопросы:
- Установка драйвера USBASP.
- Скачивание и установка Atmel Studio.
- Установка WinAVR для Atmel Studio.
- Установка микроконтроллера Atmega16 с кварцевым генератором и одним светодиодом.
- Создание и загрузка программного кода в Atmega16.
Рассмотрим подробно все эти вопросы. Установку драйвера для программатора USBASP будем рассматривать на примере операционной системы Windows10 – но все сказанное в этом разделе будет справедливо и для других версий Windows.
Установка драйвера для USBASP в Windows 10
Если вы используете интерфейс JTAG, вам может потребоваться установка драйвера для USBASP если он не установился автоматически. Если вы не установите этот драйвер, то вы не сможете найти порт USBASP в программе Atmel Studio. Скачать драйвер USBASP можно по этой ссылке — http://www.mediafire.com/file/z576zrku371qyjs/windows-8-and-windows-10-usbasp-drivers-libusb_1.2.4.0-x86-and-x64-bit.zip/file.
После скачивания драйвера выполните следующую последовательность действий:
1. Распакуйте из архива скачанные файлы и поместите их на рабочий стол.
2. Подсоедините модуль USBASP v2.0 к своему компьютеру.
3. Откройте в Windows диспетчер устройств (Device Manager).
4. Теперь вы можете увидеть подсоединенный USBASP в списке устройств.

5. Кликните правой кнопкой мыши по “USBasp” и выберите “Обновить драйвер (Update Driver)”.

6. Select “Произвести поиск драйвера на своем компьютере (Browse my computer for driver software)”.

7. Найдите в открывшемся окне распакованную папку с драйвером для USBASP и щелкните «Открыть».

8. Если установка драйвера прошла успешно, то вы увидите сообщение примерно такое же как на нижеприведенном рисунке – в этом случае вам уже не нужно выполнять дальнейшие инструкции в этом разделе статьи.

9. Если вы увидите сообщение об ошибке как на приведенном рисунке, то вы в этом случае должны отключить цифровую подпись драйвера.

Чтобы сделать выполните следующие шаги:
— нажмите кнопку Shift и удерживая ее нажатой перезагрузите свой компьютер (кликните Restart в меню Windows пока держите ее нажатой);
— когда ваш компьютер перезагрузится не отпускайте кнопку Shift до тех пор пока не увидите “Advanced Options (Расширенные настройки)” на синем экране;

— отпустите кнопку Shift и кликните на “Startup Settings”;
— кликните на “Troubleshoot (Устранение проблем)”;

— выберите “Advanced Options (Расширенные настройки)”;

— после этого вы увидите на экране список расширенных опций и кнопку “Restart” в правом нижнем углу – кликните на ней;

— подождите пока компьютер снова перезагрузится. После этого вы увидите на экране ряд настроек;
— в открывшемся списке настроек выберите пункт “Disable Driver Signature Enforcement (Отключить цифровую подпись драйвера)”. Чтобы ее выбрать просто нажмите кнопку «7» на вашей клавиатуре (не путать с кнопкой «F7»);

— после нажатия этой кнопки компьютер перезагрузится и цифровая подпись драйвера будет отключена;
— после этого снова выполните шаги 1-8 из данного раздела статьи и драйвер для программатора USBASP будет успешно установлен.
Скачивание и установка Atmel Studio
Выполните следующую последовательность действий:
2. Также вам необходимо скачать приложение WinAVR чтобы иметь возможность загружать программы в микроконтроллер AVR с помощью USBASP.
После этого вам необходимо создать тестовый проект в Atmel Studio 7.0. Для этого выполните нижеследующую последовательность действий.
3. Подсоедините USBASP v2.0 к USB порту вашего компьютера и подождите пока он правильно определится.
4. Откройте Atmel Studio.
5. Выберите пункт меню “File”, в нем “New” и выберите “project”.

6. Теперь назовите ваш проект, выберите место расположения проекта и выберите компилятор “GCC C Executable Project”. Кликните на “Ok” и продолжайте.

7. После этого вам будет необходимо выбрать ваше устройство для программирования. В нашем случае это будет микроконтроллер Atmega16A. Если вы будете программировать другие микроконтроллеры, например, Atmega8, Atmega32, то для их программирования также можно использовать программатор USBASP.

8. После этого для вас будет создан файл main.c, где вы можете писать ваш программный код.
Но после создания проекта финальный шаг, который вам необходимо выполнить – это установить внешние инструментальные средства (WinAVR).
Установка WinAVR в Atmel Studio
1. В пункте меню “Tools (Инструменты)” выберите “External Tools (Внешние инструменты)”.

2. У вас откроется окно, где вы должны будете ввести имя вашего инструментального средства.
3. В пункте “Title (название)” введите имя вашего внешнего инструментального средства. Можно выбрать любое имя, но в рассматриваемом примере мы выбрали имя “USBasp”. Поставьте галочку в пункте ”Use Output Window” и снимите галочку с пункта “Prompt for arguments” как показано на нижеприведенном рисунке.
4. Теперь ведите “Command”. Там будет необходимо указать путь к “avrdude.exe” – его вы можете найти в папке где установлена WinAvr. Просто найдите “WinAVR-20100110” на диске “C” вашего компьютера – куда вы устанавливали WinAvr.
5. Введите аргументы. Это самый важный шаг в этой последовательности действий поскольку от них будет во многом зависеть корректность работы приложения. Поскольку в рассматриваемом нами случае мы используем внешние инструментальные средства, то можно ввести следующие аргументы:
<avrdude -c usbasp -p atmega8 -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:i>
6. Больше аргументов можно найти по этой ссылке.
7. Введите аргументы в поле для ввода аргументов. Оставьте поле “Initial directory (Начальный директорий)” без изменений.

8. После заполнения всех полей нажмите “Apply” и затем “Ok”.
В результате этих шагов вы сможете использовать внешние инструментальные средства чтобы загружать программы в микроконтроллер. Проверим это с помощью тестового проекта (программы) “blink.c”. Файл main.c вы можете найти в конце этой статьи. Теперь скопируйте main.c в Atmel studio.
Схема устройства с мигающим светодиодом для Atmega16
Схема устройства, которую необходимо собрать, приведена на следующем рисунке. Соедините кварцевый генератор и светодиод с микроконтроллером Atmega16.

Внешний вид макетной платы в этом случае будет выглядеть следующим образом:

Также вы должны соединить микроконтроллер и USBASP как показано на следующей схеме:

Компоновка и загрузка программного кода в Atmega16
1. Сохраните файл main.c.
2. Подсоедините светодиод к контакту PORTA0 микроконтроллера Atmega16 как было показано на вышеприведенном рисунке.
3. Выберите пункт меню “Build” и затем выберите “Build Blink”.

4. Если программа не содержит ошибок, то вы увидите сообщение как на представленном рисунке.

5. Теперь выберите пункт меню “Tools” и выберите в ней созданные внешние инструментальные средства. В нашем случае это будет “USBasp”. Кликните по нему.

6. Если после этого вы увидите сообщение об успешности операции (как показано на рисунке ниже), то значит вы успешно загрузили программу в микроконтроллер. Если вы получили сообщение об ошибке, то проверьте правильность выполнения всех предыдущих шагов, а также проверьте исправность соединительных проводов между USBASP и Atmega16.

7. Вы успешно загрузили тестовую программу с мигающим светодиодом в микроконтроллер используя USBASP v2.0 and Atmel Studio 7.0 и можете увидеть как мигает светодиод в собранной схеме. Теперь вы можете аналогичным образом загружать в микроконтроллер любые другие программы.
Использование программатора USBASP в Atmel Studio

Программатор USBASP является на сегодняшний день самым дешевым программатором микроконтроллеров AVR компании ATMEL и позволяет программировать большое множество микроконтроллеров серий AVR ATTiny, AVR ATMega и других. В данной статье я расскажу вам об основных особенностях использования этого программатора из под ОС Windows 7 и как настроить его работу совместно со средой разработки программ Atmel Studio на примере версии 6.1. К сожалению, по умолчанию, Atmel Studio не поддерживает этот программатор.
Установка драйвера программатора
В первую очередь необходимо установить драйвер для программатора. Мы не будем подробно описывать процедуру установки драйвера, так как тут не должно возникнуть каких либо трудностей. После установки драйвера подключенный программатор отображается в диспетчере устройств Windows как устройство USBasp.

Установка Avrdude
Для программирования микроконтроллеров AVR будем использовать программу Avrdude. Эта программа поддерживает большое количество программаторов, в том числе и USBASP. Этой программе посвящена отдельная страница в википедии.
Программа avrdude является консольной и запускается из командной строки. Для выполнения программирования ей передается набор параметров, определяющий настройки. Ниже приведен пример командной строки для программирования контроллера при помощи программатора USBASP:
Поясним основные параметры:
- -c usbasp параметр определяет тип программатора, в нашем случае это usbasp;
- -p atmega32 параметр определяет тип микроконтроллера, для примера использован ATmega32;
- -U flash:w:myhexfile.hex параметр определяет hex файл для записи в контроллер. Файл должен располагаться либо в каталоге программы, либо необходимо указать полный путь к файлу;
- -U lfuse:w:0x6a:m параметр определяет младший байт регистра Fuse;
- -U hfuse:w:0xff:m параметр определяет старший байт регистра Fuse;
Регистры Fuse используются для настройки режима работы микроконтроллера и для их определения обратитесь к документации соответствующего контроллера. Хочу предупредить, что некорректная установка режима контроллера через регистры Fuse может привести к невозможности дальнейшего программирования контроллера, по этому, внимательно изучите документацию. Если вы не хотите изменять регистр Fuse, вы можете не передавать эти параметры при программировании, в этом случае регистр Fuse останется в том же состоянии, что и до программирования.
Avrdude имеет много разных функций, но в рамках данной статьи нам важен один режим ее работы, а именно заливка программы в микроконтроллер. Остальные функции вы сможете изучить в документации.
Настройка программирования из Atmel Studio
Как уже было упомянуто, Atmel Studio не поддерживает программатор USBASP. Однако в нее встроен механизм для запуска внешних программ для выполнения различных действий. Используя данный механизм внешних инструментов, программирование контроллера будет осуществляться одной кнопкой прямо из меню Atmel Studio.
В Atmel Studio открываем пункт меню Tools и выбираем пункт External tools.
В открывшемся окне настройки инструментов нажимаем кнопку Add для добавления нового инструмента. Заполняем следующие поля:
- Title: произвольное имя инструмента, мы указали USBASP atmega32.
- Command: файл запуска программы avrdude. Мы указали C:AVRDUDEavrdude.exe, так как у нас она размещена в каталогеAVRDUDE на диске С.
- Arguments: параметры запуска для avrdude, которые мы рассмотрели выше. Мы задали строку -c usbasp -p atmega32 -U flash:w:$(TargetName).hex, в которой указали имя программатора, имя контроллера, и путь к файлу прошивки. Путь к файлу указан через специальные макросы и Atmel Studio подставит их сама. Мы не указали регистр Fuse в этом примере, но при необходимости вы можете добавить их самостоятельно.
- Initial directory: указан макрос для подстановки каталога, в котором находится файл прошивки.
- Use Output window: установите эту галочку для того, что бы результат работы программы показывался в окне Atmel Studio. Послу установки всех настроек нажмите кнопку OK для сохранения настроек и выхода.
Теперь, для программирования микроконтроллера достаточно зайти в меню Tools и нажать команду USBASP atmega32, которая там должна появиться после проделанных настроек. Программирование необходимо запускать после компиляции проекта, так как файл прошивки создается в процессе компиляции проекта.

Подключение программатора к микроконтроллеру
Программатор USBASP подключается к микроконтроллеру по стандартному интерфейсу ISP. Физически на программаторе интерфейс имеет 10 контактов. Большинство контактов объединены общим проводом. Назначение используемых контактов следующее:
- MISO, MOSI, SCK, RESET — подключается к соответствующему выводу микроконтроллера;
- GND – земля, подключается к мину или GND микроконтроллера;
- VCC – используется для подачи питания на микроконтроллер.
На печатных платах модулей, где используются контроллеры AVR, разработчики очень часто располагают интерфейс SPI 6 контактов, позволяющий произвести внутрисхемное программирование контроллера. Такой интерфейс можно видеть даже на платах Arduino. Для подключения программатора к такому 6-и контактному интерфейсу можно использовать соединительные провода мама-мама или специальный переходник ISP10 в ISP6 для программатора AVR USBASP.
Microcontroller Firmware Programming Upload with ATMEL Studio
ATMEL microcontroller is quite a popular microcontroller among the younger generation of hardware programmers due to the popularity of the Arduino IDE platform. Arduino is a higher level programming platform base on ATMEL microcontroller series. While Arduino is a very simple to use firmware programming platform for a beginner, it can be quite challenging for advanced programmer who wants absolute precision control over their software algorithm.
The popularity of Arduino results in a community of programmers sharing Arduino related information. Programmers can easily find support and resources relating to Arduino. However, the issue is that lesser programmers are now using ATMEL studio to program their ATMEL microcontroller. The resources for ATMEL studio is accurately very limited at this point in time. This is unlike the competing Microchip series microcontroller where its documentation is a lot much better than ATMEL. Now that Microchip has acquired ATMEL microcontroller business, we can expect the documentation to improve over time.
The purpose of this web page is to assist those who are new to the ATMEL Studio platform, to guide them to upload their source code (or microcontroller machine hex code) into their ATMEL microcontroller.
Things That You Need To Prepare
- Your ATMEL microcontroller
- ATMEL Studio
- Programmer tool for ATMEL microcontroller
- An adaptor board or breadboard for your microcontroller
- Wires for connection
- Firmware (a hex code file *.hex)
ATMEL Microcontroller
In this example, we are using a very simple microcontroller chip ATtiny44A from ATMEL.
The following are the pinout for the microcontroller ATtiny44A (SOIC IC package)

Please take note of the pins that are highlighted in green. These are the ISP programming pins on your microcontrollers. They will be connected to a programmer tool so that your firmware can be uploaded into the microcontroller chip.
The same 6 pins for ISP programming will be located at a different pin location for other ATMEL microcontroller chip part number. The firmware upload process is similar for other ATMEL microcontrollers part number. We just need to take note of the ISP pins of the particular ATMEL microcontroller.
The following are the ISP pins on a ATtiny44A microcontroller.
ISP Programming Pins for ATtiny44A Microcontroller
- MISO – Pin 08
- Vcc – Pin 01 (for powering up your microcontroller)
- SCK – Pin 09
- MOSI – Pin 07
- RESET – Pin 04
- Gnd – Pin 14 (for powering up your microcontroller)
The connection of these ISP pins to the programmer tools will be presented in the next few sections.
ATMEL Studio
ATMEL Studio is a free IDE (integrated development environment) software for development work on ATMEL microcontroller. You can write your firmware using C Programming or Assembly Language here, compile your source code into a *.hex code and download the *.hex code into your microcontroller through this integrated software platform.
Programmer Tool
A programmer tools helps you to connect your computer to your microcontroller chip. It is used for uploading the *.hex code into your microcontroller.
There are a number of programmer tools which allows your to upload your firmware. In this example, we are using the AVR-ISP-MK2 programming tool from OLIMEX.
Other commonly known programming tools available are ATMEL ICE and USBasp AVR.
Please take note of the programmer tool pin out on their IDC connector header pins. This will be needed in the subsequent section for connection between the programmer and the microcontroller chip.
AVR-ISP-MK2 Programming Tool

Can be used for both ATMEL Studio or Arduino IDE, but need to change firmware which is very troublesome and problematic.
AVR-ISP-MK2 programmer pin out.

Arduino ISP Programming Tool
For illustration only. Not for use with ATMEL Studio.
Used for Arduino IDE


Arduino ISP programmer pin out. (Arduino ICSP pinout)

ATMEL ICE Programming Tool

ATMEL ICE programmer pin out.

USBasp AVR Programmer

USBasp AVR programmer pin out.

Adaptor for Microcontroller IC Chip
Most microcontroller chip nowadays are commonly in a surface mount package. The SMD package for ATtiny44A microcontroller is SOIC14. In order to program this SOIC14 chip, an adaptor may be needed. The following are some adaptor that you can purchase for your firmware programming.
If your circuit design has already incorporate the ISP programming pins into your PCB layout design, then you do not need to use programming adaptor socket. You just need to solder the microcontroller directly into your PCB board and download your firmware via the onboard dedicated ISP pins using an ISP programmer.

Purchase this programming adaptor test socket (SOIC14) for ATtiny44A microcontroller from dhgate.com.

Purchase this programming adaptor test socket (SOIC14) for ATtiny microcontroller from tindie.
Wires Connection
In order for the firmware (*.hex code) to be uploaded to your microcontroller you will need to connect the ISP programmer pins to the respective pins on your microcontroller.
The following is a simple schematic to connect the ISP programming pins (IDC 10 pins header) to the ATtiny44A microcontroller.

Please note that you will need a pull-up resistor of about 10KΩ between the VCC and the RESET pins.
The following section will be using the ATMEL Studio software to help us check if our hardware connection is done correctly.
Firmware
In this instruction guide, we assume that you already have a *.hex firmware available for uploading into the ATtiny44A microcontroller.
A *.hex file is generated after your project is compiled and built from your C Programming or Assembly language source code.
Device Programming

1) Atmel Studio IDE Software
Open up the Atmel Studio IDE (Integrated Development Environment) software.
To upload a firmware to the microcontroller, open the Device Programming tools.
Under the AtmelStudio’s menu, select the menu “Tools”->”Device Programming”.

2) Device Programming Dialog
A dialog box will pops up like the one on the left.
Under the “Tool” section, select the programming tools that you got for your ATMEL microcontroller.
In this example, we are using the AVR-ISP-MK2 programmer tool from OLIMEX, so we have selected AVRISP mkII.

3) Selecting Your Programmer
Please ensure that your USB programmer tool is plugged to your computer. If you did not connect it to your computer, it will not appear in this “Tool” section. If you plugged in the tool, the name of the tool should reflect immediately (real-time) on this drop down menu. The name will be removed immediately when you unplug out your tool.
If your programmer tool is not listed in this dialog box, it could be the device is not installed correctly, or a wrong driver is installed. In this case, you may have to go back to your ATMEL programmer tool supplier for further assistance.
Always refer back to your programmer tool’s provider for the setting up of the tool. Different programmer tool may have a different configuration that is needed to be set up before it can upload firmware into your microcontroller chip successfully.

4) Select Your Microcontroller
Next. Under the “Device” drop down box, select the device “ATtiny44A” which is the microcontroller which you will be uploading the firmware to.
Keep the options “ISP” under the “Interface” menu.
Once this is done, click on the button “Apply”.
If your connection between your ISP programmer and your microcontroller is done correct, you will see a 6 digit hex code under the menu “Device signature”. In our example, we are using the ATtiny44A microcontroller. If the connection between your programmer and the ATtiny44A microcontroller is correct, you will see the text “0x1E9207” for the device signature. This is a unique ID for an ATtiny44A microcontroller.
If an error message appeared after clicking on the button “Apply”, it means that there is probably a problem with the connection. Check to confirm if the connection is wired correctly. Check if the wire is broken or if there is any wire shorted to another line. You will also need to ensure that there is a Vcc voltage of 5.0V or 3.3V on your microcontroller pin 1 and pin 14. If the microcontroller is not supplied with power, the same error message may appear as well.

5) Upload Your Firmware to the Microcontroller
On the left-hand side of the list, select the option “Memories”. The right side of the Device Programming window will be similar to this screenshot.
Under the Flash section, click on the button “…” to select the firmware file (*.hex) from your computer system that you want to upload to your microcontroller. In this example, we are loading a filename “myFirmware.hex”.
You should check the box for the options as in this screenshot example. These settings are typical, though not very important if you forgot to select.
Click on the button “Program”. You should start to see a series of messages near the bottom of the dialog box’s screen.
The following is probably what you will see,
Erasing device… OK
Programming Flash… OK
Verifying Flash… OK
These messages indicate that your firmware is successfully uploaded into your microcontroller. You can disconnect the programmer or power off to remove the chip for further testing or use it for your production.
If an error message is encountered, repeat the checking procedure again as mentioned earlier to ensure that the programmer tool is connected correctly to your microcontroller.
Lock and Protect the firmware for ATMEL Microcontroller
There will be times you will want to prevent others from copying your source code out from your microcontroller. Most of the microcontroller have code protection bits which you can enable. Once the code protection bits are enabled, the code will not be able to be read from the microcontroller.
You will still be able to overwrite the microcontroller with new codes. After loading in the new codes, you will need to re-enable the protection bits again to lock your codes.

1) Reading from a Normal Microcontroller
Open up the “Device Programming” dialog box from the ATMEL Studio IDE. Assuming you have just upload your firmware onto the microcontroller. We are now going to read the machine code from the microcontroller.
Connect up your programmers to your microcontroller as usual. Go to the section on “Memories”, the same section where you upload your firmware to the microcontroller.
To read from the microcontroller, click on the button “Read”.
A dialog box will appear asking you for a new file name for this read file. For this example we name the file as “Document.hex”, then click Ok.
The programmer will proceed to read the microcontroller and save the machine codes onto the file “Document.hex”

2) Code Read Result from a Normal Microcontroller
In this section, we will open the read file to have an idea how the machine codes for the microcontroller look like.
Open the saved file “Document.hex” using the Notepad.exe or other text viewer application on your computer system.
You should be able to see a long list of hex numbers similar to this example shown on the left.
You don’t have to know anything about the code. Just remember that they looks like a random chunck of numbers/letters inside the file.

3) Set Code Protection to the Microcontroller
Next step, we are going to set a protection on the microcontroller to prevent others from reading the machine code. Proceed to the section on “Lock bits” as illustrated on the left.
Above the button “Copy to clipboard”, there is a field name “LOCKBIT”. On the right side is a text box where you can key in a value.
The default value may be 0xFF. Change that to 0xFC. 0xFC is the settings of LOCKBIT for the locking of the program’s memory inside the ATMEL44A microcontroller. The details can be found on section 19.1, pg 159 of the ATmega44a datasheet. Please note that 0xFC only works for ATMEL44A microcontroller. For other ATMEL microcontroller, this LOCKBIT code may be different. You will have to read the datasheet for the correct settings.
After changing the value to 0xFC, click on the button “Program” so that the programmer can apply this code lock setting onto the microcontroller.
There will be a series of messages which indicates that the setting is done successfully.
Starting operation write registers
Writing register LOCKBIT…OK
Write registers…OK
Starting operation verify registers
Verify register LOCKBIT…OK
Verify registers … OK
Your microcontroller is now code protected. Next, we will have to verify if we are still able to read the machine code from the protected microcontroller.

4) Read Firmware from a Code Protected Microcontroller
This is the same process that we did previously to read out the machine code.
Go to the section “Memories” and click on the button “Read” and save the read machine code in a file.

5) Code Read Result from a Normal Microcontroller
Now that the machine code is read, open up the file to have a look at the read machine code again.
It should look different from the previous read attempt. As illustrated in the left side, you should notice a lot of “F” instead of the random chunk of numbers/letters.
This indicates that the programmer fails to read out the machine code from the microcontroller. You cannot read it because the microcontroller was locked by you.
There is no way to unlock it. You can erase the memory from the microcontroller or overwrite the microcontroller with a new firmware (machine codes).
Please note that when you overwrite the microcontroller with a new firmware, the microcontroller may not be in the lock mode. To ensure your code is protected, you can proceed to the “Lock bits” to do the code protection again.
That ends the instruction for protecting your firmware on an ATMEL microcontroller chip.
C Programming, Compile and Upload Firmware
For C programming. You can open up your project files, and start editing your program, making the necessary changes. After this is done, you can press the button “F5” on your keyboard. The ATMEL Studio will compile the project, generate the *.hex file and upload the updated firmware to your microcontroller in a single step.
If you encountered errors during the compilation process, you will need to correct it and recompile again. There will be no firmware uploaded if your C programming source code contains error.
Макетирование и программирование ATmega328P и ATtiny45 в Atmel Studio 7
В данной статье мы соберем схемы для программирования двух разных микроконтроллеров Atmel и обсудим необходимые настройки программного обеспечения.
В данной статье будет описано построение двух очень похожих схем: одна для программирования ATmega328P, другая для программирования ATtiny45. В статье приведены полные схемы программирования, а также подробные фотографии макетов на беспаечных макетных платах. Кроме того, также приведено введение в интегрированную среду разработки Atmel Studio 7.
Во-первых, аппаратное обеспечение
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 контактов |
А теперь программное обеспечение
Драйвер программатора AVR Pocket
Драйвер Windows для программатора AVR Pocket – тот же, что используется программатором Adafruit USBTiny. Перейдите на страницу Adafruit и нажмите на ссылку для подписанного драйвера USBtinyISP, созданного с помощью libusb v1.12. Это позволит вам загрузить zip-файл, содержащий два файла installer.exe: один для 32-разрядных систем, второй для 64-разрядных. Дважды кликните по тому, что подходит для вашего компьютера с ОС Windows, и драйвер будет установлен.
Только после установки правильного драйвера Windows вы можете в первый раз подключить программатор AVR Pocket к компьютеру. Вам понадобится кабель USB-A на miniUSB-B. Когда вы подключитесь, загорится синий светодиод PWR и красный светодиод Stat1; два синих светодиода могут также загореться и/или замигать. Windows попытается найти драйвер, при необходимости, вы должны указать Windows расположение правильного драйвера. После правильной установки программатор AVR Pocket появится в диспетчере устройств в устройствах libusb-winXX как "USBtiny"; он не будет перечисляться как COM-порт. Смотрите скриншот ниже:
Программатор AVR Pocket в диспетчере устройств Windows
Atmel Studio 7
Как и многие фирмы-разработчики микроконтроллеров, Atmel имеет собственную интегрированную среду разработки (IDE), которая работает с их аппаратными предложениями: Atmel Studio 7. Хотя это не единственный способ программирования микроконтроллеров Atmel, но это наиболее полнофункциональный способ для Windows 7, 8 и 10 (и для 32-х, и для 64-х разрядных вервий); к сожалению, она не может использоваться с операционными системами Linux и Mac.
Количество опций в Atmel Studio 7 может показаться для нового пользователя огромным. Таким образом, поэтапный подход, представленный в данной статье, значительно упростит процесс знакомства. Начните с загрузки и установки IDE на ваш компьютер. Руководство пользователя Studio 7 и большое количество дополнительной информации также доступны для загрузки.
В Studio 7 включена поддержка нескольких аппаратных программаторов, но точный выбор зависит от того, какой микроконтроллер Atmel вы собираетесь использовать. На скриншоте ниже справа перечислены программаторы, поддерживающие ATmega328P.
Программаторы, поддерживающие ATmega328P
Как вы можете видеть, программатор AVR Pocket отсутствует в списке. Однако его всё еще можно использовать с Studio 7 с помощью программного обеспечения под названием AVRDude.
AVRDude
AVRDude – это утилита командной строки, которая используется для скачивания и загрузки данных с микроконтроллеров Atmel. Существуют версии, доступные и на Linux, и на Windows. На момент написания статьи последняя доступная версия – 6.3; ее можно скачать здесь. Пользователи Windows должны скачать avrdude-6.3-mingw32-zip (нажатие на ссылку запустит скачивание zip-файла!), распаковать файлы и установить AVRDude. Обратите внимание, что установка программы в корневой каталог диска необязательна, но упростит ее использование с Atmel Studio 7. Если доступна версия, более новая, чем 6.3, то вы можете установить ее по своему усмотрению. Руководство пользователя AVRDude доступно здесь.
Чтобы проверить правильность установки и работы AVRDude, выполните следующие действия:
- нажмите кнопку "Пуск" Windows;
- в поле поиска введите cmd и нажмите Enter . Откроется окно командной строки DOS;
- в командной строке перейдите в каталог, в котором установили AVRDude;
- введите avrdude -c USBtiny и нажмите Enter . Если всё хорошо, AVRDude вернет список поддерживаемых устройств Atmel.
Смотрите скриншот ниже для примера процедуры. Обратите внимание, что скриншот был усечен и отображает только часть списка поддерживаемых устройств Atmel.
Список поддерживаемых устройств
Собираем всё вместе
Предположим, что программатор подключен к AVR на вашей макетной плате, как было описано выше, и вы почти готовы запрограммировать ваш AVR микроконтроллер. Для примера воспользуемся простым примером мигания светодиодом.
Теперь следуйте следующим инструкциям:
- Запустите Atmel Studio 7.
- В стартовом окне слева нажмите New Project . Откроется окно нового проекта.
Стартовое окно Atmel Studio 7 - В окне нового проекта нажмите GCC C Executable Project , назовите проект New Blink , как показано выше, и нажмите OK. Откроется окно выбора устройства Device Selection .
Окно выбора устройства Device Selection - В окне выбора устройства выберите AVR устройство, которое вы используете: ATmega328P или ATtiny45, как показано ниже. Нажмите OK. Будет создан новый проект, и будет открыто окно проекта New Blink .
Окно проекта New Blink - Нажмите на меню Tools , выберите External Tools. , и нажмите кнопку Add .
- В поле Title введите название инструмента, которой создаете; хорошо, если название описывает устройство. Например, вы можете ввести комбинацию названия программатора и названия устройства.
- В поле Comand введите путь к месту, куда установили AVRDude, плюс команду для запуска AVRDude.
- В поле Arguments введите одну из двух следующих строк, в зависимости от AVR контроллера, который используете.
Для ATmega328P введите: Для ATtiny45 введите: - В поле Initial directory введите путь к месту, куда установили AVRDude.
- Убедитесь, что поставлена галочка Use Output window , а в двух других чекбоксах галочки не стоят. Состояние окна должно быть похоже на скриншот ниже, но с учетом AVR контроллера, который вы используете.
Окно добавления внешнего инструмента - Нажмите Apply , а затем OK . Окно внешних инструментов должно закрыться.
- Скопируйте код программы, приведенный выше.
- Перейдите к окну New Blink.c в окне Atmel Studio 7 и вставьте в него код, приведенный выше.
Код программы - Если в правом верхнем углу Atmel Studio 7 не открыто окно менеджера проекта Solution Explorer , нажмите на выпадающее меню View и нажмите Solution Explorer . В правом верхнем углу должно появиться окно Solution Explorer .
- Кликните правой кнопкой на main.c и выберите "переименовать". Переименуйте файл main.c в New Blink.c .
- Нажмите на меню File и нажмите Save All .
- Нажмите на меню Build и нажмите Build Solution (собрать проект).
- Нажмите на меню Tools (инструменты) и нажмите на название инструмента, созданного в шагах с 5 по 11. Скомпилированный код New Blink должен будет быть загруже в AVR контроллер на вашей макетной плате, а светодиод LED1 должен начать мигать: ½ секунды включен, ½ секунды выключен, 60 раз в минуту.
Начало
По общему мнению, это был долгий процесс для простого мигания светодиода, но на самом деле вы успешно устранили четыре основных препятствия: создание аппаратной платформы для программирования микроконтроллеров AVR, установка интегрированной среды разработки Atmel Studio 7, интеграция внешней программы AVRDude и определение инструмента программирования для AVR микроконтроллера по вашему выбору. Будьте уверены, что в будущих проектах на AVR микроконтроллерах вам станет легче, что намного веселее.