Главная » Arduino
Призовой фонд
на ноябрь 2017 г.
1. Термометр Relsib WT51
Рэлсиб
2. 1000 руб
PCBWay
3. Тестер компонентов LCR-T4
Паяльник
4. 200 руб.
От пользователей

Arduino: спасибо и прощай

Для Arduino должен обязательно наступить этот день...

Arduino - это отличная платформа для моделирования на основе микроконтроллера, имеющая много вариаций, с кучей проектов с открытым кодом, учебников, форумов и т.д. для начинающих. Используя простой IDE(Integrated Development Environment, Интегрированная среда разработки), код на основе C++, USB кабель и несколько пассивных компонентов, можно начать мигать светодиодом или обмениваться сообщениями с компьютером (с Mac тоже) за несколько минут, не имея каких-либо серьезных предварительных знаний в электронике.

Это прекрасный старт, но как долго можно работать с Arduino? Довольно долго, но до определенного момента, потому что в электронике, как и везде в жизни есть компромисс между простотой и производительностью. Время и необходимость принятия такого решения зависит только от вас.

Лично я решил полностью отказаться от Arduino через несколько месяцев, поднимаясь по кривой обучаемости. Arduino само подтолкнул меня к этому решению. Ниже перечислены причины этого, но сначала идут преимущества:

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

Недостатки:
- Arduino IDE. Это самый худший редактор после notepad.exe. Когда-нибудь вы перейдете на более удобный сторонний редактор, но вам всё равно придется оставить IDE для прошивки. 
- Загрузчик. Чтобы закончить проект с применением Arduino, вам придется вручную прошить загрузчик в каждый новый микроконтроллер ATmega. Он занимает 2Кб памяти.
- Разнообразные варианты: в официальном модельном ряду есть варианты с памятью 30(32) Кб и
254(256)КБ. Что делать, если ваш код занимает, допустим, 42 КБ? Единственным решением является использование полу-совместимого клона Sanguino и др.
- Отсутствие простого способа изменения тактовой частоты. Модель 3,3В/8МГц может спокойно работать на частоте 12МГц!  
- digitalWrite() использует для выполнения  56 циклов (я измерял 400). По крайней мере, можно легко выяснить причину и переключиться на прямой доступ к порту (вторая вещь которая заменяется после IDE). Arduino не очень удобна для по время-зависимых приложений.  
- Вы не можете легко отключить стандартную библиотеку для последовательной аппаратной части, для того чтобы брать прерывания с TX и RX, независимо от того, запущена она или нет.
- При переполнении ISR таймера прерывание происходит каждые 16K тактов в фоновом режиме. Это сделано для функций millis() и micros(), даже когда они не используются.  
- Пустой проект Arduino занимает 466 байт на Arduino UNO  и 666 байт на Arduino Mega2560. Я не люблю лишние расходы и предупреждения при компиляции.  
- Также Arduino "скрывает" такие важные аспекты архитектуры микроконтроллеров как регистры, прерывания и таймеры. Изучайте их.

Настало то время, чтобы перейти к чистому AVRGCC?
Его плюсы и минусы:

Трудности:
- Необходимо переписать некоторые вещи в C++, в частности последовательную связь (возможно, это плюс Arduino). К счастью, есть много «изобретенных велосипедов», которыми мы можем пользоваться.  Использование других протоколов, например SPI гораздо проще.
- Узнайте, в какие библиотеки включены не скомпилированные команды, и добавьте их в cpp. Наиболее распространенными являются: avr/io.h, avr/interrupt.h, util/delay.h, stdio.h and string.h.
- тип данных byte  и boolean должны стать uint8_t и bool, байт  B00010001 должен  записываться как 0b00010001 и так далее. Вы найдете другие изменения, их мало.

Преимущества:
- Нужен другой, более ёмкий или мощный микроконтроллер?  Если вы берете микроконтроллер той же серии (MegaAVR) достаточно просто перекомпилировать код. Возможно, вам может потребоваться изменить некоторые регистры, имена прерываний, Makefile и фьюзы.
- Нужна другая частота? Смените кварц или используйте внутренний генератор просто изменив фьюзы и Makefile!
- Вы можете использовать любые IDE.
- Вы полностью контролируете код. Он выполняет всё, что вы написали. Ничего не делается скрыто от вас. У вас есть все возможности. Вы пишете более быстрый и эффективный код. Вы узнаете новое и двигаетесь вперед.

Также купите себе хороший логический анализатор. Можно сказать, что это глаза для слепого.

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

Теги:

Касьянов А. Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (6) | Я собрал (0) | Подписаться

0
tygra #
У ардуины основной плюс в том, что закодить можно имея школьный запас знаний по программированию.
Ответить
0
titov_andrei #
... и даже без него
Ответить
0
titov_andrei #
Когда пришлось искать что-то типа детского электронного конструктора для детей, то ничего другого не нашлось...
Ответить
0
Александр #
Не хочу быть программистом. Завидую и восхищаюсь ими, как и летчиками, моряками и др., но.... Не имею нужды зарабатывать этой профессией.
Желаю быстро проверять некоторые идеи в части электроники для дома, автомашины, дачи, сада, огорода. ARDUINO идеально отвечает моим запросам. Дождусь появления более продвинутого (чем МОНИТОР ПОРТА) сношения ARDUINO с ПК и буду счастлив.
Ответить
0
Михаил #
Посмотрите FLProg, может это то что Вы ищете?
Ответить
0
Сергей #
Платформа Ардуино - это инструмент, подходящий для одних целей и неподходящий для других. Большой ошибкой будет считать эту платформу для разработки детской ли очень простой. Это далеко не так! Вы же не используете ассемблер для написания сайта. Настоящий программист выберет ту IDE, которая позволит минимизировать процесс разработки и реализации проекта, а заниматься ИЗЛИШНЕЙ оптимизацией низкоуровневого кода во многих случаях нет необходимости (исключение - самообразование).
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Raspberry Pi 2
Raspberry Pi 2
Конструктор: DDS генератор сигналов Конструктор для сборки: предусилитель на лампе 6N3
вверх