Рубрика «Сколько весит в граммах» разбираем размер функций. Стандартные функции.

В данной рубрике мы будем рассматривать разных библиотек для оценки размера прошивки контроллера. В результате чего сформируем сравнительную таблицу.

Начнем со стандартных функций .
И сравним размеры при прошивке разных контроллеров на примере Arduino Uno, ATtiny13 и ATtiny85.
Размеры будем писать в байтах.

Список функций поддерживаемые этими контроллерами:

Функция uno 85 13 % uno % 85 % 13
Размер памяти 32256 8192 1024 1 1 1
Пустой скетч 466 332 312 1,44 4,05 30,47
digitalWrite первое добавление 266 156 144 0,82 1,90 14,06
digitalWrite очередное добавление 8 6 6 0,02 0,07 0,59
digitalRead первое добавление 262 154 144 0,81 1,88 14,06
digitalRead очередное добавление 6 4 4 0,02 0,05 0,39
Регистры PORT,PIN, DDR первое добавление 4 4 4 0,01 0,05 0,39
Регистры PORT,PIN, DDR очередное добавление 2 2 2 0,01 0,02 0,20
analogRead первое добавление 76 54 56 0,24 0,66 5,47
analogRead очередное добавление 6 4 4 0,02 0,05 0,39
pinMode первое добавление 224 168 168 0,69 2,05 16,41
pinMode очередное добавление 8 6 6 0,02 0,07 0,59
IF 0 0 0 0,00 0,00 0,00
delay первое добавление 190 192 192 0,59 2,34 18,75
delay очередное добавление 12 10 10 0,04 0,12 0,98
millis первое добавление 32 30 30 0,10 0,37 2,93
millis очередное добавление 4 2 2 0,01 0,02 0,20
delayMicroseconds первое добавление 28 26 26 0,09 0,32 2,54
delayMicroseconds очередное добавление 8 6 6 0,02 0,07 0,59
pulsein первое добавление 480 388 388 1,49 4,74 37,89
pulseIn очередное добавление 16 14 14 0,05 0,17 1,37

столбцы 5,6 и 7 — это процент от общей памяти контроллера

при совместном использовании перечисленных выше пунктов размер может уменьшиться до 10%

Проанализировав таблицу, делаем вывод:

  • При программировании через «ардуино» более компактные программы получаются на самом Arduino UNO.
  • Наименее компактный код получился для Attiny13.
  • Более менее сбалансированный для Attiny85.
  • Также видно, что количество использований одной и той же функции не сильно влияет на изменение размера.
  • Использование регистров PORT,PIN, DDR вместо digitalWrite, digitalRead, analogRead, analogWrite, pinMode сокращает размер этих блоков в 60+ раз, вместо 260 — 4.
  • Нет возможности использовать на контроллере Attiny13 все приведенные процедуры, т.к. общий размер будет превышать размер доступной памяти.

Добавить комментарий