15-10-2014, 17:52
Tak Przemek zdecydowanie masz rację, kilkakrotnie w swoich projektach otarłem się o ten problem. Dlatego zawsze staram się stosować różne zabiegi by nieco zaoszczędzić pamięć.
Zamiast:
Oczywiście dla zmiennych które nie są modyfikowane w trakcie pracy programu.
Często też stosuje jeden bufor służący do printowania danych i zmieniam tylko jego zawartość. Jeden uniwersalny zajmuje często mniej miejsca niż pięć mniejszych do konkretnych celów.
Dodatkowym utrudnieniem jest też słabość środowiska arduino w tej kwestii. Nie posiada ono narzędzi do diagnostyki, debugowania.
Nasz program ten powyżej w tej chwili zużywa około 300 bajtów ramu z dostępnego obszaru 2kb.
Jest taki fajny kawałek kodu który pozwala ocenić wielkość dostępnej pamięci:
Wystarczy gdzieś w głównej pętli wyprintować efekt działania tej funkcji.
Kod:
const int jakas_zmienna = 123;Kod:
int jakas_zmienne = 123;Oczywiście dla zmiennych które nie są modyfikowane w trakcie pracy programu.
Często też stosuje jeden bufor służący do printowania danych i zmieniam tylko jego zawartość. Jeden uniwersalny zajmuje często mniej miejsca niż pięć mniejszych do konkretnych celów.
Dodatkowym utrudnieniem jest też słabość środowiska arduino w tej kwestii. Nie posiada ono narzędzi do diagnostyki, debugowania.
Nasz program ten powyżej w tej chwili zużywa około 300 bajtów ramu z dostępnego obszaru 2kb.
Jest taki fajny kawałek kodu który pozwala ocenić wielkość dostępnej pamięci:
Kod:
int freeRam () {
extern int __heap_start, *__brkval;
int v;
return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}Wystarczy gdzieś w głównej pętli wyprintować efekt działania tej funkcji.
...przede wszystkim nie zakłócać...

