在 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
定义 j
为 uint16_t * j
。然后 ++
操作将适当地增加 2 而不是 1。而且你不需要转换:eeprom_update_word (j++, vec1[i])
.
我有一个 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
定义 j
为 uint16_t * j
。然后 ++
操作将适当地增加 2 而不是 1。而且你不需要转换:eeprom_update_word (j++, vec1[i])
.