Немного о скорости выполнения программ на Arduino-совместимых платах. Часть 1: Аппаратный разгон: +50% к скорости
- 01.01.2017
- Автор: admin
- Рубрика: Полезные советы

Иногда скорость выполнения программы микроконтроллером играет важную роль в работе устройства. В устройствах регулирования (таких, как контролеры двигателей, стабилизаторы напряжения, измерительная аппаратура и т. д.) она часто бывает критически важной. Без высокой скорости работы программы не обойтись в высокочастотных устройствах (таких, как измерительные приборы, генераторы сигналов, радиоаппаратура и т. д.). Также важно иметь высокую скорость выполнения программы при сложных вычислениях (например, при моделировании работы различных устройств и систем) для ускорения процесса вычислений.
Скорость выполнения программы зависит от многих факторов. Но основными являются вычислительная мощность процессора и структура самой программы.
Arduino-совместимые платы, как правило, имеют вычислительную мощность 16 MIPS (16 миллионов операций в секунду). Это обусловлено установкой кварцевых резонаторов с резонансной частотой 16 МГц и характеристиками микроконтроллеров семейства AVR (выполнение одной элементарной операции за 1 такт).
Но 16 MIPS для Arduino-совместимых плат — не предел. Микроконтроллеры семейства AVR могут работать с тактовой частотой до 20 МГц (согласно документации производителя), таким образом развивая вычислительную мощность до 20 MIPS (125% от стандартной для Arduino-совместимых плат). Поэтому простой перепайкой резонатора можно заметно поднять скорость работы устройства без ущерба для остальных его характеристик.
Но и это — не предел. Микроконтроллеры семейства AVR имеют запас по многим параметрам. Например, они стабильно работают на частотах до 25 МГц, позволяя развивать вычислительную мощность примерно до 25 MIPS (более 150% от стандартной для Arduino-совместимых плат). Но следует заметить, что работа в режимах, не соответствующих технической документации производителя, не рекомендуется. А в ответственных устройствах она вообще недопустима.
Вывод: для Arduino 16 миллионов операций — не предел. Из неё и 20 без последствий можно выжать. А в некритичных к надёжности устройствах — и все 25.