вторник, 23 апреля 2019 г.

Ускоряем работу ARDUNO. Подборка ссылок на статьи.

Часто приходится сталкиваться с необходимостью переключать цифровые порты платы arduino cо скоростью в десятки килогерц. Для решения этой задачи требуется детальное понимание внутренних механизмов работы платы, которые, как правило скрыты от "обычных" пользователей IDE ARDUINO. Для восполнения этого пробела ниже приводится несколько ссылок на статьи по теме ускорение работы arduino c разъяснениями внутренних механизмов работы платы.

Ускоряем Arduino в 20 раз

Библиотека «CyberLib» даёт существенный прирост скорости (запись/чтение цифровых портов в 20 раз) и уменьшает размер используемой памяти. 
Синтаксис предельно прост и будет понятен даже новичкам.
Ссылка на скачивание находится в конце статьи.


Сегодня я протестирую фактическую скорость работы функции digitalWrite на своей Arduino Mega2560 и расскажу как ускорить работу программы в 50 раз! В основе отладочной платы Arduino Mega2560 лежит микроконтроллер AT2560, работающий с тактовой частотой 16 Мгц. Если перевести эти 16 миллионов колебаний во временной интервал, то получим достаточно небольшой период, равный 62.5 нс. Это быстро, но действительно ли Arduino выполняет операции с такой же скоростью? Давайте посмотрим.

Тюнинг Arduino или ускоряем работу платы

Если вы попали на эту страницу, значит вас перестало устраивать быстродействие вашей платы Arduino, вы понимаете, что что-то не так, но не можете понять что. Именно для вас эта статья.

Может я сделаю открытие, но стандартные для Arduino-версии языка C++ самые распространенные функции pinMode, digitalWrite, digitalRead, analogWrite, analogRead, Serial.print, Serial.println (и другие) — это всего лишь удобные обертки для тех, кто не желает лезть в дебри программирования. Эти функции-обертки содержат определенные механизмы проверок корректности исполнения, которые увеличивают время получения результата в разы!

Ускоряем свою Arduino


Месяца 3 назад, как и многие горе-электроники, купил себе на мой тогдашний взгляд самую навороченную микропроцессорную плату из семейства Arduino, а именно Seeeduino Mega, на базе процессора Atmega1280. Побаловавшись всласть вращающимся сервоприводом и моргающим светодиодом, встал вопрос: «зачем же я её купил?».


Ускорение Arduino

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

Как определить производительность Arduino?

Прежде чем заняться изучением приемов увеличения скорости работы скетчей, потратим немного времени на тестирование Arduino, чтобы просто понять, насколько ее производительность сопоставима с производительностью компьютеров, начав с таких понятий, как мегагерц и гигагерц.


Тактовый генератор на плате Arduino Uno имеет частоту 16 МГц. Большинство инструкций (сложения или сохранения значения в переменной) выполняется за один такт. То есть Uno может выполнять до 16 млн элементарных операций в секунду. Вроде бы неплохо, не так ли? Однако все не так просто, потому что инструкции на языке C, которые вы пишете в скетчах, разворачиваются в множество машинных инструкций.