Arduino Memory

Fra Holstebro HTX Wiki
Skift til: navigering, søgning

Den klassiske Arduino (som Arduino UNO) har en ret begrænset hukommelse, så når man begynder at skrive lidt større programmer til den, så kan det være en rigtig god ide at have styr på hvordan hukommelsen er organiseret i en Arduino, og hvordan man sparer på hukommelsen.

Adafruit har en godt skrevet artikelserie[1], som beskriver teknikken ret godt.

Måling af hukommelsen

Da programmer bruger hukommelsen på forskellig vis, så kan det være smart at kunne "måle" hvor meget hukommelse der er fri. Til dette angiver adafruit en rutine de har lånt[2]

Når problemet opstår

Problemet opstår på et tidspunkt, og det er typisk der hvor man er ved at tilføje de sidste dele til et projekt, eller sætte forskellige kodedele sammen.

Det djævelske ved det er, at det ikke kommer med en klar fejl, når det er Arduino. På en PC, så vil styresystemet opdage fejlen, og gode compilere vil komme med en tydelig advarsel, der indikerer hvad problemet er. Arduinoen kan i værste fald bare begynde at opføre sig "sært", fx ved at den resetter spontant en gang imellem.

Løsningen er at optimere sin brug af hukommelsen - det er ikke altid simpelt, men det kan være nødvendigt. Læs artiklerne fra adafruit, de siger meget om teknikken.

De typiske mistænkte

Render man i problemer, så er der nogle ting, som specielt kan give problemer:

SD-kort sluger rigtigt meget hukommelse i en Arduino - typisk mere end halvdelen i en UNO, bare ved simple filhåndteringer.

Nogle typer displays bruger også meget hukomelse (specielt farvedisplays).

String() typen kan spise ret meget hukommelse, da den allokeres dynamisk.

Referencer

  1. Arduino hukommelse gennemgået af Adafruit.com
  2. Rutine til måling af fri hukommelse under afsnittet SRAM