Оптимизация использования оперативной памяти

Вопросы программирования в системе Ардуино
VNG
Сообщения: 18
Зарегистрирован: 29 ноя 2016, 21:34

Оптимизация использования оперативной памяти

Сообщение VNG » 27 дек 2016, 19:01

При использовании в программе нескольких библиотек возникает проблема дефицита оперативной памяти.
Для UNO совсем не хватает, для Leonardo выглядит так:
// библиотека для SD карт
#include <SPI.h>
#include <SD.h>
// библиотека для эмуляции Serial порта
#include <SoftwareSerial.h>
// библиотека для работы с GPRS устройством
#include <GPRS_Shield_Arduino.h>
// библиотека wire
#include <Wire.h>
// библиотека дисплея на шине I2C
#include <LiquidCrystal_I2C.h>

Сообщение компилятора:
Global variables use 2 089 bytes (81%) of dynamic memory, leaving 471 bytes for local variables. Maximum is 2 560 bytes.
Low memory available, stability problems may occur.

Вопрос:
Есть ли какие приемы оптимизации, или нужно использовать другой контроллер?


Аватара пользователя
БлудныйКот
Сообщения: 45
Зарегистрирован: 29 дек 2016, 16:19

Re: Оптимизация использования оперативной памяти

Сообщение БлудныйКот » 31 дек 2016, 00:28

Я бы попробовал почистить либы от ненужных условий и от подключаемых файлов. Так хоть немного сэкономите память. Я таким образом чистил библиотеку UTFT которая больно уж забита всяким мусором. Например если вы работаете на уно или нано то выкинуть из кода всё что связано с другими бордами ардуино.
После чистки UTFT даже немного увеличилась скорость заливки экрана.

VNG
Сообщения: 18
Зарегистрирован: 29 ноя 2016, 21:34

Re: Оптимизация использования оперативной памяти

Сообщение VNG » 26 янв 2017, 20:47

В моём случае самым эффективным способом сэкономить ОЗУ, оказался макрос F() для вывода строк на дисплей и в serial порт.
lcd.print( F( "message" ) );
Serial.print( F( "message" ) );
Экономия 2 байта на каждый символ. Теперь строки хранятся во флэш памяти, а её в разы больше.


Вернуться в «Программирование Ардуино»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя