你好。我有一个程序,在每个重置周期之前,我必须将一些数据保存到EEPROM,我成功写入14个字节:
我将3个值写入EEPROM:
数量 - 2个字节
serial_number -10字节
device_id - 2字节
因此总共14个字节
对于以下示例,我不向前12个字节(数量和serial_number),但只有2到device_id
将值2写入设备ID后,我可以根据您从上面看到它是徽章的。
重置后,我必须读回我写的值,但是,我无法成功读取EEPROM的值:
我所做的就是:
EEPROM.GET(12,SLAVE_ID);
serial.print(“get =”的“从属id”);
serial.println(slave_id);
结果是:
如果我写入值4,它将读回:
有人可以帮助我明白我的EEPROM在这里发生了什么吗?
代码:
void write_14_byte_chunks(int EEPROM_POINTER){if(item_inside.quantity!= last_quantity || new_slave_id!= slave_id || strcmp(item_inside.serial,last_serial)!= 0){serial.println(“旧和新变量之间存在不匹配的不匹配,写EEPROM“);int new_eeprom_pointer =(EEPROM_POINTER * 14);if(item_inside.quantity == 0)EEPROM.WRITESHORT(New_eeProm_Pointer,65535);//这将是eeprom.writeushort(new_eeprom_pointer,item_inside.quantity)ryte 2字节编号。//这将是reryte 2字节数字new_eeprom_pointer + = sizeof(unsigned short); //递增addr by 2 serial.print(写入量=之后的地址);serial.println(new_eeprom_pointer);EEPROM.WRITESTRING(new_eeprom_pointer,item_inside.serial); //这将写入10字节字符串new_eeprom_pointer + = 10;serial.print(“编写序列后的地址=”);serial.println(new_eeprom_pointer);if(new_slave_id == 0){eeprom.write(new_eeprom_pointer,65535); Serial.println("Writing 0xff to eeprom"); } else{ EEPROM.write(new_eeprom_pointer, NEW_SLAVE_ID); new_eeprom_pointer += sizeof(unsigned short);;// increment addr by 2 Serial.print("Address after writing slave id="); Serial.println(new_eeprom_pointer); } EEPROM.commit(); } else Serial.println("No need to write eeprom"); }
我将3个值写入EEPROM:
数量 - 2个字节
serial_number -10字节
device_id - 2字节
因此总共14个字节
对于以下示例,我不向前12个字节(数量和serial_number),但只有2到device_id
将值2写入设备ID后,我可以根据您从上面看到它是徽章的。
重置后,我必须读回我写的值,但是,我无法成功读取EEPROM的值:
我所做的就是:
EEPROM.GET(12,SLAVE_ID);
serial.print(“get =”的“从属id”);
serial.println(slave_id);
结果是:
如果我写入值4,它将读回:
有人可以帮助我明白我的EEPROM在这里发生了什么吗?