This my big project for PYRN Board
Dependencies: CAN HTTPClient MODSERIAL MyThings Pyrn3GModem Socket TinyGPS MyUSBHost lwip-sys lwip mbed-rtos mbed-src
LSM303DLH.h
- Committer:
- clemounet
- Date:
- 2015-04-14
- Revision:
- 0:efe6085327fd
File content as of revision 0:efe6085327fd:
#ifndef __LSM303DLH_H #define __LSM303DLH_H #include "mbed.h" // CONSTS #define WRITE_BUFF_MAX 16 #define LSM303DH_ID 0x49 // I2C Addresses (SAO -> 1) #define LSM303D_ADDR_R 0x3B #define LSM303D_ADDR_W 0x3A // REGISTERS #define CTRL0 0x1F #define CTRL1 0x20 #define CTRL2 0x21 #define CTRL3 0x22 #define CTRL4 0x23 #define CTRL5 0x24 #define CTRL6 0x25 #define CTRL7 0x26 #define WHO_AM_I 0x0F #define TEMP_OUT_L 0x05 #define TEMP_OUT_H 0x06 #define STATUS_M 0x07 #define OUT_X_L_M 0x08 #define OUT_X_H_M 0x09 #define OUT_Y_L_M 0x0A #define OUT_Y_H_M 0x0B #define OUT_Z_L_M 0x0C #define OUT_Z_H_M 0x0D #define STATUS_A 0x27 #define OUT_X_L_A 0x28 #define OUT_X_H_A 0x29 #define OUT_Y_L_A 0x2A #define OUT_Y_H_A 0x2B #define OUT_Z_L_A 0x2C #define OUT_Z_H_A 0x2D class LSM303DLH { private: float accLSB; float magLSB; I2C dev; uint8_t dataBuff[WRITE_BUFF_MAX]; // Who read more than WRITE_BUFF_MAX(16)? uint8_t devRead(const uint8_t reg, uint8_t *data, uint8_t size); uint8_t devReadSingle(const uint8_t reg, uint8_t byte); uint8_t devWrite(const uint8_t reg, uint8_t *data, uint8_t size); uint8_t devWriteSingle(const uint8_t reg, uint8_t byte); public: LSM303DLH(PinName sda = p28, PinName scl = p27); void basicConfig(void); void readRawAcc(int16_t *x, int16_t *y, int16_t *z); void readRawMag(int16_t *x, int16_t *y, int16_t *z); void readAcc(float *x, float *y, float *z); void readMag(float *x, float *y, float *z); }; #endif