We are going to use two functions, that are going to help us to read the value of the accelerometer.
Accelerometer_readXyzGValue()
Accelerometer_readXyzLsValue()
Both functions will help us to provide data but with different unit. The first function provides data that is measured in earth acceleration g. Additionally the physical data is stored in 32 bit integers and therefore measured in mili g.
The second functions provides the analog sensor data converted into its raw digital.
/* own header files */
// Function that read and print the sensor data of the BMA280 to the console of the XDK-Workbench
static void readAccelerometer(xTimerHandle xTimer)
{
(void) xTimer;
Retcode_T returnValue = RETCODE_FAILURE;
/* read and print BMA280 accelerometer data */
Accelerometer_XyzData_T bma280 = {INT32_C(0), INT32_C(0), INT32_C(0)};
memset(&bma280, 0, sizeof(CalibratedAccel_XyzMps2Data_T));
returnValue = Accelerometer_readXyzGValue(xdkAccelerometers_BMA280_Handle,&bma280);
if (RETCODE_OK == returnValue) {
printf("BMA280 Acceleration Data - M/S2\t: %f m/s2\t %f m/s2\t %f m/s2\n\r",
(float) bma280.xAxisData, (float) bma280.yAxisData, (float) bma280.zAxisData);
}
}
We need to initialized the sensor
// Function that initializes the Accelerometer with the BMA280 handler and with additional presettings
static void initAccelerometer(void)
{
Retcode_T returnValue = RETCODE_FAILURE;
Retcode_T returnBandwidthValue = RETCODE_FAILURE;
Retcode_T returnRangeValue = RETCODE_FAILURE;
/* initialize accelerometer */
returnValue = Accelerometer_init(xdkAccelerometers_BMA280_Handle);
if ( RETCODE_OK != returnValue) {
printf("BMA280 Accelerometer initialization failed\n\r");
}
returnBandwidthValue = Accelerometer_setBandwidth(xdkAccelerometers_BMA280_Handle,ACCELEROMETER_BMA280_BANDWIDTH_125HZ);
if (RETCODE_OK != returnBandwidthValue) {
printf("Configuring bandwidth failed \n\r");
}
returnRangeValue = Accelerometer_setRange(xdkAccelerometers_BMA280_Handle,ACCELEROMETER_BMA280_RANGE_2G);
if (RETCODE_OK != returnRangeValue) {
printf("Configuring range failed \n\r");
}
}
Finally we declared the main part of the program where we need to call all the function that we previously defined. Also define the timers.