在 EEPROM 中保存数组

saving an array in EEPROM

我有一个 vectorx[8],我想将它的值保存在 XMEGA 的 EEPROM 中,因为这就是我所做的::

............................
    int16_t  vec1[8]; 
    int16_t  vec2[8]; 
    int16_t  vec3[8];
    int i =  0, j =1; 
    for ( i =0 ; i<8; i++){ // ini 
       vec1[i] = 23500; 
       vec2[i] = 20000;
       vec3[i] = 20000;
    }


for ( i =0; i<8 ; i++) {
 eeprom_update_word (( uint16_t *)j++, vec1[i]);
 eeprom_update_word (( uint16_t *)j++, vec2[i]);
 eeprom_update_word (( uint16_t *)j++, vec3[i]);
}

现在,当我尝试使用保存的值时: .....................

int16_t tempX[8];
int j  =2 ;
for ( i = 0 ; i < NUMBEROFSENSORS ; i++ ){

        tempX[i] = (int16_t) eeprom_read_word(j);
        j=  j+3;  // reading only vec1 
        printf(" j  read Value is : %d  \n",(int16_t)tempX[i]);
    }

我得到的是 -13158 而不是 23500 ,所以我的问题是我在这里做错了什么?

将 K 更改为点 I 后,我得到以下输出:

read Value is : 2627 

读取值为:2714 读取值是:2714 读取值是:2714 读取值为:23450 读取值为:-3584 读取值是:31744 读取值为:11008

定义 juint16_t * j。然后 ++ 操作将适当地增加 2 而不是 1。而且你不需要转换:eeprom_update_word (j++, vec1[i]).