Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: libmDot mbed-rtos mbed
Fork of mDot_LoRa_Sensornode by
Diff: app/MPU9250Config.cpp
- Revision:
- 0:f2815503561f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/MPU9250Config.cpp Wed Jul 06 20:40:36 2016 +0000
@@ -0,0 +1,173 @@
+/*
+ * MPU9250Config.cpp
+ *
+ * Created on: 23.05.2016
+ * Author: Adrian
+ */
+
+#include "MPU9250Config.h"
+
+MPU9250Config::MPU9250Config() {
+ // TODO Auto-generated constructor stub
+
+}
+
+MPU9250Config::~MPU9250Config() {
+ // TODO Auto-generated destructor stub
+}
+
+void MPU9250Config::build(MPU9250_MODE desiredMode){
+ switch(desiredMode){
+ case MPU9250_MODE_1:
+ setAccelerometerScale(MPU9250_FULL_SCALE_2G);
+ setGyroscopeScale(MPU9250_GYRO_FULL_SCALE_250DPS);
+ setMagnetometerBitResolution(MPU9250_MAG_16_BIT);
+ setMagnetometerMeasureMode(MPU9250_MAG_CONTINUOUS_MEASUREMENT_1);
+ break;
+ case MPU9250_MODE_2:
+ setAccelerometerScale(MPU9250_FULL_SCALE_4G);
+ setGyroscopeScale(MPU9250_GYRO_FULL_SCALE_500DPS);
+ setMagnetometerBitResolution(MPU9250_MAG_16_BIT);
+ setMagnetometerMeasureMode(MPU9250_MAG_CONTINUOUS_MEASUREMENT_1);
+ break;
+ case MPU9250_MODE_3:
+ setAccelerometerScale(MPU9250_FULL_SCALE_8G);
+ setGyroscopeScale(MPU9250_GYRO_FULL_SCALE_1000DPS);
+ setMagnetometerBitResolution(MPU9250_MAG_16_BIT);
+ setMagnetometerMeasureMode(MPU9250_MAG_CONTINUOUS_MEASUREMENT_1);
+ break;
+ case MPU9250_MODE_4:
+ setAccelerometerScale(MPU9250_FULL_SCALE_2G);
+ setGyroscopeScale(MPU9250_GYRO_FULL_SCALE_250DPS);
+ setMagnetometerBitResolution(MPU9250_MAG_16_BIT);
+ setMagnetometerMeasureMode(MPU9250_MAG_CONTINUOUS_MEASUREMENT_1);
+ setInterruptPinConfiguration(MPU9250_INT_ANYRD_2CLEAR_MASK|
+ MPU9250_LATCH_INT_EN_MASK);
+ setWakeOnMotionThreshold(MPU9250_WOM_THRESHOLD_1020_MG);
+ break;
+ }
+}
+
+void MPU9250Config::setAccelerometerScale(uint8_t accelerometerScale){
+ this->accelerometerScale = accelerometerScale;
+}
+
+void MPU9250Config::setGyroscopeScale(uint8_t gyroscopeScale){
+ this->gyroscopeScale = gyroscopeScale;
+}
+
+void MPU9250Config::setMagnetometerBitResolution(uint8_t magnetometerBitResolution){
+ this->magnetometerBitResolution = magnetometerBitResolution;
+}
+
+void MPU9250Config::setMagnetometerMeasureMode(uint8_t magnetometermeasureMode){
+ this->magnetometerMeasureMode = magnetometermeasureMode;
+}
+
+void MPU9250Config::setInterruptPinConfiguration(uint8_t interruptPinConfiguration){
+ this->interruptPinConfiguration = interruptPinConfiguration;
+}
+
+void MPU9250Config::setInterruptEnableConfiguration(uint8_t interruptEnbaleConfiguration){
+ this->interruptEnableConfiguration = interruptEnableConfiguration;
+}
+
+void MPU9250Config::setWakeOnMotionThreshold(uint8_t wakeOnMotionThreshold){
+ this->wakeOnMotionThreshold;
+}
+
+uint8_t MPU9250Config::getAccelerometerScale(){
+ return accelerometerScale;
+}
+
+uint8_t MPU9250Config::getGyroscopeScale(){
+ return gyroscopeScale;
+}
+
+uint8_t MPU9250Config::getMagnetometerBitResolution(){
+ return magnetometerBitResolution;
+}
+
+uint8_t MPU9250Config::getMagnetometerMeasureMode(){
+ return magnetometerMeasureMode;
+}
+float MPU9250Config::getAccelerationDivider(){
+ float divider;
+
+ switch(accelerometerScale){
+ case MPU9250_FULL_SCALE_2G:
+ divider = 32768/2;
+ break;
+ case MPU9250_FULL_SCALE_4G:
+ divider = 32768/4;
+ break;
+ case MPU9250_FULL_SCALE_8G:
+ divider = 32768/8;
+ break;
+ case MPU9250_FULL_SCALE_16G:
+ divider = 32768/16;
+ break;
+ default:
+ divider = 1;
+ break;
+ }
+
+ return divider;
+}
+
+float MPU9250Config::getGyroDivider(){
+ float divider;
+
+ switch(accelerometerScale){
+ case MPU9250_GYRO_FULL_SCALE_250DPS:
+ divider = 32768/250;
+ break;
+ case MPU9250_GYRO_FULL_SCALE_500DPS:
+ divider = 32768/500;
+ break;
+ case MPU9250_GYRO_FULL_SCALE_1000DPS:
+ divider = 32768/1000;
+ break;
+ case MPU9250_GYRO_FULL_SCALE_2000DPS:
+ divider = 32768/2000;
+ break;
+ default:
+ divider = 1;
+ break;
+ }
+
+ return divider;
+}
+
+float MPU9250Config::getTeslaDivider(){
+ float divider;
+
+ switch(magnetometerBitResolution){
+ case MPU9250_MAG_14_BIT:
+ divider = 8190/4192;
+ break;
+ case MPU9250_MAG_16_BIT:
+ divider = 32768/4192;
+ break;
+ default:
+ divider = 1;
+ break;
+ }
+
+ return divider;
+}
+
+uint8_t MPU9250Config::getInterruptPinConfiguration(){
+ return interruptPinConfiguration;
+}
+
+uint8_t MPU9250Config::getInterruptEnableConfiguration(){
+ return interruptEnableConfiguration;
+}
+
+uint8_t MPU9250Config::getWakeOnMotionThreshold(){
+ return wakeOnMotionThreshold;
+}
+
+
+
