Winavr руководство на русском

  • 11.01.2011 14:04

  • Родительская категория: Статьи

  • Категория: Программирование
  • Просмотров: 193216

winavr{nomultithumb}По договоренности с редакцией журнала Радиолюбитель публикую ввсе главы из своей полунаписанной ненапечатанной книги.

Задумывалась эта книга как справочное руководство по avr-libc, и большая ее часть состояла из моих собственных переводов оригинальной документации WinAVR, однако потом я пополнил ее кратким введением в язык Си, описанием основ работы с IDE AVR Studio, затем добавил описание различных вспомогательных утилит и, таким образом, получил винегрет, который все издательства отказались печатать.Ну а переделывать все мне было лень…

{ads2}В итоге все написанное публиковалось в течение 2010 и 2011 годов в журнале, а теперь журнальные статьи в виде PDF-файлов я размещаю здесь для всех желающих.

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

{ads1}

Вложения:

Файл Описание Размер файла:
Скачать этот файл (AVR_01-2010.pdf)AVR_01-2010.pdf Предисловие, Основы языка Си (начало) 314 Кб
Скачать этот файл (AVR_02-2010.pdf)AVR_02-2010.pdf Основы Си (продолжение) 299 Кб
Скачать этот файл (AVR_03-2010.pdf)AVR_03-2010.pdf Основы Си (продолжение) 314 Кб
Скачать этот файл (AVR_04-2010.pdf)AVR_04-2010.pdf WinAVR + AVR Studio (Установка, описание интерфейса) 2021 Кб
Скачать этот файл (AVR_05-2010.pdf)AVR_05-2010.pdf AVR Studio (описание интерфейса — продолжение) 1088 Кб
Скачать этот файл (AVR_06-2010.pdf)AVR_06-2010.pdf AVR Studio (работа с проектом) 1347 Кб
Скачать этот файл (AVR_07-2010.pdf)AVR_07-2010.pdf AVR Studio (отладка) 981 Кб
Скачать этот файл (AVR_08-2010.pdf)AVR_08-2010.pdf Обзор дополнительных средств (утилиты, программаторы, отладчики — кратко) 1474 Кб
Скачать этот файл (AVR_09-2010.pdf)AVR_09-2010.pdf AVR-GCC (особенности, файлы, параметры командной строки) 328 Кб
Скачать этот файл (AVR_10-2010.pdf)AVR_10-2010.pdf AVR-LIBC (alloca.h, assert.h, ctype.h, errno.h, inttypes.h, math.h, setjmp.h, stdint.h) 338 Кб
Скачать этот файл (AVR_11-2010.pdf)AVR_11-2010.pdf AVR-LIBC (stdio.h) 385 Кб
Скачать этот файл (AVR_12_2010.pdf)AVR_12_2010.pdf AVR-LIBC (stdlib.h, string.h) 328 Кб
Скачать этот файл (AVR_01_2011.pdf)AVR_01_2011.pdf AVR-LIBC (boot.h, eeprom.h, fuse.h, interrupt.h, pgmspace.h) 301 Кб
Скачать этот файл (AVR_02_2011.pdf)AVR_02_2011.pdf AVR-LIBC (power.h, sfr_defs.h, sleep.h, version.h, atomic.h, crc16.h, wdt.h, delay.h, delay_basic.h, parity.h, setbaud.h) 272 Кб
Скачать этот файл (AVR_03_2011.pdf)AVR_03_2011.pdf Распределение памяти в AVR-GCC 326 Кб
Скачать этот файл (AVR_04_2011.pdf)AVR_04_2011.pdf Ассемблерные модули и вставки 188 Кб
Скачать этот файл (AVR_05_2011.pdf)AVR_05_2011.pdf Ассемблерные модули и вставки (продолжение) 247 Кб

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

Обсудить эту статью на форуме (19 ответов).

Copyright 2019 © simple-devices.ru.
При использовании материалов ссылка на simple-devices.ru обязательна.

Introduction: Getting Started With WinAVR

Dear All. I’m writing this tutorial/instructable to help you get started with the microcontroller programming.

I’m going to explain you the thing right from the scratch, so don’t worry if your are not familiar with any sort of microcontroller programming i.e. embedded coding and if you don’t able to get the exact meaning of what I exactly want to say, you can always put the questions in comment section. So, let’s get started.

What is microcontroller & AVR by Atmel?

Wikipedia says: ‘A microcontroller (sometimes abbreviated µC, uC or MCU) is a small computer on a single integrated circuit containing a processor core, memory, and programmable input/output peripherals.’

Yeah, that’s what it is. It’s a small computer, which can work for you.

Ohkay then, till now we got to know what’s microcontroller. Now, we need to make them work for us. So, the answer is ‘Programming’ them.

About AVR atmel Wikipedia says: The AVR is a modified Harvard architecture 8-bit RISC single-chip microcontroller, which was developed by Atmel in 1996. The AVR was one of the first microcontroller families to use on-chip flash memory for program storage, as opposed to one-time programmable ROM, EPROM, or EEPROM used by other microcontrollers at the time.

What’s programming?

Wikipedia says: Computer programming (often shortened to programming) is a process that leads from an original formulation of a computing problem to executable computer programs.

Oh yeah, pretty confusing, huh?

We can simply say, programming means telling the micro-controller to what to do next or what to do when certain things happen.

So, without further due, let’s get started.

Step 1: Installing WinAVR

So, if you want to start with you should have two things 1. Courage and 2. Executable file.
Yeah I know as you are here you have the first thing.. ;-) for the second step you have to grab the executable file from official sit e of winAVR or directly go here to download from Sourceforge. The latest build that I’ve been following since couple of years is 20100110.

Installing process is very simple just click a couple of next buttons and changing the installation directory if required. By default, it goes to the root of the drive where you have your OS.

The important thing to note here in the screenshot is you have to check whether the «Add Directories to PATH» is checked. This option sets up the system variables.

Step 2: Step 2: Creating First Project

Here I’ll be illustrating the simplest way to get through the WinAVR. The installation of WinAVR installs following program which we will be using to write/compile the code

  1. Programmer’s Notepad — it’s generic notepad with the additional capability of syntax highlighting.
  2. Mfile — it’s the utility to create the Makefile. It’s very important in-case of compiling and programming.
  • The programmer notepad is the environment where you will be writing the code. You are free to choose your own language to write the code but compiling process or method will change. So, now let’s start, the first thing first is you have to create your own folder where you can host your project. I have chosen to use keep it under a folder named AVR located at user home folder.

Creating your first project:

Now name the project whatever you like and hit «Save» to safeguard your project. Now, we have the folder and project both the things, it’s time to add the code to it. To do so, go ahead and click on the file create a new file and then select the type of the language you will be using for the project in my case it is C/C++. The selection of the language helps editor to highlight the syntax.

Adding new file:

As the project is saved and ready to use now you can add the files to the project. You can create new file and dave it via «File menu». These are known as source files. The source files must include the «main.c» which is the file will get compiled. In addition, you can also include/create your own header files. Header files are the supportive to the main.c which fetches following advantages,

  • It helps to organize your code/project.
  • It helps to make the code readable and concise. So, do not end up writing huge codes.
  • Also, it allows you to include the files from multiple projects. And these files can be portable.

Also, remember if you create a new file it won’t get added to the project. You have to do it manually. By right clicking on the project and selecting add file option, locate the file and click open. Shown in the images.

Writing the code:

As this is the tutorial to setup AVR toolchain. I’ll be not focusing on the how to write the code. You can download te whole project or just download the main.c from the attached files.

Step 3: Step 3: Creating Makefile

Creating Make file:

Make file is the file which assists the editor, compiler, and linker. It consists of the file name which is the source file, in this case, it’s «main.c». Also, it holds the information of your microcontroller and programmer you are using and the commands and ports via it is connected to the computer. Precisely it contains the rules for your project to compile. Open the program Mfile located in the start menu under WinAVR folder.

After opening, you will see the window in which you can select the parameters from the drop down menu. For example, I’ll be compiling my project for the atmega16a microcontroller. Here in the Makefile only you can select your source file e.g. «main.c«. Once do the necessary changes you can then «Save As» the modified Makefile into the directory where the main source file is located.

Once you have the files ready you can go ahead and compile the program. To do so you can go to «Tools» option and choose following commands,

  • Make All: Command to compile the code
  • Make Clean: It’s the command to delete all files created during the compiling and linking process
  • Make Program: This is used to burn the program to the microcontroller target.

Happy programming!! That’s all you need to get started with compiling the code for AVR controllers. `

В этом материале вы узнаете, как использовать AVR IDE для создания проектов, базовых схем и программирования ваших цепей.

Содержание

  • Комплектующие
  • Схема
  • Как установить AVR Studio
  • Как установить WINAVR
  • Как подключить USBASP и установить драйвер для Windows
  • Как настроить Atmel Studio 7 и WinAVR
  • Создание первого проекта
  • Заключение

Комплектующие

Микроконтроллеры AVR имеют некоторые преимущества по сравнению с другими аналогичными микросхемами, включая более высокую MIPS и более дружественную архитектуру. В этой статье мы узнаем, как использовать AVR IDE, как создать исполняемый проект, построить базовую схему AVR, а затем запрограммировать ее. Для этого нам понадобится набор компонентов, а также некоторое программное обеспечение.

Оборудование:

  • ATMEGA168 DIP IC x 1
  • Кварцевые резонаторы, кристалл (4-20 МГц) x 1
  • 20 пФ конденсатор x 2
  • 680 резистор x 1
  • 5.6K резистор x 1
  • Светодиод LED x 1
  • Источник 5 В (цепь 7805, плавное регулирование и т.д.) x 1
  • Провода

Программное обеспечение:

  • USBASP
  • WINAVR (20100110)
  • Atmel Studio 7

Схема

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

Схема в этом проекте показывает использование простой цепи регулятора мощности (с использованием 7805), которую обеспечивает устройство ATMEGA 5В, но оказывается, что программатор USBASP обеспечивает приблизительно 3,3 В. Несмотря на это, лучше обеспечить внешнее питание, чтобы USBASP не потреблял слишком много тока из любого USB-порта.

Программатор USBASP, который я купил, также шел с конвертером, который преобразует 10-контактный разъем в более удобный 6-контактный программный разъем. Тем не менее, header использует двухрядный шаг 2,54 мм, что означает, что он не может быть подключен к макету. Чтобы обойти это, я просто подключил разъем к проводам, которые соединяются с различными пинами на макете.

Как установить AVR Studio

Устройства AVR программируются с использованием специально модифицированной Visual Studio 2015 под названием AVR Studio 7, которую можно найти на сайте AVR. Первым шагом в программировании устройств AVR является скачивание установщика (небольшого приложения, которое загружает потом необходимые файлы). После скачивания нужно запустить установщик.

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

На следующей странице спрашивается какую архитектуру вы хотите установить. Поскольку наш материал охватывает только устройства из диапазона 8-битных микроконтроллеров AVR, то это будет единственная выбранная опция. Однако, если у вас приличная скорость загрузки (у меня всего 4 Мбит/с), тогда выбор всех опций может пригодиться в будущем.

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

Следующая страница просто проверяет ваш компьютер на наличие потенциальных проблем, таких как отложенный перезапуск (из-за обновления), или если система не сможет запустить IDE. Если все проверено и ОК, жмите «Далее».

Если вы уже установили более раннюю версию AVR IDE, вы можете увидеть следующее окно. Если это так, просто нажмите «Установить».

Теперь нужно подождать пока IDE загрузит все необходимые компоненты и установит их.

После этого вам будет предложено запустить Atmel Studio 7.0. Убедитесь, что стоит галочка перед закрытием окна установки.

Как установить WINAVR

Хотя Atmel Studio 7 полезная штука для написания кода, она не самый лучший выбор, когда речь идет о программировании устройств AVR с использованием инструментов с открытым исходным кодом. Поэтому, чтобы сделать жизнь проще на этапе компиляции и/или программирования, мы будем использовать WINAVR, которая также поставляется с AVRDUDE для загрузки нашего кода на устройства Atmega. Чтобы скачать WINAVR для Windows, просто нажмите на эту ссылку и выберите исполняемый exe-файл.

После скачивания запустите установщик и просмотрите все предложенные опции, пока программа не спросит вас про место установки.

Лучшее место для установки WINAVR — это рекомендуемое расположение: C:WinAVR-20100110. Следующая опция спросит про компоненты и вы должны убедиться, что установлены все галочки (показано ниже).

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

Как подключить USBASP и установить драйвер для Windows

Если вы используете Windows, вам необходимо изменить драйвер USB для USBASP. Это сделать не сложно с помощью инструмента под названием Zadig. Проще говоря:

  • загрузите Zadig,
  • подключите устройство USBASP к компьютеру,
  • дождитесь пока Windows автоматически установит USBASP,
  • запустите Zadig,
  • найдите устройство USBASP в раскрывающемся списке,
  • выберите драйвер libusb-win32 (v1.2.6.0).

После того, как вы нажмете «Заменить драйвер» (или Переустановить драйвер), Zadig автоматически установит драйвер, необходимый для работы USBASP в Windows.

Как настроить Atmel Studio 7 и WinAVR

Atmel Studio 7 не будет изначально использовать WINAVR или AVRDUDE, поэтому мы должны настроить её для этого. Это может показаться пугающим, но не паникуйте; для программирования устройства AVRDUDE необходима только одна строка инструкций, и только один каталог требуется определить. Фактически, вы должны быть в состоянии скопировать и вставить код в этой статье для любого проекта на базе ATMEGA168.

Итак, первый шаг — сообщить Atmel Studio 7 какой компилятор она должна использовать. Для этого откройте Atmel Studio 7 (если она еще не открыта) и нажмите: Инструменты -> Параметры (англ.: Tools -> Options).

В открывшемся окне используйте список слева, чтобы перейти к: Набор инструментов -> Конфигурация пакета (англ.: Toolchain -> Package Configuration) и в опциях, которые теперь должны быть доступны справа, выберите Atmel AVR 8-bit (язык C) (Atmel AVR 8-bit (C language)) из раскрывающегося списка, а затем нажмите: Добавить особенность (англ.: Add Flavour).

Предполагая, что вы установили WINAVR в папку по умолчанию на диске C и что у вас та же версия, что и в WINAVR, как в этой статье, во всплывающем окне мы пишем так, как показано ниже. После заполнения полей нажмите «Добавить» (англ. add), а когда вы вернетесь в предыдущее окно, нажмите «ОК».

Atmel Studio 7 теперь может использовать WINAVR для компиляции программ AVR, но все равно не может программировать устройства. Для этого нам нужно добавить внешний инструмент в Atmel Studio 7 и настроить его для устройства ATMEGA168.

Первый шаг — перейти в: Инструменты -> Внешние инструменты (англ. Tools -> External tools). Открывшееся окно — единственное окно, необходимое для работы программатора USBASP. Скрин ниже показывает большинство деталей, которые вам нужно будет заполнить.

Поле «Аргументы» (англ. Arguments) не полностью отображает всю информацию, которая необходима, и поэтому приведу ниже то, что было заполнено:

avrdude -c usbasp -p atmega168 -U lfuse:w:0x26:m -U flash:w:$(ProjectDir)Debug$(TargetName).hex:i

Большая часть информации в этом не важна для нас, кроме двух фрагментов текста. Первый — это -p atmega168;, который говорит AVRDUDE, что мы программируем ATMEGA168. Если в вашем проекте используется другой чип, замените текст atmega168 на используемое вами устройство (например, atmega88).

Второй параметр -U lfuse:w:0x26:m, который специфичен для ATMEGA168. Эта инструкция указывает AVRDUDE настроить устройство на использование внешнего кристалла, и после программирования устройство будет работать только при подключении к схеме кристалла. Обратите внимание, что это также означает, что устройству требуется кристалл при программировании. Этот аргумент будет работать только для ATMEGA168.

Создание первого проекта

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

Сначала перейдите в: Файл -> Создать -> Проект (англ. File -> New -> Project) и в открывшемся окне выберите: Исполняемый проект GCC C (англ. GCC C Executable Project), а в текстовом поле Имя (англ. Name) дайте любое название вашему проекту.

Следующее окно, которое должно появиться, — это окно выбора устройства. Из списка выберите Atmega168. Насколько мне известно, это окно не имеет никакого смысла, так как мы все равно передаем имя устройства в AVRDUDE вручную (пока я не могу найти способ заставить Atmel Studio 7 автоматически отправлять имя устройства в AVRDUDE через аргументы).

Результатом должен стать файл main.c, содержащий код нашей программы, который будет запускать AVR. Однако сгенерированный код ничего не делает, поэтому замените все содержимое файла main.c с помощью приведенной ниже программы (обязательно сохраните файл после ввода нового кода).

#define F_CPU 800000UL // Я использую кристалл 8 МГц

#include <avr/io.h>
#include <avr/delay.h>

int main(void){
	DDRD = 0xFF; // Сделать порт D портом выхода

	while(1){
		PORTD = 0xFF;
		_delay_ms(1000);
		PORTD = 0x00;
		_delay_ms(1000);
	}
}

Теперь пришло время скомпилировать код и загрузить его на устройство AVR. Первый шаг — убедиться, что наш проект использует компилятор WINAVR. Щелкните правой кнопкой мыши проект и выберите «Дополнительно» (англ. — Advanced) в окне свойств.

В окне «Дополнительно» убедитесь, что в поле «Набор инструментов» (англ. — Toolchain Flavour) выбран WINAVR.

Сохраните проект и скомпилируйте его, нажав: Build -> Build Solution (или нажав F7). Если все идет по плану, в окне вывода должно появиться следующее сообщение:

Build succeeded.

========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========

Это означает, что наш проект успешно скомпилирован и готов к передаче на наш чип. Чтобы запрограммировать устройство, убедитесь, что USBASP подключен как к ПК, так и к цепи Atmega, к цепи подано питание и что к микросхеме подключен кристалл (в случае, если микросхема была настроена для использования внешнего кристалла).

Затем, после всего этого, нажмите: Инструменты -> USBASP (англ. Tools -> USBASP), и все будет работать автоматически.

Если все хорошо, светодиод в вашей цепи должен начать мигать. Ниже приведен вывод AVRDUDE в Atmel Studio 7, показывающий, как выглядит успешная программа.

avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude.exe: Device signature = 0x1e9406
avrdude.exe: NOTE: FLASH memory has been specified, an erase cycle will be performed
             To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: reading input file "0x26"
avrdude.exe: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude.exe: 1 bytes of lfuse written
avrdude.exe: verifying lfuse memory against 0x26:
avrdude.exe: load data lfuse data from input file 0x26:
avrdude.exe: input file 0x26 contains 1 bytes
avrdude.exe: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.00s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of lfuse verified
avrdude.exe: reading input file "c:usersrobinlaptopDocumentsAtmel Studio7.0OurFirstAVROurFirstAVRDebugOurFirstAVR.hex"
avrdude.exe: writing flash (184 bytes):

Writing | ################################################## | 100% 0.11s

avrdude.exe: 184 bytes of flash written
avrdude.exe: verifying flash memory against c:usersrobinlaptopDocumentsAtmel Studio7.0OurFirstAVROurFirstAVRDebugOurFirstAVR.hex:
avrdude.exe: load data flash data from input file c:usersrobinlaptopDocumentsAtmel Studio7.0OurFirstAVROurFirstAVRDebugOurFirstAVR.hex:
avrdude.exe: input file c:usersrobinlaptopDocumentsAtmel Studio7.0OurFirstAVROurFirstAVRDebugOurFirstAVR.hex contains 184 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 0.10s

avrdude.exe: verifying ...
avrdude.exe: 184 bytes of flash verified

avrdude.exe: safemode: Fuses OK

avrdude.exe done.  Thank you.

Заключение

Начало работы с устройствами AVR может показаться несколько сложным, если вы не используете официальный программатор, который может работать «из коробки» с Atmel Studio 7. Однако в инструментах программирования требуется определить только одну командную строку (тип устройства, биты и т.п.). И все будущие проекты могут использовать один и тот же инструмент/компилятор, который нужно настроить только один раз.

Т.е. следующий проект ATMEGA168, который вы будете делать, сможет использовать тот же компилятор и внешний инструмент, что и в этом проекте и не потребуется никаких дополнительных настроек. Конечно, в более сложных проектах может потребоваться замена бит (англ. fuse), например, но в данном материале я хотел просто помочь вам освоить работу с устройствами AVR.

24 июля 2019 в 15:56
| Обновлено 7 ноября 2020 в 01:20 (редакция)
Опубликовано:

Статьи, AVR

— открываешь программерский блокнот

— создаешь проект через File > New > Project
указываешь его имя и папку где он будет храниться

— создаешь файл main.c и сохраняешь его в папке проекта

— подключаешь к проекту — кликаешь на названии проекта правой кнопкой мышки и выбираешь Add Files

— создаешь make файл с помощью утилиты MFile[WINAVR]. она есть в дистрибутиве WINAVR
в make файле нужно указать

# MCU name
MCU = atmega8535

# Processor frequency.
F_CPU = 8000000

# Optimization level, can be [0, 1, 2, 3, s].
# 0 = turn off optimization. s = optimize for size.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT = s

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

-копируешь в main текст программы

// первый проект в WinAvr
// Pashgan http://ChipEnable.ru
 
#include <avr/io.h>
#include <util/delay.h>  
  
int main( void )  
{  
  DDRC = 255;  
  
  while(1)  
  {  
    PORTC = 0;  
    delay_ms(500);  
    PORTC = 255;    
    delay_ms(500);  
  }  
  return 0; 
}

-сохраняешь main.c и запускаешь компиляцию и сборку — Tools > [WINAVR] MakeAll
теперь в папке проекта лежит прошивка с расширением hex

Понравилась статья? Поделить с друзьями:
  • Нутриэн гепа инструкция по применению взрослым
  • Мицубиси каризма руководство по ремонту
  • Установка спутниковой антенны мтс самостоятельно инструкция для чайников
  • Бифидумбактерин инструкция по применению цена отзывы для детей
  • Сканер штрих кода mercury 2200 cl p2d superlead usb инструкция