我正在研究一个使用Atmega644的项目,并希望在初始编程中包含EEPROM数据。我使用MPLAB X和XC8编译器(版本2.31),我使用PICkit4进行编程。
我知道PIC mcu的xc8编译器具有__EEPROM_DATA()宏,这对于我的用例来说非常完美。然而,AVR版本的编译器似乎没有这个宏(我尝试了带和不带CCI语法…),因为它不识别调用,只是在尝试编译时抛出错误。
我已经看了编译器的手册,但是它没有列出任何宏/函数来做这件事。
我尝试自己添加宏,通过将其从PIC编译器复制到我的项目中的头,但它似乎包含不存在于atmega上的汇编指令,我甚至无法在PIC文档中找到那些指令(否则我会试图找到等效的指令并替换它们)…
是否有另一种方法可以在项目中包含初始EEPROM数据,以便在编程期间写入mcu ?
__EEPROM_DATA()
宏仅支持8位PIC基准和中端设备。还有__eeprom
限定符来定位EEPROM中的变量。但这些都不是用于AVR芯片的。
Microchip在XC8中使用AVR头支持AVR芯片。有一个eeprom标头,其中定义了一些宏。其中一个宏是EEMEM
。您可以使用它在编程时设置EEPROM值。下面是它的用法:
#include <avr/eeprom.h>
char EEMEM nums[] = { 1, 2, 3, 4, 5 };
在这个和这个SO回答中有关于这个宏的使用的很好的信息。一定要看一看。
我还建议您看看AVR MCU的MPLAB XC8 C编译器用户指南,以防您不了解它。