SRK Version of mDot LoRa_Sensormode_SRK
Dependencies: libmDot mbed-rtos mbed
Fork of mDot_LoRa_Sensornode by
MPU9250Config.cpp
00001 /* 00002 * MPU9250Config.cpp 00003 * 00004 * Created on: 23.05.2016 00005 * Author: Adrian 00006 */ 00007 00008 #include "MPU9250Config.h " 00009 00010 MPU9250Config::MPU9250Config() { 00011 // TODO Auto-generated constructor stub 00012 00013 } 00014 00015 MPU9250Config::~MPU9250Config() { 00016 // TODO Auto-generated destructor stub 00017 } 00018 00019 void MPU9250Config::build(MPU9250_MODE desiredMode){ 00020 switch(desiredMode){ 00021 case MPU9250_MODE_1: 00022 setAccelerometerScale(MPU9250_FULL_SCALE_2G); 00023 setGyroscopeScale(MPU9250_GYRO_FULL_SCALE_250DPS); 00024 setMagnetometerBitResolution(MPU9250_MAG_16_BIT); 00025 setMagnetometerMeasureMode(MPU9250_MAG_CONTINUOUS_MEASUREMENT_1); 00026 break; 00027 case MPU9250_MODE_2: 00028 setAccelerometerScale(MPU9250_FULL_SCALE_4G); 00029 setGyroscopeScale(MPU9250_GYRO_FULL_SCALE_500DPS); 00030 setMagnetometerBitResolution(MPU9250_MAG_16_BIT); 00031 setMagnetometerMeasureMode(MPU9250_MAG_CONTINUOUS_MEASUREMENT_1); 00032 break; 00033 case MPU9250_MODE_3: 00034 setAccelerometerScale(MPU9250_FULL_SCALE_8G); 00035 setGyroscopeScale(MPU9250_GYRO_FULL_SCALE_1000DPS); 00036 setMagnetometerBitResolution(MPU9250_MAG_16_BIT); 00037 setMagnetometerMeasureMode(MPU9250_MAG_CONTINUOUS_MEASUREMENT_1); 00038 break; 00039 case MPU9250_MODE_4: 00040 setAccelerometerScale(MPU9250_FULL_SCALE_2G); 00041 setGyroscopeScale(MPU9250_GYRO_FULL_SCALE_250DPS); 00042 setMagnetometerBitResolution(MPU9250_MAG_16_BIT); 00043 setMagnetometerMeasureMode(MPU9250_MAG_CONTINUOUS_MEASUREMENT_1); 00044 setInterruptPinConfiguration(MPU9250_INT_ANYRD_2CLEAR_MASK| 00045 MPU9250_LATCH_INT_EN_MASK); 00046 setWakeOnMotionThreshold(MPU9250_WOM_THRESHOLD_1020_MG); 00047 break; 00048 } 00049 } 00050 00051 void MPU9250Config::setAccelerometerScale(uint8_t accelerometerScale){ 00052 this->accelerometerScale = accelerometerScale; 00053 } 00054 00055 void MPU9250Config::setGyroscopeScale(uint8_t gyroscopeScale){ 00056 this->gyroscopeScale = gyroscopeScale; 00057 } 00058 00059 void MPU9250Config::setMagnetometerBitResolution(uint8_t magnetometerBitResolution){ 00060 this->magnetometerBitResolution = magnetometerBitResolution; 00061 } 00062 00063 void MPU9250Config::setMagnetometerMeasureMode(uint8_t magnetometermeasureMode){ 00064 this->magnetometerMeasureMode = magnetometermeasureMode; 00065 } 00066 00067 void MPU9250Config::setInterruptPinConfiguration(uint8_t interruptPinConfiguration){ 00068 this->interruptPinConfiguration = interruptPinConfiguration; 00069 } 00070 00071 void MPU9250Config::setInterruptEnableConfiguration(uint8_t interruptEnbaleConfiguration){ 00072 this->interruptEnableConfiguration = interruptEnableConfiguration; 00073 } 00074 00075 void MPU9250Config::setWakeOnMotionThreshold(uint8_t wakeOnMotionThreshold){ 00076 this->wakeOnMotionThreshold; 00077 } 00078 00079 uint8_t MPU9250Config::getAccelerometerScale(){ 00080 return accelerometerScale; 00081 } 00082 00083 uint8_t MPU9250Config::getGyroscopeScale(){ 00084 return gyroscopeScale; 00085 } 00086 00087 uint8_t MPU9250Config::getMagnetometerBitResolution(){ 00088 return magnetometerBitResolution; 00089 } 00090 00091 uint8_t MPU9250Config::getMagnetometerMeasureMode(){ 00092 return magnetometerMeasureMode; 00093 } 00094 float MPU9250Config::getAccelerationDivider(){ 00095 float divider; 00096 00097 switch(accelerometerScale){ 00098 case MPU9250_FULL_SCALE_2G: 00099 divider = 32768/2; 00100 break; 00101 case MPU9250_FULL_SCALE_4G: 00102 divider = 32768/4; 00103 break; 00104 case MPU9250_FULL_SCALE_8G: 00105 divider = 32768/8; 00106 break; 00107 case MPU9250_FULL_SCALE_16G: 00108 divider = 32768/16; 00109 break; 00110 default: 00111 divider = 1; 00112 break; 00113 } 00114 00115 return divider; 00116 } 00117 00118 float MPU9250Config::getGyroDivider(){ 00119 float divider; 00120 00121 switch(accelerometerScale){ 00122 case MPU9250_GYRO_FULL_SCALE_250DPS: 00123 divider = 32768/250; 00124 break; 00125 case MPU9250_GYRO_FULL_SCALE_500DPS: 00126 divider = 32768/500; 00127 break; 00128 case MPU9250_GYRO_FULL_SCALE_1000DPS: 00129 divider = 32768/1000; 00130 break; 00131 case MPU9250_GYRO_FULL_SCALE_2000DPS: 00132 divider = 32768/2000; 00133 break; 00134 default: 00135 divider = 1; 00136 break; 00137 } 00138 00139 return divider; 00140 } 00141 00142 float MPU9250Config::getTeslaDivider(){ 00143 float divider; 00144 00145 switch(magnetometerBitResolution){ 00146 case MPU9250_MAG_14_BIT: 00147 divider = 8190/4192; 00148 break; 00149 case MPU9250_MAG_16_BIT: 00150 divider = 32768/4192; 00151 break; 00152 default: 00153 divider = 1; 00154 break; 00155 } 00156 00157 return divider; 00158 } 00159 00160 uint8_t MPU9250Config::getInterruptPinConfiguration(){ 00161 return interruptPinConfiguration; 00162 } 00163 00164 uint8_t MPU9250Config::getInterruptEnableConfiguration(){ 00165 return interruptEnableConfiguration; 00166 } 00167 00168 uint8_t MPU9250Config::getWakeOnMotionThreshold(){ 00169 return wakeOnMotionThreshold; 00170 } 00171 00172 00173
Generated on Wed Jul 13 2022 09:23:47 by 1.7.2