Arduino Memory, bir projeye başlamadan önce hangi kartı seçeceğiniz önemlidir. Bu seçimi yaparken projenizde kullanılan kartın memory özelliği önemlidir. Arduino kartlarında 3 adet hafıza (memory) bulunur. Bunlar Flash, SRAM ve EEPROM olarak isimlendirilir.
- Flash bellek (program alanı), Arduino taslağının depolandığı yerdir. Program kodumuzun uzunluğudur.
- SRAM (Static Random Access Memory – Statik Rasgele Erişim Belleği), taslağın çalışırken değişkenleri oluşturduğu ve değiştirdiği yerdir.
- EEPROM, programcıların uzun vadeli bilgileri depolamak için kullanabilecekleri bellek alanıdır.
Flash bellek ve EEPROM belleği geçici değil kalıcı bellektir. (non-volatile) Enerji kesildikten sonra kaybolmaz. SRAM uçucudur ve enerji kesildiğinde kaybolacaktır.
Uno‘ da bulunan ATmega328 yongası aşağıdaki miktarda belleğe sahip:
Flash 32k bayt (bunlardan .5k bootloader için kullanılır)
SRAM 2k bayt
EEPROM 1k bayt
Mega2560‘ taki ATmega2560 daha büyük bellek alanına sahip:
Flash 256k bayt (8k, bootloader için kullanılır)
SRAM 8k bayt
EEPROM 4k bayt
Uno’da fazla miktarda SRAM bulunmadığına dikkat edin. Programınızdaki birçok dizgiyi kullanarak hepsini kullanmak kolaydır. Örneğin:
char message [] = “Kaizen 4.0 – Dünyanı İyileştir”;
SRAM içine 31 bayt yer kaplar (her karakter bir bayt, artı ‘\0′ sonlandırıcısını alır). Bu çok fazla görünmeyebilir, ancak özellikle bir ekrana gönderilecek çok miktarda metin veya örneğin büyük bir arama tablosu varsa, 2048’e ulaşması uzun sürmez.
SRAM’iniz tükenirse, programınız beklenmedik şekillerde başarısız olabilir; başarıyla yüklenebilir, ancak çalışmayabilir. Bunun olup olmadığını kontrol etmek için, sketch’ inizdeki dizeleri veya diğer veri yapılarını yorumlamayı veya kısaltmayı deneyebilirsiniz. Daha sonra başarılı bir şekilde çalışıyorsa, muhtemelen SRAM’in bitmesi demektir. Bu sorunu çözmek için yapabileceğiniz birkaç şey var:
Arama tablolarına veya diğer büyük dizilere sahipseniz, ihtiyacınız olan değerleri saklamak için gereken en küçük veri türünü kullanın; örneğin, bir int iki byte alır, bir byte ise sadece birini kullanır (fakat daha küçük bir değer aralığı saklayabilir). Sketch’ inizle çalışırken dizeleri veya verileri değiştirmeniz gerekmiyorsa, bunları SRAM yerine flash (program) belleğinde saklayabilirsiniz; Bunu yapmak için PROGMEM anahtar sözcüğünü kullanın.
EEPROM’u kullanmak için, daha önceki EEPROM yazımızı inceleyebilirsiniz.
0 yorum