最終更新:2010-03-15 (月) 12:33:30 (5382d)
PROGMEM
Top / PROGMEM
http://www.arduino.cc/en/Reference/PROGMEM
メモ
Arduino で使用されている ATmega168, ATmega328 等のマイクロコントローラーには 1KB ないしは 2KB 程度の容量の SRAM しか搭載されていない。そこでちょっとした量のデータを扱おうとすると,すぐにメモリが足りなくなってしまう。
これに対して,プログラム格納用のフラッシュメモリの方は 16KB ないしは 32KB と比較的余裕がある。メモリを節約するには,なるべくこちらの方へデータを格納するようにしなくてはいけない。
ただ,例えば配列に const 修飾子を付けたりしただけでは,データをフラッシュメモリ側に置くことはできない。これを実現するには PROGMEM と呼ばれる仕組みを利用する必要がある。
// 配列をフラッシュメモリ側に持つ PROGMEM prog_uint16_t wordArray[] = {0x1111, 0x2222, 0x3333, 0x4444}; // wordArray[2] を読み出す uint16_t word = pgm_read_word_near(wordArray + 2);