Радиолоцман Электроника en
расширенный поиск +
  

25-08-2012

Несколько причин не использовать Arduino в своих конструкциях

Arduino

Vassilis K. Papanikolaou, Греция

На самом деле идея Arduino замечательна. Это золотое дно для новичков, т.к. на ее основе можно разрабатывать конструкции простого и среднего уровня за короткие сроки. Это великолепная микроконтроллерная платформа для отладки и прототипирования с огромным количеством готовых проектов с открытым исходным кодом, учебных материалов, форумов и пр., что очень важно для всех при изучении встраиваемых систем. Используя простую интегрированную среду разработки и код на С++-подобном языке, USB кабель и несколько пассивных компонентов, возможно в считанные секунды заставить мигать светодиод, или организовать обмен данными с ПК за несколько минут, не имея серьезного опыта в электронике.

Arduino UNO

Это, несомненно, отличное стартовое решение, но как далеко Вы можете зайти в использовании Arduino? Ну, довольно далеко, но до определенного предела, потому что (как и вообще в жизни) всегда приходится выбирать между простотой и производительностью. Наверное, именно поэтому наблюдается появление высокопроизводительных клонов Arduino, таких как ChipKIT на микроконтроллерах компании Microchip семейства PIC32 или Netduino на микроконтроллерах ARM. Эта альтернатива может спасти разработчика во многих случаях приростом производительности, но, в конечном счете, все же остаются скрытые функции и библиотеки, которые используют ресурсы микроконтроллера, и пользователи будут вынуждены изучать аппаратную часть микроконтроллера.

ChipKit  Cerebot MX3cK

Автор лично решил полностью отказаться от Arduino после нескольких месяцев изучения. Фактически, как утверждает автор, сама платформа Arduino подтолкнула его на этот шаг. Ниже приведены причины, но сначала рассмотрим преимущества Arduino.

Плюсы Arduino (Что замечательно):

  • Интегрированная среда разработки Arduino IDE основывается на компиляторе языка Си AVRGCC. Изучение Arduino, в конечном счете, поможет в изучении С++. Если Вам не нравятся специфические высокоуровневые Arduino команды или библиотеки, вы сможете заменить их на С++ эквиваленты (как выясняется, не всегда);
     
  • Питание, программирование и коммуникация с Arduino платформой осуществляется с помощью одного кабеля USB (или кабеля с адаптером на специализированной микросхеме FTDI для некоторых клонов);
     
  • Со встроенными библиотеками вы можете реализовать какой-то простой (и медленный) проект за считанные минуты, не задумываясь, как эти библиотеки реализованы, и как работают. Медленно происходит чтение кнопок, отображение данных на ЖК дисплее или их отправка по последовательному интерфейсу, работа с электродвигателями;
     
  • Коммуникация по последовательному интерфейсу и SPI превосходна и стандартна.

Минусы Arduino (Что ужасно):

  • Arduino IDE – это самый худший и самый непригодный редактор кода после «Блокнота». В один день вы переключитесь на достойный внешний редактор, однако вам все равно придется оставить открытой Arduino IDE для программирования устройства;
     
  • Загрузчик Arduino. Для того, чтобы завершить какое-либо Arduino-устройство, вам придется вручную запрограммировать загрузчик в каждый «чистый» микроконтроллер ATmega. Это уменьшает доступный объем Flash-памяти программ на 2 КБайта;
     
  • Всего несколько вариантов: если вы будете использовать официальные платы Arduino, то выбрать вы сможете только из вариантов с 30 Кбайт или 254 КБайт встроенной памяти программ. Что будет, если ваш код занимает, скажем 42 КБайта? Единственный выбор – использование клона Sanguino, который не полностью совместим с Arduino;
     
  • Нет простого способа изменить тактовую частоту, не так ли? Модель микроконтроллера с питанием 3.3 В и тактовой частотой 8 МГц может безопасно работать на частоте 12 МГц;
     
  • Функция digitalWrite() выполняется за 56 циклов (хотя автором был получен результат в 400 циклов). По крайней мере, это легко выяснить и перейти к использованию прямого доступа к портам (второй элемент для изменения, после Arduino IDE). Как правило, Arduino не очень удобна для написания эффективного кода;
     
  • Вы не сможете (по крайней мере, просто) отключить библиотеку последовательной коммуникации, используемую по умолчанию, чтобы использовать TX и RX прерывания, независимо от того, была она запущена, или нет;
     
  • Подпрограмма обслуживания прерывания по переполнению таймера запускается через каждые 16000 циклов в фоновом режиме. Это сделано для работы функций millis() и micros(), даже когда они не используются;
     
  • Пустой Arduino проект для платформы Arduino UNO занимает 466 Байт и 666 Байт для Arduino Mega2560. Дополнительное расходование ресурсов не устраивает многих, в том числе и автора статьи. Также неприятно видеть ошибки компиляции проекта, связанные с вышеописанными изменениями;
     
  • Последнее, но не менее важное – среда разработки Arduino, без сомнения, «скрывает» важные аспекты архитектуры микроконтроллера: регистры, прерывания и таймеры. Их знание просто необходимо.

В связи с этим автор утверждает, что настало время использовать чистый AVRGCC. Однако, у него тоже есть свои плюсы и минусы.

Трудности при использовании AVRGCC:

  • Необходимость переписывать некоторые элементы в С++, наиболее важным из которых является обмен по последовательному интерфейсу (возможно, лучшая часть в Arduino). К счастью, имеется много практических советов и руководств по этой задаче. Написание других протоколов гораздо проще, например, SPI; 
     
  • Необходимо изучить, в какие библиотеки включены команды без компиляции, и включить эти библиотеки в свой файл исходного кода. Наиболее распространенными являются: avr/io.h, avr/interrupt.h, util/delay.h, stdio.h and string.h;
     
  • Типы байтовых и логических переменных должны быть uint8_t и bool, байтовые числа, например B00010001, должны быть в виде 0b00010001, и так далее. Вы найдете все остальные изменения, их очень мало;
     
  • Требуется больше знаний и, главное, не сдаваться.

Польза от использования AVRGCC:

  • Нужен другой процессор для увеличения памяти программ или производительности? Вы можете его использовать (например, из той же серии megaAVR), и придется только перекомпилировать проект. Потребуется изменить некоторые регистры и имена прерываний, make-файл и Fuse-биты;
     
  • Нужна другая тактовая частота? Используйте другой кварцевый резонатор, или можно использовать встроенный осциллятор микроконтроллера, всего лишь изменив Fuse-биты и make-файл;
     
  • Можно использовать достойную (Notepad++) или мощную (Atmel Studio 6) интегрированную среду разработки кода;
     
  • Вы получаете полный контроль над своим кодом. То что вы написали, то и выполняется. Ничего не скрывается, ничего не происходит без вашего согласия. Вы пишете более эффективный и быстрый код. Вы узнаете больше.

Как и для Arduino, для AVRGCC имеется большое количество вспомогательных средств, готовых проектов, библиотек и учебных материалов. Выбор остается за пользователями.

vpapanik.blogspot.com

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: Many reasons not to use Arduino in your next project

Срезы ↓
антенны Maxtena для приложений GPS (L1, L2), ГЛОНАСС и IRIDIUM
Инновационные антенны Maxtena для приложений GPS (L1, L2), ГЛОНАСС и IRIDIUM
Спиральные и микрополосковые антенны
Осциллограф Rohde Schwarz RTB2002
Осциллограф Rohde&Schwarz RTB2002
Цена: от 128 тыс. руб.
Доставка: Россия
Датчики влажности и температуры ДВТ-03
Датчики влажности и температуры ДВТ-03
Цена: от 3 168 руб.
Доставка: Россия и страны СНГ
Рейтинг@Mail.ru