I've a vectorx[8] and I want to save its value in the EEPROM of an XMEGA for that here is what I've done ::
............................
    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]);
}
Now when I try to use the saved values using this : ................................
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]);
    }
I get -13158 instead of 23500 , so my question is what I doing wrong here ? 
âfter changing K to a point I I get this output :
read Value is : 2627 
read Value is : 2714 read Value is : 2714 read Value is : 2714 read Value is : 23450 read Value is : -3584 read Value is : 31744 read Value is : 11008
                        
Define
jasuint16_t * j. Then++operation will increase it properly with 2 and not 1. And you will not need casting:eeprom_update_word (j++, vec1[i]).