Quantcast
Channel: EngineerZone: Message List
Viewing all articles
Browse latest Browse all 36216

ADX345 read output problem

$
0
0

I'm having problem getting the output from this ADXL345.

I'm using a LPC1769.

This is part of my code:

 

void adxl345_setDataRate (int rate)
{    uint8_t registerContents = i2c_read_reg (XL345_ALT_ADDR, XL345_BW_RATE);    registerContents &= 0x10;    registerContents |= rate;    i2c_write_reg (XL345_ALT_ADDR, XL345_BW_RATE, registerContents);
}

void adxl345_setPowerControl (int settings)
{
    i2c_write_reg (XL345_ALT_ADDR, XL345_POWER_CTL, settings);
}

void adxl345_setDataFormatControl (int settings)
{
    i2c_write_reg (XL345_ALT_ADDR, XL345_DATA_FORMAT, settings);
}
void adxl345_init ()
{    adxl345_setPowerControl (0x00);    //Full resolution, +/-16g, 4mg/LSB.    adxl345_setDataFormatControl (0x0B);    //200Hz data rate.    adxl345_setDataRate (XL345_RATE_200);    //Measurement mode.    adxl345_setPowerControl (0x08);
}
void adxl345_read_axes (uint16_t *x, uint16_t *y, uint16_t *z)
{    uint8_t buff[6];     i2c_read_multi_reg (XL345_ALT_ADDR, XL345_DATAX0, buff, 6);    *x = (((uint16_t) buff[1]) << 8) | (uint16_t)buff [0];    *y = (((uint16_t) buff[3]) << 8) | (uint16_t)buff [2];    *z = (((uint16_t) buff[5]) << 8) | (uint16_t)buff [4];
}

 

And this is the function I use to print data over serial:

uint16_t x;
uint16_t y;
uint16_t z;
adxl345_read_axes (&x, &y, &z);
printf ("[%04d], [%04d], [%04d]\n", (signed char)x, (signed char)y , (signed char)z);

 

I'm getting this kind of output:

[0022], [-025], [-065]

 

Can someone help me?

 

Thanks,

Renan  


Viewing all articles
Browse latest Browse all 36216

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>