Урок 2
Сегодня мы научимся создавать проекты в среде программирования 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". Данный файл мы и будем "заливать" в наш контроллер впоследствии. Для этого нам конечно надо будет научиться писать какой-то полезный код. Этим мы займёмся уже на следующем занятии.
Урок 2
Сегодня мы научимся создавать проекты в среде программирования 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". Данный файл мы и будем "заливать" в наш контроллер впоследствии. Для этого нам конечно надо будет научиться писать какой-то полезный код. Этим мы займёмся уже на следующем занятии.
Привет Гиктаймс. Новогодние праздники подходят к концу, все салаты съедены, шампанское выпито, и жизнь потихоньку начинает возвращаться в привычное русло. И это хорошо. Но речь совсем не об этом.
Дело, собственно, вот в чем: многие из нас, начиная свой путь программирования микроконтроллеров с платы 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, и команды для компилятора:
Потом можно создать любой проект, написав, к примеру, тот же код любимой моргалки, но уже на си, и загрузить наш код в контроллер, сначала собрав ваш проект, нажав F7 (Build project), и после кликнув на пункте с именем вашего профиля программирования во вкладке Tools:
Программа ваша будет записана в память программ контроллера, загрузчик останется на своем месте, и вы всегда сможете открыть Arduino IDE и записать ваш код привычным способом. Благодарю всех за внимание, и надеюсь, что данный совет будет кому нибудь полезен.