глобальные\локальные переменные

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

Имеем вот такую инфу:

Скетч использует 15 190 байт (49%) памяти устройства. Всего доступно 30 720 байт.
Глобальные переменные используют 1 137 байт (55%) динамической памяти, оставляя 911 байт для локальных переменных. Максимум: 2 048 байт.

объясните плиз что такое глобальные переменные..

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

exez пишет:

Имеем вот такую инфу:

Скетч использует 15 190 байт (49%) памяти устройства. Всего доступно 30 720 байт.
Глобальные переменные используют 1 137 байт (55%) динамической памяти, оставляя 911 байт для локальных переменных. Максимум: 2 048 байт.

объясните плиз что такое глобальные переменные..

https://ru.wikipedia.org/wiki/%D0%93%D0%BB%D0%BE%D0%B1%D0%B0%D0%BB%D1%8C...

Никакого другого смысла в Ардуино этому панятию не назначается.

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

Читал это.. 

Объясните плиз что надо оптимизировать, чтоб уменьшить этот параметр? Просто макетирую на чипе нано, а использовать хотел более простой\дешевый про мини 168.. а туда это явно не влезет :)

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Невозможно оптимизировать то, чего нету...

P.S. а где вы откопали ПроМини на 168 аттмеге?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

exez пишет:

Объясните плиз что надо оптимизировать, чтоб уменьшить этот параметр?

Нужно уменьшеать количество глобальныйх переменных (например, делая их локальными) и их размер (например, используя byte вместо int, где это допустимо).

Еще следует избавиться от копирования констант в оперативную память (см. PROGMEM).

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

Спасибо. VOID я так понимаю тоже жрет интересующий меня ресурс памяти.. :) А у меня все в процедурках..

тут откопал: http://ru.aliexpress.com/item/Pro-Mini-Module-Atmega328-5V-16M-For-Arduino-Compatible-With-Nano/2021666535.html?spm=2114.03020208.3.1.Ay95gc&ws_ab_test=searchweb201556_2_79_78_77_91_80,searchweb201644_5,searchweb201560_9

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

exez пишет:

Спасибо. VOID я так понимаю тоже жрет интересующий меня ресурс памяти.. :) А у меня все в процедурках..

Что-то вы не так понимаете...

На самом деле - изменение типа int на byte поможет только если у вас емкий массив этих величин. А жрут больше всего экземпляры классов из подключаемых библиотек.

Покажите код - может и подскажем, чего...

оно вам действительно нужно?

http://www.ebay.com/itm/Pro-Mini-atmega328-Board-5V-16M-Arduino-Compatib...

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

относительно ответов - огромное спасибо.

сегодня говорил с заказчиком автоматики - код паказывать смысла особого нет. ибо он еще будет дописываться. следовательно еще выростет.

что касается вопроса: оно вам действительно нужно?

- просто было интересно куда убегают ресурсы..., когда писал свой первый код даже не представлял чем можно забить всю память :)

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

exez пишет:

что касается вопроса: оно вам действительно нужно?

- просто было интересно куда убегают ресурсы..., когда писал свой первый код даже не представлял чем можно забить всю память :)

Я спросил про ПроМини на 168 аттмеге, учитывая, что на 328 стоит столько-же.

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

я их заказал по 1.2 бакса десяток. думал в эти пульты втыкать :) ну пойдут куда то в другие игрушки..

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

Возможно кому то пригодится. Оказывается Serial.print здорово жрет ресурсы.

Убрал вывод данных в последовательный порт. количество глобальных переменных сократилось с 82% до 55% :)