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

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

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.

– Вы полностью контролируете код. Он выполняет всё, что вы написали. Ничего не делается скрыто от вас. У вас есть все возможности. Вы пишете более быстрый и эффективный код. Вы узнаете новое и двигаетесь вперед.

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

Оригинал статьи на английском языке (перевод: Александр Касьянов для сайта cxem.net)


Категория: Arduino
Метки:

Написать коментарий

*
= 5 + 8

Добавить изображение

Последние статьи