PROGMEM

Datayı SRAM yerine Flash’ta depolamaya yarar.

Sadece pgmspace.h’ta tanımlanan değişken tiplerinde işe yarar. Kendisi de pgmspace.h’ta tanımlandığından yazdığınız programda kullanmak için pgmspace.h’ı da programa eklemelisiniz.

#include <avr/pgmspace.h>

Kullanımı:

değişken_tipi değişken_adı[] PROGMEM = {değişken1, değişken2, değişken3, …}

PROGMEM bir değişken değiştirici (variable modifier) olduğundan değişken tanımlanırken hangi sırada kullanıldığının önemi yoktur. Şu şekillerde de kullanılabilir:
değişken_tipi değişken_adı[] PROGMEM = {}
değişken_tipi PROGMEM değişken_adı[] = {}
PROGMEM değişken_tipi değişken_adı[] = {}

PROGMEM kullanımı iki aşamalı bir işlemdir, datayı Flash’a yazmak için olduğu gibi okumak için de özel yöntemler vardır.

PROGMEM için kullanabileceğiniz değişken tipleri şunlardır:
prog_char signed char tipindedir, 1 byte alan kaplar (-127, 127 arası)
prog_uchar unsigned char tipindedir, 1 byte alan kaplar (0’dan 255’e kadar)
prog_int16_t signed int tipindedir, 2 byte alan kaplar (-32.767, 32768 arası)
prog_uint16_t unsigned int tipindedir, 2 byte alan kaplar (0’dan 65.535’e kadar)
prog_int32_t signed long tipindedir, 4 byte alan kaplar (-2.147.483.648 – 2.147.483.647 arası)
prog_uint32_t unsigned long tipindedir, 4 byte alan kaplar (0’dan 4.294.967.295’e kadar)

Örnek


#include <avr/pgmspace.h>

// flash’a metin kaydetme
prog_uchar mesajimiz[] PROGMEM = {“MERHABA ARDUINO. NABER?”};

int k;
char myChar;

// flash’tan metni okuma
myChar = pgm_read_byte_near(signMessage + k);

Kaynak: http://www.arduino.cc/en/Reference/PROGMEM

Hakan İyice

Bilgisayar mühendisi, web yazılım uzmanı, hobi elektroniği meraklısı

1 comment

  1. kaptan dedi ki:

    signMessage yerine mesajimiz yazılmalı sanırım kodları kaynak sayfadan kopyalarken dikkat etmemişsiniz.

E-posta adresiniz gösterilmeyecek. Gerekli alanlar * ile işaretlidir.

*



Sosyal Ağlar