我习惯使用高级语言编写PC和智能手机,微控制器对我来说是一个新的领域。它们是不同的,更不值得信赖,需要不同的技术?这里有一些代码可以写入和读取运行在Arduino Mega上的EEPROM :(附加了以太网屏蔽,此处未使用)
#include <EEPROM.h>
int addr = 0;
int val;
byte value;
void setup()
{
Serial.begin(9600);
}
void loop()
{
val = 9;
EEPROM.write(addr, val);
delay(500);
addr = addr + 1;
if (addr == 20) addr = 0;
value = EEPROM.read(addr);
Serial.print(addr);
Serial.print("\t");
Serial.print(value);
Serial.println();
}
下面是什么:
1 91
2 91
3 9
4 9
5 9
6 9
7 9
8 9
9 9
10 9
11 9
12 202
13 202
14 202
15 202
16 202
17 202
18 202
19 202
0 9
1 89
2 91
3 9
4 9
5 9
6 9
7 9
8 9
9 9
10 9
11 9
12 9
13 9
14 9
15 9
16 9
..... 一般来说,地址1和2总是不稳定,需要两次写操作才能改变~10以上的存储位置。
我可以换掉另一块电路板,但仍然有类似的怪异。
如何使我的编程适应这种看似不稳定的表现?
答案 0 :(得分:6)
简单地说,你的代码是错误的。
从逻辑上逐步执行。您正在写入地址为addr
的EEPROM。然后等待500毫秒,增加addr
,然后从新的addr
中读取。因此,您读取的addr
不是您写的addr
。