has freefall register definitions

Fork of MMA8452Q by Stephen Licht

Committer:
jakebonney10
Date:
Thu Dec 07 14:49:13 2017 +0000
Revision:
1:2b812ae875eb
Parent:
0:b3305e3c9e73
freefall

Who changed what in which revision?

UserRevisionLine numberNew contents of line
slicht 0:b3305e3c9e73 1 // Library for our MMA8452Q 3-axis accelerometer
slicht 0:b3305e3c9e73 2 // Based on the MMA8452Q Arduino Library by Jim Lindblom (SparkFun Electronics)
slicht 0:b3305e3c9e73 3
slicht 0:b3305e3c9e73 4 #ifndef MMA8452Q_H
slicht 0:b3305e3c9e73 5 #define MMA8452Q_H
slicht 0:b3305e3c9e73 6
slicht 0:b3305e3c9e73 7 #include "mbed.h"
slicht 0:b3305e3c9e73 8
slicht 0:b3305e3c9e73 9 // Register definitions
slicht 0:b3305e3c9e73 10 #define REG_STATUS 0x00
slicht 0:b3305e3c9e73 11 #define OUT_X_MSB 0x01
slicht 0:b3305e3c9e73 12 #define OUT_X_LSB 0x02
slicht 0:b3305e3c9e73 13 #define OUT_Y_MSB 0x03
slicht 0:b3305e3c9e73 14 #define OUT_Y_LSB 0x04
slicht 0:b3305e3c9e73 15 #define OUT_Z_MSB 0x05
slicht 0:b3305e3c9e73 16 #define OUT_Z_LSB 0x06
slicht 0:b3305e3c9e73 17 #define REG_WHO_AM_I 0x0D
slicht 0:b3305e3c9e73 18 #define REG_XYZ_DATA_CFG 0x0E
slicht 0:b3305e3c9e73 19 #define REG_CTRL_REG1 0x2A
jakebonney10 1:2b812ae875eb 20 // free fall motion register definitions
jakebonney10 1:2b812ae875eb 21 #define FF_MT_CFG 0x15 // Freefall/Motion functional block configuration
jakebonney10 1:2b812ae875eb 22 #define FF_MT_SRC 0x16 // Freefall/Motion event source register
jakebonney10 1:2b812ae875eb 23 #define FF_MT_THS 0x17 // Freefall/Motion threshold register
jakebonney10 1:2b812ae875eb 24 #define FF_MT_COUNT 0x18 // Freefall/Motion debounce counter
jakebonney10 1:2b812ae875eb 25 //#define INT_CFG_FF_MT
jakebonney10 1:2b812ae875eb 26 //#define INT_EN_FF_MT // Interrupt Enable. (Default value: 0)( 0: Freefall/Motion interrupt disabled; 1: Freefall/Motion interrupt enabled)
jakebonney10 1:2b812ae875eb 27
slicht 0:b3305e3c9e73 28
slicht 0:b3305e3c9e73 29 // WHO_AM_I check
slicht 0:b3305e3c9e73 30 #define FACTORY_ID 0x2A
slicht 0:b3305e3c9e73 31
slicht 0:b3305e3c9e73 32 // Scale definitions
slicht 0:b3305e3c9e73 33 #define SCALE_2G 2
slicht 0:b3305e3c9e73 34 #define SCALE_4G 4
slicht 0:b3305e3c9e73 35 #define SCALE_8G 8
slicht 0:b3305e3c9e73 36
slicht 0:b3305e3c9e73 37 // Data rates
slicht 0:b3305e3c9e73 38 #define ODR_800HZ 0
slicht 0:b3305e3c9e73 39 #define ODR_400HZ 1
slicht 0:b3305e3c9e73 40 #define ODR_200HZ 2
slicht 0:b3305e3c9e73 41 #define ODR_100HZ 3
slicht 0:b3305e3c9e73 42 #define ODR_50HZ 4
slicht 0:b3305e3c9e73 43 #define ODR_12_5HZ 5
slicht 0:b3305e3c9e73 44 #define ODR_6_25HZ 6
slicht 0:b3305e3c9e73 45 #define ODR_1_56HZ 7
slicht 0:b3305e3c9e73 46
slicht 0:b3305e3c9e73 47 // Init values
slicht 0:b3305e3c9e73 48 #define DEFAULT_FSR SCALE_2G
slicht 0:b3305e3c9e73 49 #define DEFAULT_ODR ODR_800HZ
slicht 0:b3305e3c9e73 50
slicht 0:b3305e3c9e73 51
slicht 0:b3305e3c9e73 52 // Class declaration
slicht 0:b3305e3c9e73 53 class MMA8452Q
slicht 0:b3305e3c9e73 54 {
slicht 0:b3305e3c9e73 55 public:
slicht 0:b3305e3c9e73 56 MMA8452Q(PinName sda, PinName scl, int addr);
slicht 0:b3305e3c9e73 57 ~MMA8452Q();
slicht 0:b3305e3c9e73 58 bool init();
slicht 0:b3305e3c9e73 59 uint8_t available();
slicht 0:b3305e3c9e73 60 void setScale(uint8_t fsr);
slicht 0:b3305e3c9e73 61 void setODR(uint8_t odr);
slicht 0:b3305e3c9e73 62 void standby();
slicht 0:b3305e3c9e73 63 void active();
jakebonney10 1:2b812ae875eb 64 void ff_mt();
slicht 0:b3305e3c9e73 65 float readX();
slicht 0:b3305e3c9e73 66 float readY();
slicht 0:b3305e3c9e73 67 float readZ();
slicht 0:b3305e3c9e73 68 uint8_t readRegister(uint8_t reg);
slicht 0:b3305e3c9e73 69 void writeRegister(uint8_t reg, uint8_t data);
slicht 0:b3305e3c9e73 70
slicht 0:b3305e3c9e73 71 private:
slicht 0:b3305e3c9e73 72 I2C m_i2c;
slicht 0:b3305e3c9e73 73 int m_addr;
slicht 0:b3305e3c9e73 74 int scale;
slicht 0:b3305e3c9e73 75 };
slicht 0:b3305e3c9e73 76
slicht 0:b3305e3c9e73 77 #endif