本帖最后由 Ryanhsiung 于 2012-3-28 19:06 编辑
看了一上午文档,都要先定义EEPROM变量后才能进行相应操作。24系列与18系列不一样,我看了看DATASHEET,EEPROM应该是用FLASH来实现的,只是将FLASH擦出实现了单个字,双字、4字擦出了!
看了一上午文档,都要先定义EEPROM变量后才能进行相应操作。
// 必须定义EEPROM 数据变量
int __attribute__ ( (space(eedata))) eeData = 0x9632;
// 再用下面的函数进行操作_write_eedata_word
__builtin_tblpage
__builtin_tblwtl
我不想定义,我就想你PIC18直接按地址操作!
后面继续看文档,要操作TBLPAG,W才能实现地址操作,但在C中操作W是一个不安全的动作。(编译器一直提示这个问题),我也想了想,我也不知道其它函数会不会操作到特定的W,若要操作到不就挂了。
后就找到一个间接的方法,
uint16_t offset;
NVMCON = 0x4058;
TBLPAG = 0x007f;
offset = 0xfe00+ee_addr;
__builtin_tblwtl(offset, 0);
再分享一个DSPIC30的EEPROM文档及源码。 |