Atmel studio 7 руководство на русском

AVR Урок 2. Создание проекта в Atmel Studio

Урок 2

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

Сегодня мы научимся создавать проекты в среде программирования Atmel Studio. Делается это не очень сложно.

Запускаем Atmel Studio.

Если Вы запускаете Atmel Studio в первый раз, у Вас скорее всего появится сначала стартовое окошко, которое можно свободно отключить, сняв галочку создадим новый проект с помощью команды меню File -> New -> Project

У нас откроется диалог, в котором будет 5 вариантов проектов на C/C++, один вид проекта на ассемблере, а также есть вариант создание пустого решения, в которое уже потом добавлять проекты. Мы будем писать именно на языке C. С помощью кнопки «browse» в данном диалоге мы выбираем папку, в которой будем создавать свои проекты, выберем вариант проекта «GCC C Executable Project», дадим проекту имя, например «Test01». Галочка слева от надписи «Create directory for solution» означает, что будет создаваться папка для проекта, то есть данную папку заранее создавать не нужно. Нажмем «OK»

В следующем диалоге выберем наш контроллер Atmega8A, впечатав это в соответствующем окошке. Мы видим здесь справа также несколько интересных вещей, в том числе Datasheet на наш контроллер (ссылка на техническую документацию), который мы отсюда спокойно можем скачать.

Здесь мы также нажимаем «OK»

Проект создан. Мы должны увидеть окно с проектом приблизительно следующего вида

Теперь немного настроим наш проект.

Зайдём в его свойства с помощью меню Project -> Test01 Properties

Затем в открывшемся диалоге перейдём во вкладку Tool и выберем там в качестве отладчика Simulator, а если у кого поддерживатеся программатор в качестве отладчика, то свой программатор. Мой программатор не может выступать в качестве отладчика, так как нет драйвера для Atmel Studio. В свойствах проекта есть огромный ряд настроек (настройки оптимизации, включение операций с плавающей точкой и т.д.), которые мы рассмотрим в более поздних занятиях. А пока нажмём кнопку «сохранить всё» в панели управления в виде нескольких дискет (на картинку можно нажать для увеличения)

После сохранения закроем вкладку с настройками и немного поиграемся с текстом главного файла Test01.c. Прежде чем удалить оттуда ненужный комментарий сверху, мы заодно и поучимся, но а если кто знает, тот повторит, как пишутся комментарии в языке C. Чтобы написать многострочный комментарий, необязательно обозначать значком комментария каждую строчку. Достаточно вначале поставить обычный слеш (черточку, наклоненную вправо) и звездочку, а в конце блока с текстом комментария — наоборот — сначала звездочку, а затем обычный слеш и блок наш в данной среде программирования сразу отметится зелёным цветом, то есть станет комментарием и компилятор при сборке проекта обрабатывать данный текст не будет. Данный вид обозначения комментария ещё может пригодиться для обзначения комментарием не всей сторки, а её части, если мы хотим отметить комментарием часть строки не до её конца. Комментарии удобны в практике программирования тем, что мы указываем, что именно мы хотим добиться кодом, который обозначен комментарием, что, во-первых, не даёт нам забыть, что мы именно хотели сделать кодом, а также служит объяснением тому, кто будет наш код затем читать и изучать. Вот как раз пример комментария в нашем файле проекта

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

Теперь другой вид комментария. Если мы хотим написать комментарий в виде одной строки, то целесообразно отметить этот комментарий специальным значком в виде двух обычных слешей, предназначенных именно для обозначения однострочного комментария. Данный значек ставится вначале строки и действует до конца строки. У нас также есть с вами для этого уже пример в коде. Здесь среда нам подсказывает, где именно следует начинать писать свой код

Данный комментарий можно будет также удалить.

Теперь давайте попробуем откомпилировать наш проект (или как ещё говорят в народе «соберём его», так как проект данным действием не только компилируется, но ещё и линкуется). Делается это следующим образом. Либо нажимаем соответствующую кнопку в панели инструментов, либо нажимаем функциональную клавишу «F7». После этого действия, если сборщик проекта не встретит никаких ошибок, то мы получим в нижней части нашей среды программирования определённое сообщение

Также в папке «Test01Debug» нашего проекта у нас будет сгенерирован исполняемый файл, или как в народе говорят — прошивка — файл «Test01.hex». Данный файл мы и будем «заливать» в наш контроллер впоследствии. Для этого нам конечно надо будет научиться писать какой-то полезный код. Этим мы займёмся уже на следующем занятии.

Atmel Studio 7

Studio 7 is the integrated development platform (IDP) for developing and debugging all AVR® and SAM microcontroller applications. The Atmel Studio 7 IDP gives you a seamless and easy-to-use environment to write, build and debug your applications written in C/C++ or assembly code. It also connects seamlessly to the debuggers, programmers and development kits that support AVR ® and SAM devices.

Additionally, Studio includes Atmel Gallery, an online app store that allows you to extend your development environment with plug-ins developed by Microchip as well as third-party tool and embedded software vendors. Studio 7 can also seamlessly import your Arduino sketches as C++ projects, providing a simple transition path from Makerspace to Marketplace.

Key Features

  • Support for 500+ AVR and SAM devices
  • Vast source code library, including drivers, communication stacks, 1,600+ project examples with source code, graphic services and touch functionality through Advanced Software Framework (ASF)
  • IDE extensions through Atmel Gallery, the online apps store, for development tools and embedded software from Microchip and third parties
  • Tune capacitive touch designs, validate system performance, monitor power consumption, and real-time data and trace graphing with Atmel QTouch Composer
  • Configure and test the performance of wireless designs with the Wireless Composer running on the target
  • Write and debug C/C++ and assembly code with the integrated compiler
  • Advanced debugging features include complex data breakpoints, nonintrusive trace support (SAM3 and SAM4 devices), statistical code profiling, interrupt trace/monitoring, polled data tracing (Cortex-M0+ devices), real-time variable tracking with optional timestamping.
  • Integrated editor with visual assist
  • Project wizard allowing projects created from scratch or from a large library of design examples
  • In-system programming and debugging provides interface to all Atmel in-circuit programmers and debuggers
  • Create transparent debug views into CPU and peripherals for easy code development and debugging
  • Full chip simulation for an accurate model of CPU, interrupts, peripherals, and external stimuli

The Data Visualizer plug-in captures and displays run-time power data from your application when used with the Power Debugger, or a supported Xplained-PRO board. You can profile the power usage of your application as part of a standard debug session. Sampling the program counter during power measurements makes it possible to correlate power spikes with the code that caused them.

Atmel Studio 7 features seamless one-click import of projects created in the Arduino development environment. Your sketch, including any libraries it references, will be imported into Studio 7 as a C++ project. Once imported, you can leverage the full capabilities of Studio 7 to fine-tune and debug your design. Atmel Studio 7 fully supports the powerful embedded debugger on the Arduino Zero board. For other Arduino boards, shield-adapters that expose debug connectors are available, or switch to one of the many available Xplained-Mini/PRO boards to fully leverage the Microchip HW eco-system. Regardless of what you choose, you will surely make something amazing.

The Help system in Atmel Studio 7 supports on-line as well as off-line access, meaning that you will always get the latest documentation when you are connected, and that it will stay with you when you are mobile. Device aware context sensitivity and an IO-view are contained in the editor, allowing you to look up register-specific information from the datasheet of the part you are using without leaving the editor. The AVR-Libc documentation further enhances the context sensitive Help system, allowing you to look up function definitions easier than ever before. Do you still want to join?

Atmel Studio 7 is free of charge and is integrated with Advanced Software Framework (ASF)—a large library of free source code with 1,600 project examples. ASF strengthens Atmel Studio by providing, in the same environment, access to ready-to-use code that minimizes much of the low-level design required for projects. Standard IDEs are suited for creating new software for an MCU project. In addition to this, the Atmel Studio 7 IDP also:

  • Facilitates reuse of existing software and, by doing so, enables design differentiation.
  • Supports the product development process with easy access to integrated tools and software extensions through Atmel Gallery.
  • Reduces time to market by providing advanced features, an extensible software eco-system, and powerful debug integration.

Contains the Atmel Gallery app store

You can download and securely purchase both Atmel and third-party compilers, advanced debugging tools, real-time operating systems, communication systems and other extensions and plug-ins straight from the Atmel Studio 7 development platform and via gallery.atmel.com. The Atmel Gallery app store provides development tools and embedded software for MCU-based application design.

Читать еще:  Danogips fill finish light

When you encounter a need for a tool in the middle of your development process, or are seeking some basic source code, you won’t have to leave your environment to search for your solution. From Atmel Gallery, you can also download a plug-in that will give you direct access to Atmel Spaces, our new collaborative workspace.

Макетирование и программирование 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 программатора

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

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

А теперь программное обеспечение

Драйвер программатора 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 – это утилита командной строки, которая используется для скачивания и загрузки данных с микроконтроллеров Atmel. Существуют версии, доступные и на Linux, и на Windows. На момент написания статьи последняя доступная версия – 6.3; ее можно скачать здесь. Пользователи Windows должны скачать avrdude-6.3-mingw32-zip (нажатие на ссылку запустит скачивание zip-файла!), распаковать файлы и установить AVRDude. Обратите внимание, что установка программы в корневой каталог диска необязательна, но упростит ее использование с Atmel Studio 7. Если доступна версия, более новая, чем 6.3, то вы можете установить ее по своему усмотрению. Руководство пользователя AVRDude доступно здесь.

Чтобы проверить правильность установки и работы AVRDude, выполните следующие действия:

  1. нажмите кнопку «Пуск» Windows;
  2. в поле поиска введите cmd и нажмите Enter . Откроется окно командной строки DOS;
  3. в командной строке перейдите в каталог, в котором установили AVRDude;
  4. введите avrdude -c USBtiny и нажмите Enter . Если всё хорошо, AVRDude вернет список поддерживаемых устройств Atmel.

Смотрите скриншот ниже для примера процедуры. Обратите внимание, что скриншот был усечен и отображает только часть списка поддерживаемых устройств Atmel.

Список поддерживаемых устройств

Собираем всё вместе

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

Теперь следуйте следующим инструкциям:

  1. Запустите Atmel Studio 7.
  2. В стартовом окне слева нажмите New Project . Откроется окно нового проекта. Стартовое окно Atmel Studio 7
  3. В окне нового проекта нажмите GCC C Executable Project , назовите проект New Blink , как показано выше, и нажмите OK. Откроется окно выбора устройства Device Selection . Окно выбора устройства Device Selection
  4. В окне выбора устройства выберите AVR устройство, которое вы используете: ATmega328P или ATtiny45, как показано ниже. Нажмите OK. Будет создан новый проект, и будет открыто окно проекта New Blink . Окно проекта New Blink
  5. Нажмите на меню Tools , выберите External Tools. , и нажмите кнопку Add .
  6. В поле Title введите название инструмента, которой создаете; хорошо, если название описывает устройство. Например, вы можете ввести комбинацию названия программатора и названия устройства.
  7. В поле Comand введите путь к месту, куда установили AVRDude, плюс команду для запуска AVRDude.
  8. В поле Arguments введите одну из двух следующих строк, в зависимости от AVR контроллера, который используете.
    Для ATmega328P введите: Для ATtiny45 введите:
  9. В поле Initial directory введите путь к месту, куда установили AVRDude.
  10. Убедитесь, что поставлена галочка Use Output window , а в двух других чекбоксах галочки не стоят. Состояние окна должно быть похоже на скриншот ниже, но с учетом AVR контроллера, который вы используете. Окно добавления внешнего инструмента
  11. Нажмите Apply , а затем OK . Окно внешних инструментов должно закрыться.
  12. Скопируйте код программы, приведенный выше.
  13. Перейдите к окну New Blink.c в окне Atmel Studio 7 и вставьте в него код, приведенный выше. Код программы
  14. Если в правом верхнем углу Atmel Studio 7 не открыто окно менеджера проекта Solution Explorer , нажмите на выпадающее меню View и нажмите Solution Explorer . В правом верхнем углу должно появиться окно Solution Explorer .
  15. Кликните правой кнопкой на main.c и выберите «переименовать». Переименуйте файл main.c в New Blink.c .
  16. Нажмите на меню File и нажмите Save All .
  17. Нажмите на меню Build и нажмите Build Solution (собрать проект).
  18. Нажмите на меню Tools (инструменты) и нажмите на название инструмента, созданного в шагах с 5 по 11. Скомпилированный код New Blink должен будет быть загруже в AVR контроллер на вашей макетной плате, а светодиод LED1 должен начать мигать: ½ секунды включен, ½ секунды выключен, 60 раз в минуту.

По общему мнению, это был долгий процесс для простого мигания светодиода, но на самом деле вы успешно устранили четыре основных препятствия: создание аппаратной платформы для программирования микроконтроллеров AVR, установка интегрированной среды разработки Atmel Studio 7, интеграция внешней программы AVRDude и определение инструмента программирования для AVR микроконтроллера по вашему выбору. Будьте уверены, что в будущих проектах на AVR микроконтроллерах вам станет легче, что намного веселее.

Читать еще:  Partner 350 масляный насос

Учимся создавать проекты с помощью AVR микроконтроллера

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

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

Микроконтроллеры 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 с помощью приведенной ниже программы (обязательно сохраните файл после ввода нового кода).

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

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

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

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

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

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

Заключение

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

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

Читать еще:  Алюминиевый порог для пластиковой двери

Atmel Studio 6. Создание HEX-файла

Следуя пожеланиям читателей, мы будем вести разработку проектов в более современной и удобной программе: Atmel Studio 6.

У нее есть один существенный недостаток, который не позволяет воспользоваться этой программой на относительно слабых машинах. Это программа очень ресурсоемкая и она будет сильно тормозить на слабых компьютерах с двухъядерным процессором младших моделей и 2 гигабайтами ОЗУ. Сразу скажу, владельцы старых моделей компьютеров не будут забыты и для них будут выпущены обзоры по программам WinAVR и AVR Studio 4, чтобы они не чувствовали себя в чем-то ущемленными. Эти программы очень слабо нагружают процессор и требуют намного меньше памяти для работы.

Итак, перейдем к делу. Данная программа является полностью бесплатной и скачать её можно как с официального сайта Atmel, так и с торрент трекера, например Rutracker.org. После установки и запуска программы открывается окно приветствия и мастера создания проектов. Окно приветствия и мастер создания проектов мы закрываем. В работе эта функция совершенно бесполезна.

В результате остается одна рабочая область (кликните для увеличения картинки):

Для того, чтобы создать прошивку, то есть тот самый HEX файл, мы должны написать код, скомпилировать его и “собрать” проект. После этого у нас в папке с проектом, появится нужный нам файл с расширением *.HEX. Давайте разберем, как это делается на практике. Погнали!

Для создания проекта мы нажимаем в левом верхнем углу кнопки File => New => Project:

И видим следующее окно:

Здесь нам нужно выбрать СС++ и GCC C Executable Project:

Не спешите нажимать “ОК” и закрывать окно. В графе “Name” мы видим, что программа подставила нам имя проекта автоматом. В данном случае это GccApplication1. Также мы можем выбрать папку, в которую мы сохраняем проект:

Так как имя файла мне не нравится, то меняем его на Studio_6_Lesson_ 1. Путь для сохранения проекта я оставил по умолчанию. В данном случае в папке 6.2 у нас создастся папка с названием Studio_6_Lesson_ 1. В ней и будут находиться все необходимые нам файлы, имеющие отношение к нашему проекту:

Ну а теперь жмем ОК. Что мы видим дальше? А дальше открывается следующее окно:

Так как мы с вами договорились использовать МК Tiny 2313, то нам нужно выбрать именно эту модель. Для этого выбираем семейство Tiny, 8-bit.

Ну а потом выбираем наш МК Attiny 2313:

Здесь же можно вкратце ознакомиться с характеристиками на данную модель МК, узнать объем Flash памяти, ОЗУ, и EEPROM памяти. Также здесь можно скачать даташит на данную модель МК и ознакомиться со всеми характеристиками этого микроконтроллера.

После того как выбрали, жмем ОК. Перед нами открывается рабочее окно программы (для увеличения кликните мышкой)

А вот и самое главное окно:

Как мы видим, здесь уже автоматически что-то уже сгенерировалось. Перейдем непосредственно к коду.

Что же мы видим здесь?

Строки 1…6 – это у нас комментарии. Все комментарии бывают выделены зеленым цветом в отличие от кода программы, переменных, функций, и т. д. В комментариях мы видим название исходника на СИ нашего проекта: файл Studio_6_Lesson_ 1.с. В нем хранится наш код и его мы можем, если хотим, посмотреть и уточниться, чтобы не открывать каждый раз тяжелую для запуска студию. Открывать в том же блокноте Wordpad.

Итак, давайте разберем, что же обозначают все остальные строчки. Читаем комментарий, идущий после кода в каждой строчке. Комментарии у нас отделяются от кода, двумя символами знака деления(//). Правильно же это называется прямой двойной слэш.

Что же мы видим? Смотрим строку под номером 9. С нее начинается сама программа:

#include //Подключаем библиотеку аппаратных описаний МК

Эту строчка должна присутствовать абсолютно в любом проекте на любом МК AVR Mega и Tiny. Смысл этих команд я написал в комментариях, идущих после команды.

Здесь я хочу сделать небольшое отступление и разобрать отличия Atmel Studio 6.2 от той же WinAVR. В шестой студии есть очень удобная функция. Называется она автоподставления команд. Проявляется это в том, что как только мы начали набирать команду известную Студии, она сама предложит нам все возможные варианты команд на выбор, какие только есть в её памяти по нескольким первым буквам.

Нам достаточно нажать лишь клавиши ТАВ или ENTER и команда у нас подставится автоматически.

Разбираем строчку №10

Этой строчкой мы объявлем библиотеку задержек

#define F_CPU 8000000UL //Устанавливаем частоту для компилятора

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

Идем дальше. Смотрим строчку №11:

#include //Подключаем библиотеку задержек

Этой командой мы “говорим” МК, что у нас в программе будет использоваться функция задержек работы микроконтроллера , или иначе говоря, режима холостой работы. В это время не будут выполняться никакие другие действия. На какое-то заданное время, МК, условно говоря, для нас как-бы зависнет.

Идем дальше. Мы видим строчку int main(void) //Основное тело программы под строкой №13:

После нее, собственно, и начинается наша основная программа. Мы видим в строке 14 фигурную скобку, открывающую место под программу, и такую же, только повернутую в другую сторону скобку, закрывающую место под программу уже в строке 19. Эти скобки предназначены для основного тела программы. Также мы видим соединяющую их вертикальную черту, показывающую нам, что они одно целое.

Также можно увидеть и фигурные скобки для while. Открывающая скобка находится в строке 16, а закрывающая в строке 18.

Давайте напишем программу для мигания одним светодиодом. Для этого добавляем строчки:

PORTB=0b0000000 0; //Притягиваем все 8 выводов порта В к 0

Восемь цифр означают, что у нас 8 выводов порта В. Крайний правый – это В0, крайний левый – В7. Это обозначение означает 8 нулей после 0b, что по умолчанию у нас на всех выводах-ножках порта В установлен логический ноль, или говоря по-другому, они притянуты к нулю. Если говорить очень упрощенно, то это все равно, что они внутри МК соединены с землей устройства.

DDRB=0b11111111 ; // Конфигурируем все выводы порта В на выход

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

Далее идет собственно программа (кликните для увеличения):

PORTB=0b0000000 1; //Подаем на порт В0 логическую единицу (зажигаем светодиод)

Итак мы видим, что крайняя справа у нас стоит единичка. Как мы помним из выше сказанного, это значит что мы на порт В0 вывели 1, или по другому говоря, на этом выводе у нас сейчас +5 вольт.

_delay_ms(500); //Ждем 500 миллисекунд (0.5 секунды)

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

Что означают ниже приведенные две строчки кода, вы наверное уже догадались сами:

PORTB=0b0000000 0; //Подаем на порт В0 логический ноль (гасим светодиод)

_delay_ms(500); //Ждем 500 миллисекунд (0.5 секунды) Мы подаем ноль на ножку В0 и затем ждем пол секунды.

Но такая программа у нас длилась бы всего секунду, а что потом? А потом нам нужно вернуться к началу нашего бесконечного цикла, который мы объявляем командой While:

while(1) //Начинаем бесконечный цикл

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

И наконец, в конце нашей программы мы видим две фигурные скобки, по одной на каждый цикл программы, основной и бесконечный через While, читаем комментарий к последней скобке:

> //Возвращаемся к началу выполняемого тела программы, к строке 13

Уфф))… программа вроде бы написана, но как скормить этот код микроконтроллеру ? Он же не понимает код, написанный в понятных нам словах и командах? А для этого нам нужно сначала скомпилировать прошивку. Делается это следующим образом.
Кликаем Build=>Compile и прошивка у нас будет скомпилирована.

Жмем Build=>Build Studio_6_Lesson_ 1 и считаем количество ошибок)), а они при самостоятельном написании первой программы скорее всего будут у начинающих кодеров.

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

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

Итак где же – где же наш долгожданный HEX файл, который нам уже не терпится прошить в наш микроконтроллер)? Проще всего открыть папку с нашим проектом, в которой и будет находиться наша прошивка. Жмем File=>Open=>File и попадаем в папку с нашим проектом.

В той папке, где лежит проект, у нас находится исходник на СИ

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

Ссылка на основную публикацию
Adblock
detector