EEADR自动产生为为 EEADRL,实际没有此地址,当时就 改为uint8_t EEADRL,导致写入地址错误。
以下为更改正确的代码。
uint8_t Write_EE_Data()
{
EEADR = frame.address_L;
EEADRH = frame.address_H;
EECON1 = 0x04; // b'00000100'; // Setup for EEData
for (uint8_t i = 0; i < frame.data_length; i++)
{
while (EECON1bits.WR == 1); // wait until previous write complete
EEADR = frame.address_L + i;
if (EEADR == 0x00)
{
++ EEADRH;
}
EEDATA = frame.data;
StartWrite ();
}
frame.data[0] = COMMAND_SUCCESS;
return 10;
}00'; // Setup for EEData
|