23.09.2019

Arduino Uno В Качестве Программатора Avr

Arduino uno в качестве программатора avr

Arduino Uno В Качестве Программатора Avr

Почему я не люблю Arduino Добавил(а) microsin Платформа Arduino как система программирования для микроконтроллеров AVR завоевала заслуженную популярность. Платы Arduino стали очень дешевы (не фирменные конечно, а те, которые делают китайцы и продают на ebay, aliexpress и dx.com), примеров кода очень много, среда программирования и язык хорошо описаны, для большинства электронных устройств и микросхем написаны готовые библиотеки. Однако профессионалы и радиолюбители, которые уже имеют минимальный опыт работы с микроконтроллерами, часто говорят про Arduino с отвращением, и предпочитают использовать традиционные инструменты разработки (avr-libc + gcc, WinAVR, AVR Studio, IAR). Если Вы относитесь к абсолютным новичкам, которые ничего (или почти ничего) не понимают в схемотехнике, и совсем не умеют программировать (но очень хотят научиться), то вариантов для Вас нет - Arduino подойдет лучше всего. Если Вы продвинутый радиолюбитель, то из Arduino ничего полезного для себя не получите, Вы и так знаете что делать и как превратить микроконтроллер в рабочее устройство.

May 13, 2016 - Если вы используете Arduino UNO в качестве программатора, то подключите между RESET и GND конденсатор в 10 мкФ после заливки. Решил применить ардуино в качестве достойного программатора для AVR. Arduino UNO в качестве. Использование Arduino UNO в качестве программатора / Geektimes. Появилась у меня идея сделать.

Но если сомневаетесь в выборе, что для Вас лучше, то нужно изучить вопрос поподробнее - в чем преимущество каждого метода программирования? Для того, чтобы понять, в чем тут дело, давайте бросим общий взгляд на принципы программирования в Arduino и на обычном GCC (язык C). Условно назовем программирование на Arduino как AVR Arduino, и традиционное программирование как AVR GCC. Для тестов возьмем обычную Arduino-совместимую плату metaboard 1 (микроконтроллер ATmega328P), попробуем написать для неё код AVR Arduino и код AVR GCC, и подробно разберем, в чем разница. В качестве примера разберем традиционный HelloWorld для микроконтроллеров - мигание светодиодом.

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

Эффективность кода, дополнительные возможности Среда программирования. Для тех, кто не знает, краткая справка: AVR Studio это популярная IDE от Atmel, а WinAVR это тулчейн, т. Компилятор gcc и библиотеки для AVR. Оба они бесплатные, и должны использоваться совместно. Закачка и установка этих двух компонентов тоже особых вопросов не вызовет, если знаете где их искать (Google безусловно поможет). На сегодняшний день 141107 уже можно установить Atmel Studio 6, в этом случае WinAVR устанавливать не потребуется (тулчейн уже входит в состав Atmel Studio).

Я по старинке предпочитаю AVR Studio 4.19, WinAVR и готовые файлы makefile. Среда AVR Studio работает только на Windows, но на других операционных системах есть альтернативы - как командная строка, где можно компилировать исходный код командами make, так и GUI среда разработки Eclipse. Дополнительное замечание: под Windows как среда разработкидля AVR мне очень нравится Visual Studio 9. Это привычная, стандартная среда, с удобным сервисом - подсветка синтаксиса, быстрая навигация по коду, автозавершение, рефакторинг имен переменных и т. В плане простоты установки и использования платформа AVR Arduino (и её среда разработки Arduino IDE) однозначно выигрывает. Но в плане удобства использования и функционала Arduino IDE намного беднее по сравнению с AVR Studio (или Atmel Studio) или другими аналогичными инструментами.

Обзор языка: как построена программа У нас будет простейшая схема тестового устройства - светодиод через нагрузочный резистор подключен к цифровому порту 13 Arduino, это соответствует ножке порта GPIO PB5 микроконтроллера ATmega328P (подробнее про соответствие нумерации портов Arduino и соответствие этой нумерации ножкам микроконтроллера см. Программа должна на 0.5 секунды выдавать в порт лог. 1 (светодиод загорится), и затем на 0.5 секунды выдавать лог. 0 (светодиод погаснет). В результате получатся мигания светодиодом с частотой 1 Гц. AVR Memory Usage - Device: atmega328p Program: 216 bytes (0.7% Full) (.text +.data +.bootloader) Data: 0 bytes (0.0% Full) (.data +.bss +.noinit) Как видите, результирующий код получается 1090 байт у AVR Arduino, и 216 байт у AVR GCC.

Даже для такой простейшей программы GCC по размеру кода в 5 раз эффективнее Arduino! Как говорится, комментарии излишни. Если еще добавить, что у Arduino невозможно настроить никакие опции оптимизации и опции библиотек ввода/вывода (stdio/printf), память катастрофически кончается при попытке создать любую более-менее сложную программу, то понятно, почему у профессионалов одно упоминание про Arduino вызывает кривую усмешку. Давайте кратко рассмотрим, какие есть возможности для общения с внешним миром. Как подключать к микроконтроллеру различные устройства, микросхемы, оборудование, как осуществлять ввод и вывод через разные стандартные интерфейсы. Все это делается обычно через готовые библиотеки.

Arduino uno в качестве программатора avr

Набор библиотек очень обширный, и с течением времени постоянно пополняется - по мере появления на рынке нового оборудования и устройств. Библиотеки понятны и хорошо документированы. Работа с внутренней памятью EEPROM, сеть Ethernet, сеть WiFi, сотовая связь GSM, файловая система на картах SD, управление сервомашинками, шаговыми двигателями, I2C, UART, цифровой и аналоговый ввод и вывод, различные символьные и графические индикаторы, 1-Wire - все это есть и доступно, можно использовать 'из коробки', ничего нигде искать не надо.

Для некоторых продвинутых плат, которые имеют достаточно мощный процессор и аппаратный интерфейс USB, также доступны и другие возможности, такие как интерфейс USB и базовое управление задачами (шедулер). Однако нет доступа к исходному коду библиотек. Короче говоря - ешь что дают, и не жалуйся. Иначе и быть не может - тогда вся простота Arduino улетучится как дым. Так что про сложные проекты забудьте. С библиотеками, которые можно найти в интернете в виде готового исходного кода, возможностей на порядок больше, чем у Arduino.

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

Резюме - в прямых руках AVR GCC позволяет делать на порядок более эффективные и более сложные программы, чем Arduino. Примеры готовых проектов/скетчей есть как в самой среде Arduino IDE, так и в Интернете. Поначалу простота и кажущаяся легкость программирования Вас будет очень радовать. Но по мере развития и усложнения задач ничего готового в Интернете Вы уже не найдете, и в программировании постоянно будете натыкаться на грабли и глюки, которые не сможете ни исправить, ни отладить. Готовых проектов можно найти намного больше. Возможности AVR GCC с Arduino сравнивать просто смешно.

С 8 библиотека стандартных подсистем документация. Но это конечно доступно только для тех, кто понял основную кухню GCC. Из всего вышесказанного не значит, что мне не нравятся платы Arduino.

Вовсе нет - они очень удобны, недороги, практичны, их легко купить или даже сделать самому. Как раз платы Arduino я очень люблю, и с удовольствием применяю в разработках. Но мне не нравится именно среда программирования Arduino, и предпочитаю использовать традиционный GCC (AVR Studio или Atmel Studio, или даже Visual Studio 9). Выводы: если Вам нужно быстренько состряпать что-то типа светофора или новогодней гирлянды, или если надо как можно проще повторить какой-то готовый проект, то тогда Arduino хорошо подходит. Если же нужно решить задачу максимально эффективно, и Вы хотите как можно больше приблизиться к пониманию - как на самом деле все устроено и работает, то Ваш выбор язык C, тулчейн AVR GCC и даташит на используемый микроконтроллер. Arduino обычно выбирают те, кто готов пожертвовать эффективностью, скоростью кода и своими деньгами в угоду простоте использования железа и легкости программирования.

Ссылки 1. Arduino ATmega328 Pinout site:hobbytronics.co.uk. Я презираю Arduino site:habrahabr.ru. Arduino: спасибо и прощай site:cxem.net. утилита Khazama162, драйвер программатора USBasp для Windows XP, Windows Vista, Windows 7, Windows 8, прошивки загрузчика USBasp для различных микроконтроллеров. На сегодняшний день статья немного устарела. На самом деле вы можете соединить возможности библиотек Arduino и отладки через HappyJTAG2.

Другими словами, есть возможность компилировать и отлаживать скетчи традиционным способом через Makefile. Отладка WebServer (Arduino Mega 2560 + W5100) в AVR Studio 4 через HappyJTAG2: Краткие подробности тут: То же можно делать и через Proteus.

Будет время, напишу статью на хабре с подробностями. IMHO вы недостаточно знакомы с этой средой. Почитайте на досуге 'Margolis M.

Arduino Cookbook'. Там ничего ни во что не преобразуется - вы можете писать на C с использованием AVR GCC libc. Arduino - не более чем надстройка над GCC.

Существуют добротные порты AVR Arduino на более мощное альтернативное железо для PIC32 - (look DIY DP32 - PIC32MX250F128B 40Mhz/66DMIPS 128kbyteFlash/32kByteRAM. On DIP28SOIC28).

Для STM32F103xx - www.leaflabs.com. Microsin: все, о чем Вы сейчас пишете, мало коррелирует с темой статьи. Действительно, недостаточно знаком со средой Arduino.

Но знаком достаточно, чтобы оценить её эффективность с точки зрения новичка, что я и попытался сделать. В статье раскрыта собственно одна и только одна тема - сравниваются возможности традиционного программировани я в среде Arduino IDE с традиционным программировани ем на чистом C.

Несколько комментариев: Только у Arduino(mega328) по умолчанию включены механизмы тайминга millisTimer0 used micros4us step, uart c кольцевым буфером IRQ RX на 64 байта. А по вашему Arduino?

Тот же тулчейн AVR-GCC. Даем в консоли (Arduino 1.05): avr-gcc -v microsin: по первому комментарию могу только ответить, что все это скрыто системой Arduino от пользователя, и перенастроить под свои задачи нельзя. Именно за это я и не люблю Arduino.

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