int main(void) { lis3dh_t dev; lis3dh_data_t acc_data; int16_t temperature; puts("LIS3DH accelerometer driver test application\n"); printf("Initializing SPI_%i... ", TEST_LIS3DH_SPI); if (spi_init_master(TEST_LIS3DH_SPI, SPI_CONF_SECOND_FALLING, SPI_SPEED_10MHZ) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("Initializing LIS3DH sensor... "); if (lis3dh_init(&dev, TEST_LIS3DH_SPI, TEST_LIS3DH_CS, TEST_LIS3DH_INT1, TEST_LIS3DH_INT2, SCALE) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("Set ODR... "); if (lis3dh_set_odr(&dev, ODR) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("Set scale... "); if (lis3dh_set_scale(&dev, SCALE) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("Set axes XYZ... "); if (lis3dh_set_axes(&dev, LIS3DH_AXES_XYZ) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("Disable FIFO mode... "); if (lis3dh_set_fifo(&dev, 0) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("Enable temperature reading... "); if (lis3dh_set_aux_adc(&dev, 1, 1) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("LIS3DH init done.\n"); while (1) { lis3dh_read_xyz(&dev, &acc_data); if (lis3dh_read_xyz(&dev, &acc_data) != 0) { puts("Reading acceleration data... "); puts("[Failed]\n"); return 1; } if (lis3dh_read_aux_adc3(&dev, &temperature) != 0) { puts("Reading temperature data... "); puts("[Failed]\n"); return 1; } printf("Sensor data - X: %6i Y: %6i Z: %6i Temp: %6i\n", acc_data.acc_x, acc_data.acc_y, acc_data.acc_z, temperature); vtimer_usleep(SLEEP); } return 0; }
int main(void) { lis3dh_t dev; lis3dh_data_t acc_data; puts("LIS3DH accelerometer driver test application\n"); printf("Initializing SPI_%i... ", TEST_LIS3DH_SPI); if (spi_init_master(TEST_LIS3DH_SPI, SPI_CONF, SPI_SPEED) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("Initializing LIS3DH sensor... "); if (lis3dh_init(&dev, TEST_LIS3DH_SPI, TEST_LIS3DH_CS, SCALE) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("Set ODR... "); if (lis3dh_set_odr(&dev, ODR) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("Set scale... "); if (lis3dh_set_scale(&dev, SCALE) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("Set axes XYZ... "); if (lis3dh_set_axes(&dev, LIS3DH_AXES_XYZ) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("Enable streaming FIFO mode... "); if (lis3dh_set_fifo(&dev, LIS3DH_FIFO_MODE_STREAM, WATERMARK_LEVEL) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("Enable temperature reading... "); if (lis3dh_set_aux_adc(&dev, 1, 1) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("Set INT1 watermark function... "); if (lis3dh_set_int1(&dev, LIS3DH_CTRL_REG3_I1_WTM_MASK) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("Set INT1 callback"); if (gpio_init_int(TEST_LIS3DH_INT1, GPIO_IN, GPIO_RISING, test_int1, (void*)&int1_count) == 0) { puts("[OK]"); } else { puts("[Failed]\n"); return 1; } puts("LIS3DH init done.\n"); while (1) { int fifo_level; fifo_level = lis3dh_get_fifo_level(&dev); printf("int1_count = %d\n", int1_count); printf("Reading %d measurements\n", fifo_level); while (fifo_level > 0) { int16_t temperature; int int1; if (lis3dh_read_xyz(&dev, &acc_data) != 0) { puts("Reading acceleration data... "); puts("[Failed]\n"); } if (lis3dh_read_aux_adc3(&dev, &temperature) != 0) { puts("Reading temperature data... "); puts("[Failed]\n"); return 1; } int1 = gpio_read(TEST_LIS3DH_INT1); printf("X: %6d Y: %6d Z: %6d Temp: %6d, INT1: %08x\n", acc_data.acc_x, acc_data.acc_y, acc_data.acc_z, temperature, int1); --fifo_level; } xtimer_usleep(SLEEP); } return 0; }