环境
我正在为atmega328p上的arduino
写一个小游戏,我试图通过从eeprom
内存中读/写来保持高分。
但我不知道如何检查eeprom
中的数据是否是正确的高分或一些随机数据。
问题
您是否有办法检测eeprom
中的数据是否属于该计划的一部分,或者手动将其重置为Atmel Studio
/ Arduino IDE
中的特定值?
答案 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)