From 822a0503c5683ffa4cfd38748ef81bd4d2a3c81f Mon Sep 17 00:00:00 2001 From: Johann Fischer Date: Thu, 27 Nov 2014 18:39:42 +0100 Subject: [PATCH] add test app for mag3110 magnetometer driver --- tests/driver_mag3110/Makefile | 36 ++++++++++++++++ tests/driver_mag3110/README.md | 10 +++++ tests/driver_mag3110/main.c | 75 ++++++++++++++++++++++++++++++++++ 3 files changed, 121 insertions(+) create mode 100644 tests/driver_mag3110/Makefile create mode 100644 tests/driver_mag3110/README.md create mode 100644 tests/driver_mag3110/main.c diff --git a/tests/driver_mag3110/Makefile b/tests/driver_mag3110/Makefile new file mode 100644 index 0000000000..045b116648 --- /dev/null +++ b/tests/driver_mag3110/Makefile @@ -0,0 +1,36 @@ +APPLICATION = driver_mag3110 +include ../Makefile.tests_common + +FEATURES_REQUIRED = periph_i2c + +USEMODULE += mag3110 +USEMODULE += vtimer + +ifneq (,$(TEST_MAG3110_I2C)) + CFLAGS += -DTEST_MAG3110_I2C=$(TEST_MAG3110_I2C) +else + CFLAGS += -DTEST_MAG3110_I2C=I2C_0 +endif +ifneq (,$(TEST_MAG3110_ADDR)) + CFLAGS += -DTEST_MAG3110_ADDR=$(TEST_MAG3110_ADDR) +else + CFLAGS += -DTEST_MAG3110_ADDR=0x0E +endif + +ifneq (,$(TEST_MAG3110_USER_OFFSET_X)) + CFLAGS += -DTEST_MAG3110_USER_OFFSET_X=$(TEST_MAG3110_USER_OFFSET_X) +else + CFLAGS += -DTEST_MAG3110_USER_OFFSET_X=-2000 +endif +ifneq (,$(TEST_MAG3110_USER_OFFSET_Y)) + CFLAGS += -DTEST_MAG3110_USER_OFFSET_Y=$(TEST_MAG3110_USER_OFFSET_Y) +else + CFLAGS += -DTEST_MAG3110_USER_OFFSET_Y=180 +endif +ifneq (,$(TEST_MAG3110_USER_OFFSET_Z)) + CFLAGS += -DTEST_MAG3110_USER_OFFSET_Z=$(TEST_MAG3110_USER_OFFSET_Z) +else + CFLAGS += -DTEST_MAG3110_USER_OFFSET_Z=210 +endif + +include $(RIOTBASE)/Makefile.include diff --git a/tests/driver_mag3110/README.md b/tests/driver_mag3110/README.md new file mode 100644 index 0000000000..297f56e6a7 --- /dev/null +++ b/tests/driver_mag3110/README.md @@ -0,0 +1,10 @@ +# About +This is a manual test application for the MAG3110 magnetometer driver. + +# Usage +This test application will initialize the MAG3110 with the following parameters: + - output rate set to 1.25 Hz + - over sample ratio set to 128 + +After initialization, the sensor reads the x-, y-, z-axis values every 1 s +and prints them to STDOUT. diff --git a/tests/driver_mag3110/main.c b/tests/driver_mag3110/main.c new file mode 100644 index 0000000000..57bba7c4ab --- /dev/null +++ b/tests/driver_mag3110/main.c @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2014 Freie Universität Berlin + * Copyright (C) 2014 PHYTEC Messtechnik GmbH + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License v2.1. See the file LICENSE in the top level + * directory for more details. + */ + +/** + * @ingroup tests + * @{ + * + * @file + * @brief Test application for the MPL3115A2 magnetometer driver. + * + * @author Hauke Petersen + * @author Johann Fischer + * + * @} + */ + +#ifndef TEST_MAG3110_I2C +#error "TEST_MAG3110_I2C not defined" +#endif +#ifndef TEST_MAG3110_ADDR +#error "TEST_MAG3110_ADDR not defined" +#endif + +#include + +#include "vtimer.h" +#include "mag3110.h" + +#define SLEEP (1000 * 1000U) + +int main(void) +{ + mag3110_t dev; + int8_t temp; + int16_t x, y, z; + uint8_t status; + + puts("MAG3110 magnetometer driver test application\n"); + printf("Initializing MAG3110 magnetometer at I2C_%i... ", TEST_MAG3110_I2C); + if (mag3110_init(&dev, TEST_MAG3110_I2C, TEST_MAG3110_ADDR, MAG3110_DROS_DEFAULT) == 0) { + puts("[OK]\n"); + } + else { + puts("[Failed]"); + return -1; + } + + if (mag3110_set_user_offset(&dev, TEST_MAG3110_USER_OFFSET_X, + TEST_MAG3110_USER_OFFSET_Y, + TEST_MAG3110_USER_OFFSET_Z )) { + puts("Set user offset correction failed."); + return -1; + } + + if (mag3110_set_active(&dev)) { + puts("Measurement start failed."); + return -1; + } + + while (1) { + vtimer_usleep(SLEEP); + mag3110_read(&dev, &x, &y, &z, &status); + printf("Field strength: X: %d Y: %d Z: %d S: %2x\n", x, y, z, status); + mag3110_read_dtemp(&dev, &temp); + printf("Die Temperature T: %d\n", temp); + } + + return 0; +}