Atmel studio

Atmel studio

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.

  • 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

Low-power Application Design


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.

From Makerspace to Marketplace — Enabling a Seamless Transition to Production-ready Tools


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.

Device-Specific Help at the Touch of a Button


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?

More than 1600 ready-to-use project examples


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 The Atmel Gallery app store provides development tools and embedded software for MCU-based application design.

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.

Hands-on: (hands-on training as well as the code used in the videos)

This Getting Started training for Atmel Studio 7 will guide you through all the major features of the IDE. It is designed as a video series with accompanying hands-on. Each section starts with a video, which covers that section.

Much of the training could be completed by using the editor and simulator, however, in order to cover everything the following is recommended.

Hardware prerequisites:

  • ATtiny817 Xplained Pro
  • Standard-A to Micro-B USB cable


Программирование Arduino из Atmel Studio 7

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

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

когда в родной среде Arduino IDE становилось тесновато, а крутые среды разработки типа Atmel Studio, Keil, Microsoft VS пугали обилием настроек и инструментов.

Мне, например, очень удобно работать с механизмом вкладок Arduino IDE, разрабатывая большие проекты, это чисто мое предпочтение — на самом деле очень много времени занимает перенос кода, функций и переменных в заголовочные файлы и классы. Но на самом деле, есть более весомые аргументы в пользу перехода от Arduino IDE к более серьезным инструментам разработки. Это в первую очередь, наличие отладчика. Для начинающих программистов микроконтроллеров это кажется несущественным, но когда время идет, и сложность программ увеличивается, увеличиваются и требования к работоспособности и функционалу кода МК. И тут как раз возникает необходимость понимать, и видеть, как работает твой код на микроконтроллере. Даже если ты не обзавелся каким нибудь jtag — девайсом, очень приятно наблюдать даже в симуляторе, как нужные значения падают в нужные регистры во время работы программы. Ну и конечно же, если вы всерьез решили изучить программирование микроконтроллеров и архитектуру AVR — то без дебаггера просто никак не обойтись. Я уже молчу про скрытую работу wiring — препроцессора Arduino IDE, который позволяет писать более простые программы, используя функционал библиотек Arduino, и который добавляет в программу очень много мусора, который занимает память программ контроллера, и использует вхолостую ресурсы МК. Также немаловажным фактором является скромность редактора исходного кода среды Arduino IDE. И как водиться в миру, настоящие хардкорные разработчики встраиваемых систем и автоматики пишут только на си и ассемблере, полагаясь на собственный интеллект и опыт, а не на разработки итальянских студентов (против которых ничего плохого не имею, и камней в их огород бросать не буду).

Если вы согласны с вышесказанным — значит вы уже пробовали, или только собираетесь установить и использовать Atmel Studio 7. Я сам программист начинающий, можно сказать, программирование учил очень давно в школе, это был интерпретируемый Бейсик на машинах MSX. И лишь только пару лет назад пришлось, как говорится, по долгу службы приступить к изучению и освоению си и с++.

Поэтому с небольшой высоты колокольни собственного опыта, хочу порекомендовать AVR Studio, а именно Atmel Studio 7.

На самом деле, эта среда доставила мне достаточно нервотрепки с ее установкой и запуском («окна» я использую исключительно для работы и потехи, причем это Win 7 SP1 64), было несколько попыток установить ее с разбегу, но это заканчивалось фэйлом, пока на чистую систему я не установил обновление «Windows6.1-KB3033929-x64.

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

После было много сказано отнюдь не литературных слов и выражений, пока среда не стала более менее адекватно работать (Atmel Studio 7 у меня жутко тормозила поначалу, на машине с хорошим Core i7 и 8 гигами шустрой ОЗУ DDR4, не пойму, что стало потом, то ли среда каким то мистическим образом прокэшировалась в системе, или же я привык, но сейчас все неплохо работает).

Также я хочу подметить, что эта среда так или иначе разработана и выпущена разработчиками AVR и ARM контроллеров Atmel, и посему поддерживает все свои контроллеры, и предоставляет все необходимые для работы библиотеки на с/с++. Огромный плюсом, и как я полагаю, неотъемлемой частью является наличие ассемблера для описанных выше платформ. Также в седьмой версии программы появилась поддержка конвертации скетчей Arduino в код программы для контроллера на языке си. Опция эта работает пока что несовершенно, и неспособна преобразовывать скетчи с несколькими вкладками, из-за чего теряет пока что определенную актуальность.

Но есть у этой среды и определенный недостаток: она не поддерживает наиболее популярный, и самый дешевый программатор USBaSP, и не поддерживает из «коробки» возможность программирования напрямую(используя порт USB) плат Arduino. И поэтому я в этой статье хочу поделиться определенным «лайфхаком», и я надеюсь, что это кому то будет действительно полезным.

Итак, приступим. Что нам необходимо иметь: ПК с установленными Atmel Studio 7, Arduino IDE желательно последней версии, и драйверами для вашей платы Arduino, ну и собственно, сам «пациент». Подключаем контроллер к ПК, дальше устанавливаются драйвера, и после вы должны выполнить несколько манипуляций, но это нужно будет сделать один раз для разных плат Arduino.

Сначала открываем среду Arduino IDE, выбираем любимый наш Блинк, и включаем вывод компилятора в окно компиляции внизу редактора:

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

После, открыв среду Atmel Studio 7, выбираем во вкладке Tools пункт External Tools, cоздаем новый профиль (можете сделать несколько разных профилей для каждой отдельной платы Arduino, где в соответсвующие строки вставляем наши параметры, где указаны адрес программы avrdude, и команды для компилятора:

Читайте также:  Терморегулятор на pic

Потом можно создать любой проект, написав, к примеру, тот же код любимой моргалки, но уже на си, и загрузить наш код в контроллер, сначала собрав ваш проект, нажав F7 (Build project), и после кликнув на пункте с именем вашего профиля программирования во вкладке Tools:

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


В поисках альтернативы atmel studio

Недавно вышла новая Atmel Studio версии 7.0. Как и все предыдущие IDE от Atmel, она не лишена ряда существенных недостатков:

  1. Отсутствие кроссплатформенности. Только Windows, причем, не ниже Windows 7
  2. Отсутствие поддержки популярных программаторов, JTAG-ов и т.д, только фирменные атмеловские инструменты
  3. Не умеет обновляться – каждую версию приходится ставить отдельно. Причем, если удалить предыдущую установленную версию, то может сломаться последняя.

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

Для сборки проекта студия использует утилиту make и генерит makefile. В принципе, makefile можно писать руками, но это не совсем удобно и очень громоздко.

Попытки использования разных известные аналогов make (cmake, scons и прочее) желаемого результата также не дали. Хотелось своего велосипеда – чего-то предельно простого, гибкого и удобного. В качестве основы был выбран Python, т.к.

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

Утилита AVR builder

Пример простого проекта

Описание сценариев компиляции должно быть максимально простым – для сборки достаточно указать список исходных файлов, модель микроконтроллера и, как правило, его тактовую частоту. Так же хотелось иметь возможность собирать одной командой неограниченное множество различных прошивок (например, debug, release, прошивки для кварцевых резонаторов разных частот и т.д.)

Минимальный файл конфигурации выглядит так:

name = ‘my_project’
src = [‘src/*.c’]
mcu = ‘atmega8’
frequency = 16*1000000

Этот файл сохраняется под именем make.builder в корень проекта. Утилита при запуске читает этот файл, создает директорию build и запускает компиляцию всех файлов, указанных в списке src.

В случае успеха будет создан файл прошивки build/my_project.hex. При этом нет необходимости явно перечислять все исходные файлы, можно использовать символ *. В данном примере, будут скомпилированы все файлы с расширениям .

cиз директории src

Дополнительно в файле конфигурации можно указать параметры программатора (используется avrdude), набор макросов препроцессора и опции компиляции.

Более сложный пример

name = “my_project”
src = [“src/*.c”, “src/lib/*.c”, “src/*.

mcu = “atmega8”
frequency = 16*1000000 # параметры вызова avrdude
port = “com1”
baudrate = 1200
programmer = “usbasp” # макросы
defines = [‘GLCD_DEVICE_AVR8’, ‘GLCD_CONTROLLER_PCD8544’, ‘GLCD_USE_AVR_DELAY’, ‘__DELAY_BACKWARD_COMPATIBLE__’] # опции компилятора и сборщика
compiler_options = [‘-Os’]
linker_options = [‘-Wl,–relax’] configurations = { “debug”: { “name”: “my_project_debug”, “defines”: [‘DEBUG=1’] }, “release”: { “name”: “my_project_release”, “defines”: [‘DEBUG=0’, ‘NDEBUG’] }, “demo”: { “name”: “my_project_demo”, “defines”: [‘DEBUG=0’, ‘NDEBUG’, ‘DEMO_MODE’] }

Тут дополнительно определены макросы препроцесора для условной компиляции (параметр defines) и настройки программатора для avrdude. Кроме того, в этом примере определены три конфигурации проекта с именами “debug”, “release” и “demo”.

Теперь скомпилированную прошивку можно залить на устройство командой

builder upload

При необходимости можно указать и параметры компиляции и сборки (параметры compiler_options и linker_options).

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

На моих примерах размер прошивки получался меньше, по сравнению с размером прошивки, собираемой Atmel Studio 7 для release-сборки с параметрами по умолчанию.

Поддержка разлличных конфигураций

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

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

Также для сборок можно настроить имя конечного hex-файла (параметр name). Списки препроцессорных констант из конфигурации (параметр defines) будут добавлены к общему списку.


builder all

соберёт все сборки и положит их в директорию build


builder release demo

соберёт только сборки release и demo


builder clean debug upload

очистит содержимое каталога build, затем соберет сборку debug и запишет ее на устройство.

Если в конфигурации конкретной сборки определен параметр, который уже определен в общей конфигурации (например, параметр “name”), то его значение будет взято из параметров сборки если параметр не является массивом. В случае массива значение параметра будет взято из объединения массивов общих параметров с параметрами сборки.

Поддержка bootloader-ов

Если для обновлении прошивки предполагается использовать загрузчик, то, вместо того, чтобы каждый раз вручную “приклеивать” его к прошивке, можно указать в путь к его файлу параметром bootloader_hex:

bootloader_hex = ‘bootloader.hex’

В этом случае код загрузчика будет взят из файала с именем “bootloader.hex” и вставлен в собранный файл прошивки. По умолчанию загрузчик ищется в корневой директории проекта, но можно указать полный абсолютный или относительный пусть.

Другие платформы

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

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

Сейчас утилита умеет собирать проекты из исходников на С и ассемблере (файлы с расширением .S). Работоспособность проверялась под Mac OS X и Windows.

Сборщик пытается автоматически определить местоположение исполняемых файлов avrgcc, и если у него это не получилось (или получилось плохо), то путь к компилятору можно определить в переменной среды AVR_GCC_HOME (должна указывать на директорию c исполняемыми файлами avr-gcc, avr-objcopy, avr-objdump, avr-size и avrdude).

Для компиляции обычного консольного приложения надо изменить тип компилятора на GCC:

compiler = ‘gcc’

(по умолчанию compiler = ‘avr’)

Примеры использования сборщика можно посмотреть в следующих проектах:×128

Выбор альтернативной IDE

Что же касается текстового редактора, то перепробовав разные варианты я остановился на IDE NetBeans. Из коробки она умеет работать с файлами Си и ассемблера, запускать сборку с отображением ошибок компиляции и возможностью перехода в строке файла с ошибкой.

Так же NetBeans имеет средства рефакторинга – можно, например, переименовывать переменные и методы в исходниках. В итоге, по удобству работы NetBeans, как мне показалась, превосходит AtmelStuidio.

Правда, при работе в Windows в последней версии NetBeans замечено некоторое количество некритичных но неприятных багов.

Вообщем-то почти аналогичными возможностями из коробки обладает IDE Eclipse CDT. Но тут, как минимум, все хуже а ассемблерными файлами – подсветка синтаксиса примитивнее и нет возможности перемещаться по объектам как по ссылкам (по крайней мере, на момент написания статьи).

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

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

Под Mac OS X достаточно удобным показался Xсode – тут из коробки для Си-проектов у меня заработало все кроме рефакторинга.

В качестве Makefile используется файл вида

all: python ~/bin/avr-builder/

Если Netbeans не находит каких-то утилит, то путь к ним можно прописать в файле (тут имя директории зависит от версии) /Applications/NetBeans/NetBeans Я, например, добавил в самое начало этого файла строку

export PATH=”/usr/local/sbin:$PATH:/Users/trol/bin”

Проект утилиты-сборщика можно скачать с гитхаба:


Расширения Atmel Studio 6

Сегодня речь пойдет о некоторых расширениях (extensions) бесплатной IDE от Atmel. Как можно понять из названия, extension — это плагин, расширяющий возможности редактирования или отладки кода.

Устанавливать их можно как из самой Atmel Studio (далее по тексту — AS), так и вручную скачивая файлы расширений со своеобразного «app-store» — Atmel Gallery. И в том, и другом случае потребуется регистрация на сайте.
Подкатом инструкция в картинках.
Итак, аккаунт создан, AS запущена.

Идем в меню Tools -> Extension Manager…(естественно, требуется интернет-соединение).

Появляется обозреватель расширений:

Все доступные расширения бесплатны для загрузки, но не все полнофункциональны — некоторые распространяются на коммерческой основе, и для ознакомления предоставляются их урезанные версии. Уже установленные дополнения отмечены зеленой галочкой. Отключить или удалить их можно в меню Installed Extensions.

Попробуем установить новое расширение, например, библиотеку LUFA:

Нажимаем Download, и логинимся в Галерею:

Несмотря на джве установленные галочки «Remember me», вводить пароль приходится каждый раз, как при заходе из AS, так и из самостоятельного браузера. (периодически, AS версии 6.2 beta наглухо висла после входа в Галерею. С чем это связано, выяснить не удалось. Все описанное выполняется из AS 6.1.2730 SP2).

Начинается закачка расширения:После принятия лицензионного соглашения, и установки расширения:Студию необходимо перезапустить, о чем она недвусмысленно намекает нам в строке статуса:И вот, после рестарта среды, получаем:Нам стали доступны более 100 проектов-примеров использования библиотеки LUFA с контроллерами AVR.

Cнова запускаем менеджер расширений, переходим в Installed Extensions, и видим, что LUFA успешно установлена, и в дальнейшем может быть отключена, или совсем удалена из набора плагинов:

Рассмотрим еще несколько дополнений.

CodeVisionAVR: после нажатия кнопки «Download» скачивается инсталлятор Evaluation-версии, который ничем не отличается от версии, выложенной на официальном сайте, так что желающие могут скачать его оттуда.

Расширение для AS ставится автоматически (имеются версии для AS 6.1 и 6.2). И вот тут нас ждет ложка дегтя: если AS установлена не в папку по умолчанию — расширение не подхватится.

Если же все прошло успешно, то в меню AS File -> New появится два новых варианта проектов:

Работа с мастером кода ничем не отличается от работы в самом CVAVR,вплоть до ограничений пробной версии:равно как и собираться проект будет средствами CVAVR, а не GCC Toolchain, как я понадеялся вначале:Хотя, возможно, есть способ заставить AS компилировать проект при помощи GCC, я пока не вникал в тонкости. По сути — получили CodeVision в шкуре AS. Радует, что отладка средствами AVR Simulator работает. Кстати, автодополнение и подсветка кода начинает работать не сразу… Тоже пока не разобрался, с чем связано.

Читайте также:  Лабораторный бп на основе psmr3010p

Следующий аддон: Arduino IDE for Atmel Studio.

Из «app-store» скачиваем расширение в виде файла *.msi, устанавливаем, перезапускаем AS. При следующем запуске AS появится конфигуратор, которому нужно будет указать путь к установленной Arduino.

Если же этой среды у вас нет, можно скачать ее, нажав кнопку «Download/Install IDE».

Вот тут уже без нареканий работает автодополнение кода и подсказки по функциям:Поддерживается более 30 видов плат Arduino:На панели инструментов добавляется кнопка Upload to Arduino:Т.к.

ардуинок у меня чуть менее, чем ни одной, то описание работы с этим расширением на этом и закончу.

X-Features: небольшое расширение, привносящее некоторые удобства (хотя, кому как — дело привычки) в редактирование кода:

Добавляет такие возможности как подсветка текста, идентичного выделенному (включая закомментированный), скроллинг страницы средней кнопкой мыши, курсивные комментарии, выделение строки тройным кликом:

И последний на сегодня, Terminal:

Просто терминал. По сравнению с Terminal by Br@y++ — унылое г**но, зато встроенный в AS. Полезность сомнительна.На этом пока все. По мере изучения доступных расширений постараюсь дополнять заметку. Замеченные ляпы, несуразности, и прочие баги отписывайте в комментариях.

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


Atmel Studio 6 (AVR Studio 6): обзор


Макетирование и программирование 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 Studio от Atmel отличались падучестью и мелкими неудобствами, и переход со старой версии на новую практически никаких улучшений не давал. Поэтому, попробовав версию AVR Studio 5, и не найдя в ней практически ничего полезного и нового, кроме смены интерфейса, я долго откладывал переход на новую версию AVR Studio: Atmel Studio 6.

Основное достоинство новой версии бесплатной популярной среды разработки Atmel Studio 6 от Atmel – она теперь основывается на движке Visual Studio 2010, и имеет абсолютно такой же интерфейс, как и популярная среда разработки программ для PC – Microsoft Visual Studio 2010. Это упрощает освоение среды программирования AVR для тех, кто уже знаком с традиционным интерфейсом Visual Studio. Кроме того, значительно повысилась устойчивость в работе. Кратко перечислю полезные нововведения, которые мне удалось заметить:

1. Привычная среда разработки Microsoft Visual Studio 2010 теперь доступна для AVR.
2. Интерфейс IDE стал работать надежнее.
3. Введена качественная подсветка синтаксиса.

В редакторе кода теперь есть автозавершение переменных, операторов, подсказки по исходному коду.
5. Теперь система разработки поддерживает не только AVR, AVR32 и XMEGA, но и платформу ARM® Cortex™-M.

В качестве ядра компиляции используется все тот же GCC, который устанавливается автоматически в процессе инсталляции Atmel Studio. Т. е. теперь не нужно отдельно устанавливать тулчейн WinAVR, все есть в одном инсталляторе.
7. Старые проекты AVR Studio легко импортируются в новую среду.

Вывод сообщений компиляции отфильтрованы по ошибкам (Errors) и предупреждениям (Warnings).
9. Есть возможность быстро перейти к реализации (описанию) функции, переменной или макроса, выделив его в редакторе и нажав Alt+G.

Появилась удобная фича переименования переменных, констант и функций через меню VAssistX -> Refactor -> Rename… (функция Refactor -> Rename также доступна в контекстном меню редактора кода).

Что, на мой взгляд, еще требует доработки:

1. К сожалению, в контекстном меню нет привычного пункта “Перейти к определению ..” (Go to definition of ..), которое удобно для нахождений мест определения переменных, макроопределений и функций. Его заменяет горячая комбинация клавиш Alt+G.
2. Справочная система перенесена в онлайн и не очень удобна.

[Первоначальная настройка Atmel Studio 6]

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

1. Отступы и табуляции в текстовом редакторе: Сервис -> Параметры… -> Текстовый редактор -> Все языки -> Табуляция. Настройте нужный интервал табуляции в символах, и переключите радиокнопку типа табуляции на “Вставлять пробелы”.

Все комментарии на русском подсвечиваются спелчекером Visual Assist X красным, как ошибочные, поэтому проверку синтаксиса в комментариях нужно отключить. Это делается через VAssistX -> Visual Assist X Options…

-> Advanced -> Underlines -> снимите галочку “Underline spelling errors in comments and strings using ..”.

[Настройка выбранного для компиляции тулчейна – Flavour Configuration]

Проект (исходный код на C и/или ASM) собирается компилятором GCC, к которому в комплекте идут библиотеки и файлы заголовков (хедеры, header, файлы с расширением *.h). Этот набор GCC+библиотеки+хедеры называются тулчейном (toolchain).

Тулчейны могут быть разные – есть WinAVR (в него входит компилятор avr-gcc, библиотеки, заголовки, макросы), и есть Atmel Toolchain (который сделан компанией Atmel на основе GNU AVR toolchain, и в него также входит компилятор avr-gcc, библиотеки и заголовки).

Atmel Toolchain устанавливается совместно с Atmel Studio. Т. е. установив Atmel Studio, Вы сразу получаете весь необходимый набор инструментов для разработки. Это довольно удобно, потому что в ранних версиях AVR Studio приходилось загружать и устанавливать отдельно еще и пакет WinAVR.

Atmel Studio позволяет компилировать Ваш проект разными тулчейнами, в зависимости от выбранных текущих настроек. Т. е. можно в одном проекте настроить, к примеру, две конфигурации, в одной из которых проект будет компилироваться тулчейном Atmel, а в другой – тулчейном WinAVR. Можно даже создать несколько конфигураций тулчейнов, например для разных версий WinAVR.

Конфигурирование тулчейнов почему-то назвали несколько странным образом – “Flavour Configuration”. Доступно конфигурирование через меню Tools (Сервис) -> Options (Параметры…) -> Toolchain -> Flavour Configuration.

По умолчанию, сразу после установки Atmel Studio доступна только одна конфигурация – Native, которая соответствует тулчайну Atmel (тулчейнов ставится сразу несколько для разных платформ, к примеру, тулчейн для AVR установлен в папку C: Program Files Atmel Atmel Studio 6.

0 extensions Atmel AVRGCC AVRToolchain bin ).

Дополнительные тулчейны можно установить по кнопке Add Flavour. Нужно просто указать путь до установленного тулчейна. Например, для WinAVR-20100110 путь будет C : WinAVR-20100110 bin.

Выбрать используемый для проекта тулчейн можно в свойствах проекта, Advanced -> выпадающий список Toolchain Flavour.

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 – это утилита командной строки, которая используется для скачивания и загрузки данных с микроконтроллеров 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 микроконтроллер. Для примера воспользуемся простым примером мигания светодиодом.

//New Blink.c #define F_CPU 1000000UL #include #include int main(void) { DDRB |= 0b00000001; while (1) { PORTB = 0b00000001; _delay_ms(500); PORTB = 0b00000000; _delay_ms(500); } return 0; }

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

  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 введите:-c usbtiny -p m328p -v -U flash:w:$(TargetDir)$(TargetName).hex:iДля ATtiny45 введите:-c usbtiny -p t45 -v -U flash:w:$(TargetDir)$(TargetName).hex:i
  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 микроконтроллерах вам станет легче, что намного веселее.

Оригинал статьи:


Karma-SAM3S. Как сделать проект в Atmel Studio


Это краткое пошаговое руководство по созданию проекта в Atmel Studio. Мы разберем как создать проект, как добавить в него ASF библиотеки, как его скомпилировать и как записывать прошивку в микроконтроллер, используя аппаратный отладчик или программатор.

 Речь пойдет о создании проекта для ARM микроконтроллера SAM3S, но аналогичным образом создаются проекты и для других микроконтроллеров фирмы Atmel – xmega, atmega, attinyПодразумевается, что у вас уже установлена среда разработки. Но если это не так, то самое время сделать это.

Переходите на сайт Atmel, регистрируйтесь и скачивайте Atmel Studio.

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

Выбираем в верхнем меню пункт File > New > Project… или нажимаем комбинацию кнопок Ctrl + Shift + N.
Откроется окно, в котором нужно задать шаблон проекта, имя и место его хранения. Выбираем C/C++ > User Board > User Board SAM3S. Имя и место сохранения указываем по своему желания.

Я назвал свой проект Test.

Последнее поле в этом окне – Solution name. Solution или решение – это некий “контейнер”, который включает в себя один или несколько проектов Atmel Studio (аналог workspace или рабочего пространства в IAR).

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

Если поставить галочку Create directory for solution, то будет создана директория с именем решения и файлами решения, в которой будет поддиректория, содержащая наш проект. Нам это сейчас не нужно, поэтому галочку можно снять.

 Жмем ОК и в следующем диалоговом окне задаем тип микроконтроллера. Это нужно для того, чтобы Atmel Studio подключила к проекту требуемые заголовочные файлы.


Выбираем SAM3S4B, жмем ОК и Atmel Studio создает проект с заданными параметрами. 

Если мы заглянем в директорию проекта, то увидим следующий набор файлов.

В папке Debug сохраняются результаты компиляции проекта – объектные файлы и прошивки в различных форматах. В папке src хранятся исходники проекта – C и C++ файлы. 

Посмотрим на Atmel Studio. Перед нами созданный только что проект. С правой стороны у нас проводник, отображающий иерархию проекта. Чуть ниже окно – свойства. Там отображается информация о выбранном файле. С левой стороны – редактор кода, сейчас там открыт файл main.c. Снизу – консоль, на которую выводится различная информация о результатах компиляции проекта. Сверху – меню и меню бар.

ASF библиотеки

Чтобы убедиться в работоспособности платы Karma-SAM3S, добавим в проект простой код. Для начала подключим к проекту несколько ASF библиотек. ASF (Atmel Software Framework) – это бесплатный набор библиотек для Atmel микроконтроллеров, интегрированный в среду разработки. ASF включает в себя драйверы внутренней периферии, сервисы и библиотеки для внешних устройств.

Каждая библиотека имеет документацию с описанием и примерами. Чтобы использовать ASF библиотеки нужно создавать проект на основе шаблона (board template) или ASF примера. Чтобы добавить ASF библиотеки к проекту, запускаем ASF Wizard. Это можно сделать с помощью меню Project > ASF Wizard, комбинации Alt + W или одноименной кнопки в меню баре.


Для первого проекта понадобятся следующие драйвера:

PIO – Parallel Input/Output Controller
PMC – Power Management Controller

Ищем их в списке, выделяем и добавляем в окно Selected Modules с помощью кнопки Add.

Когда нужные драйверы добавлены, нажимаем кнопку Apply. В следующих окнах жмем ОК и со всем соглашаемся. 

Выбранные библиотеки появятся в проводнике и в заголовочном файле asf.h. Теперь их можно использовать в своем проекте. 

Тестовый код

Закрываем ASF Wizard и копируем в main.c следующий код. 

#include #define ONE_SEC 250000#define LED1 PIO_PA17void Delay (uint32_t value);/*программная задержка */void Delay (uint32_t value){   volatile uint32_t a = value;   while(–a!=0);}int main (void){    /*настройка периферии*/   wdt_disable(WDT);   pmc_enable_periph_clk(ID_PIOA);   pio_set_output(PIOA, LED1, LOW, DISABLE, DISABLE);   while(1){      /*моргаем светодиодом*/      Delay(ONE_SEC);      pio_set(PIOA, LED1);      Delay(ONE_SEC);      pio_clear(PIOA,LED1);   }   return 0;}Детально разбирать его не будем, но несколько комментариев сказать стоит. В начале программы запрещается работа сторожевого таймера, разрешается тактирование контроллера ввода-вывода и вывод PA17 настраивается на выход. К этому выводу на плате Karma-SAM3S подключен светодиод. Далее идет бесконечный цикл, в котором состояние вывода PA17 меняется на противоположное. Чтобы смена состояний не была слишком быстрой, используется программная задержка – Delay(). Значение задержки подобрано так, чтобы светодиод моргал с частотой единицы Гц. Микроконтроллер SAM3S4B имеет гибкую систему тактирования, которая обычно настраивается в начале программы. В этом примере мы ее не трогаем, поэтому микроконтроллер тактируется от внутреннего низкочастотного генератора с частотой 4 МГц. Обратите внимание, библиотечные функции имеют префикс, по которому легко понять к какой периферии они относятся. Чтобы получить информацию о любой функции или константе в программе, нужно кликнуть по ее имени правой кнопкой мыши и выбрать пункт Goto Implementation.



Спасибо за ваше внимание к сайту!