cvbxcvxcv
Embed:
(wiki syntax)
Show/hide line numbers
Lis2dh12.h
00001 /* 00002 * 00003 * LIS2DH12 MEMS digital output motion sensor 00004 * More info @ aconno.de 00005 * Made by Jurica Resetar 00006 * jurica_resetar@yahoo.com 00007 * 00008 */ 00009 00010 #ifndef LIS2DH12_H 00011 #define LIS2DH12_H 00012 00013 #include "mbed.h" 00014 #include "aconno_i2c.h" 00015 #include "Lis2dh12_regs.h" 00016 00017 enum Mode{ 00018 HIGH_RES = 0, 00019 NORMAL, 00020 LOW_POWER, 00021 }; 00022 00023 enum Axis{ 00024 X_axis = 0x01, 00025 Y_axis = 0x02, 00026 Z_axis = 0x04, 00027 }; 00028 00029 enum Odr{ 00030 PowerDown = 0x00, 00031 ODR_1Hz = 0x01, 00032 ODR_10Hz = 0x02, 00033 ODR_25Hz = 0x03, 00034 ODR_50Hz = 0x04, 00035 ODR_100Hz = 0x05, 00036 ODR_200Hz = 0x06, 00037 ODR_400Hz = 0x07, 00038 ODR_1620Hz = 0x08, 00039 ODR_Max = 0x09, // HighRes/Normal -> 1.344kHz, LowPower -> 5.376kHz 00040 }; 00041 00042 enum Scale{ 00043 _2g = 0x00, 00044 _4g = 0x01, 00045 _8g = 0x02, 00046 _16g = 0x03, 00047 }; 00048 00049 class Lis2dh12{ 00050 public: 00051 Lis2dh12(I2C *i2c_, char address); 00052 Lis2dh12(SPI *_spi, DigitalOut *_cs); 00053 uint8_t whoIAm(); 00054 uint8_t setMode(Mode mode); 00055 uint8_t enableAxes(Axis axis); 00056 uint8_t disableAxes(Axis axis); 00057 int16_t readXAxis(); 00058 int16_t readYAxis(); 00059 int16_t readZAxis(); 00060 uint8_t setODR(Odr odr); 00061 uint8_t setScale(Scale scale); 00062 uint8_t int1Setup(uint8_t setup); 00063 uint8_t int1Latch(uint8_t enable); 00064 uint8_t int1Duration(uint8_t duration); 00065 uint8_t int1Threshold(uint8_t threshold); 00066 uint8_t int1Config(uint8_t config); 00067 void clearIntFlag(); 00068 private: 00069 aconno_i2c i2c; 00070 SPI *spi; 00071 DigitalOut *cs; 00072 00073 bool spiInterface; 00074 00075 uint8_t readFromReg(uint8_t regAddr, uint8_t *buff, size_t buffSize); 00076 uint8_t writeToReg(uint8_t regAddr, uint8_t *buff, size_t buffSize); 00077 00078 }; 00079 00080 00081 #endif
Generated on Tue Jul 12 2022 17:06:34 by
1.7.2