Arduino un kloniem ar ATMega328P ir tikai 2KB operatīvās atmiņas (RAM), kas no vienas puses nav maz, bet no otras – ar laiku jebkuru atmiņu var piepildīt, pat pārāk neizvirstot, rakstot kodu, kam jātiek galā ar daudzām lietām.

Problēma rodas tad, ja kodā tiek izmantotas teksta virknes – tās tiek glabātas tajā pašā mazajā RAM, līdz ar to, ja teksta ir pietiekami daudz, var vairs neatlikt vietas atmiņā, kur glabāt pārējos mainīgos, un tad viss kļūst neprognozējami un slikti.

Toties ir iespēja stringus glabāt Flash atmiņā un ielasīt tos operatīvajā atmiņā, kad nepieciešams. Tas ir drusku piņķerīgi, taču, ņemoties ar bortdatora programmatūru, sapratu, ka bez tā neiztikšu. Rezultāts – ļoti labi sanāca. No 165B brīvās atmiņas tiku pie 371B! Tas ir no 8 uz 18%!

Lieta tāda, ka uBlox GPS modulim var nosūtīt šādas tādas komandas, lai tas, piemēram, nepārtraukti nesūtītu parasto NMEA informāciju, bet gan dotu man to informāciju vienā piegājienā un tikai pēc pieprasījuma. Kopā tām komandām sanāk padaudz teksta. Plus vēl GSM modulim ir jānosūta dažas AT komandas – arī teksts. To visu tad arī pārvietoju no RAM uz Flash atmiņu.

Piemērs, pēc kura vadījos, – Arduino - PROGMEM. Protams, Flash atmiņā šādi var glabāt ne tikai tekstus, taču tā šoreiz bija mana lielākā sāpe, tāpēc es te par to.