EEPROM.read(地址)和EEPROM [地址]之间有什么区别

时间:2017-08-10 16:02:47

标签: memory arduino eeprom

我在Arduino上使用EEPROM来存储一些大型常量数组。我注意到EEPROM.read(地址)和EEPROM [地址]都适用于我的阅读。但是关于EEPROM [地址]方法的文献很少。我也偶尔会遇到使用该方法的内存崩溃。

EEPROM.read(地址)长期未经过全面测试。编译时确实需要更多的存储空间。它在幕后的行为更安全吗?

2 个答案:

答案 0 :(得分:0)

EEPROM [地址]将为您提供对eeprom单元格的引用,而EEPROM.read(地址)将为您提供来自该单元格的无符号字符值。

在这两种情况下,您都应确保您的地址有效。

确保地址为> = 0且< EEPROM.length()。

答案 1 :(得分:0)

  

EEPROM.read(adress) - >读取EEPROM(地址从0开始)并将其值作为unsigned char发送。

     

EEPROM [地址] - >参考地址

的eeprom单元格

为了减小你的大小你可以使用avr / eeprom库,它有各种功能和宏用于eeprom使用。这是一个可靠的库,经过了充分测试。 avr/eeprom.h

示例代码

#include <EEPROM.h>
#include <avr/eeprom.h>

void Eepromclr();

void setup() {

  Serial.begin(9600);

  eeprom_write_byte((void*)0,12);
  int x = eeprom_read_byte((void*)0);\
  Serial.println(x);

  Eepromclr();

  eeprom_update_byte((void*)0,6);
  int y = eeprom_read_byte((void*)0);
  Serial.println(y);

}
void loop() {

}

void Eepromclr() {
  for (int i = 0 ; i < EEPROM.length() ; i++) {
  EEPROM.write(i, 0);
}
Serial.println("Eeprom is cleared");
}