余談。
今使ってるATmega88Pは、RAMの容量が1kByteと大きいのだけども
統計とかやりはじめるとRAMをたくさん喰うので
配列にRAMを喰われたくないのだ。
AVRは、どうやらconstで書いてもRAM上に展開されるコードになるようで
ちっともRAMの使用量が減ってくれない。
ググってみたら、どうやらPROGMEMというのを使うらしい。
★ PROGMEM使用 ————————————————
1 2 3 | #include <avr/pgmspace.h> // PROGMEM使用 unsigned int PROGMEM MonthDays[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; |
AVR Memory Usage
—————-
Device: atmega88p
Program: 4776 bytes (58.3% Full)
(.text + .data + .bootloader)
Data: 746 bytes (72.9% Full)
(.data + .bss + .noinit)
★PROGMEM不使用 ————————————————
1 2 | const unsigned int MonthDays[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; |
AVR Memory Usage
—————-
Device: atmega88p
Program: 4768 bytes (58.2% Full)
(.text + .data + .bootloader)
Data: 772 bytes (75.4% Full)
(.data + .bss + .noinit)
—————————————————————-
うん、まぁ、こんな感じ。
結構減るよね。
Comments