Learning Examples | Foundations | Hacking | Links
用在 Arduino (ATmega168) 上的单片机含有三类存储器:
Flash 存储器和 EEPROM 存储器是非易失性的(掉电后信息仍然存在)。SRAM 是易失性的,掉电后信息丢失。
ATmega168 芯片的存储器容量如下:
Flash 16k 字节 (其中2k被bootloader使用) SRAM 1024 字节 EEPROM 512 字节
注意可用的 SRAM 空间并不多。如果你的程序中有大量的字符串,很容易就会把它用完。比如象这样的声明:
char message[] = "I support the Cape Wind project.";
在 SRAM 中占用了 32 字节(每个字符占 1 个字节)。这看起来并不多,不过用完这1024字节也是很快的,特别是当你要在显示设备上输出一大堆的文字,或是一个大的查找表时。
如果用完了 SRAM,你的程序会出错: 看起来上传成功了,但是不能运行,或者运行了但表现得很奇怪。为了确认是这个原因引起的,你可以尝试注释掉或缩短字符串和其他数据结构(不要改变代码)。如果运行成功了,那就说明很可能是SRAM用尽了。有一些办法来对付这种情况:
要使用 EEPROM, 参见 EEPROM library.