LIS2DTW12 IC of z axis acceleration in FIFO mode
Hello
I would like to configure for z axis acceleration in LIS2DTW12 IC and read the data in FIFO mode. Kindly take a look at the below code for which i have configured as FIFO mode and 5 samples of data in that. let me know any correction!
int main()
{
InitialiseHardware();
InitialiseModules();
whoamI = I2C1_ReadRegister(who_i_am); /* Check device ID */
if(whoamI != LIS2DTW12_ID)
while (1) {
/* manage here device not found */
}
// v1 = I2C1_ReadRegister(0x21);
I2C_WriteRegister(SLAVE_ADDR, 0x20, 0x60); /* set ODR 4000hz in ctrl1*/
I2C_WriteRegister(SLAVE_ADDR, 0x25, 0x10); /* set 4g in ctrl6 */
I2C_WriteRegister(SLAVE_ADDR, 0x2E, 0x25); /* fifo mode and 5 samples */
// reg.fth = 10;
//lis2dtw12_full_scale_set(&dev_ctx, LIS2DTW12_2g);
// lis2dtw12_filter_path_set(&dev_ctx, LIS2DTW12_LPF_ON_OUT);
/* Infinite loop */
while(1)
{
I2C_WriteRegister(SLAVE_ADDR, 0x2E, 0x25); /* fifo mode */
out_t_z_l_data = I2C1_ReadRegister(0x2C);
out_t_z_h_data = I2C1_ReadRegister(0x2D);
z =(int16_t)(out_t_z_h_data << 8) | out_t_z_l_data;
z_g[index] = z * (4.0 / 32768.0 );
index++;
if(index >= 5)
{
index=0;
for(fl_i = 0; fl_i >= 32 ; fl_i++)
{
z_g[fl_i] = 0;
}
I2C_WriteRegister(SLAVE_ADDR, 0x2E, 0x00); /* fifo mode */
I2C_WriteRegister(SLAVE_ADDR, 0x2E, 0x25); /* fifo mode */
}
