Platform MPLAB X
CPU PIC18F2520
Compiler XC8 v1.38
我们正在将项目从旧的(htc)编译器移动到MPLAB X. 平台但无法访问EEPROM。
旧编译器支持eeprom_read和eeprom_write但XC8 不是,有定义它们的定义,但它们是“空的”。 (xc.h包括htc.h,其中包括pic18.h) 在pic.h中的行
#if _EEPROMSIZE > 0 && defined(_PLIB)
不会触发,而是相应的#else 似乎既未定义_EEPROMSIZE也未定义_PLIB。
为什么旧的(eeprom_read和eeprom_write) xc8不支持?
我们应该怎样做才能访问EEPROM?
我们试着看看Microchip Code Configure会做什么, 但MCC不支持CPU PIC18F2520。
The chip do have 256 byte eeprom according to
http://ww1.microchip.com/downloads/en/DeviceDoc/39631E.pdf
此致
答案 0 :(得分:1)
是的,正如您所发现的,Microchip已在MPLAB X IDE中删除了PIC18系列微控制器的EEPROM读/写功能。它已将宏保留为空壳(EEPROM_READ()
,eeprom_read()
等),它们不会抛出编译器错误/警告,但实际上不会执行任何操作!
pic18.h
建议如果#if _EEPROMSIZE > 0 && defined(_PLIB)
为真,那么宏将被填充,但是通过手动添加PLIB
宏定义,编译器然后抱怨无法找到{ {1}}。我找不到合适的地方从。下载“plib”。
一种选择是恢复直接寄存器操作以执行EEPROM读/写(有关一个特定PIC18 micro的EEPROM寄存器定义,请参见http://ww1.microchip.com/downloads/en/DeviceDoc/39626e.pdf的第75页)。我编写了以下函数,这些函数将其抽象出去并提供与Microchip删除的类似的功能:
plib.h
答案 1 :(得分:0)
使用MCC 选择内存模块,它将创建memory.c,其中包含所需的所有功能