有没有办法检测eeprom的第一次访问

时间:2016-01-06 10:49:49

标签: c++ arduino atmega

环境

我正在为atmega328p上的arduino写一个小游戏,我试图通过从eeprom内存中读/写来保持高分。

但我不知道如何检查eeprom中的数据是否是正确的高分或一些随机数据。

问题

您是否有办法检测eeprom中的数据是否属于该计划的一部分,或者手动将其重置为Atmel Studio / Arduino IDE中的特定值?

3 个答案:

答案 0 :(得分:2)

你总是可以尝试写一个像这样的小结构:

struct
{
uint32_t Signature;
uint32_t HighScore;
}EEPROMData;

将签名设置为已知的硬编码值,设置高分,并编写整个结构。阅读时,您将检查签名。这不太可能是你的价值。

如果你需要更多的保险,它不仅仅是随机数据,你可以这样做:

struct
{
uint32_t Signature;
uint32_t HighScore;
uint32_t XORRResult;
}EEPROMData;

并在签名和高分之间写入XOR结果。当你阅读它时,你要将签名和高分的xor与XORResult进行比较。如果它匹配,那么你写了那些数据,不是随机的。

答案 1 :(得分:2)

如果您对电路板进行编程,则可以擦除电路板。这意味着所有字节读取为0xFF。如果将高分作为BCD或ASCII(任何从不对数据使用0xFF的表示)存储,您可以轻松检测是否第一次写入高分。

答案 2 :(得分:0)

首先:

您不应将高分数写入EEPROM,应将其视为只读

回答你的问题:在高分https://en.wikipedia.org/wiki/Parity_bit

中添加一些奇偶校验方法可能更好