T Nara / Mbed 2 deprecated NewLIS3DH

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers LIS3DHnew.cpp Source File

LIS3DHnew.cpp

00001 #include "mbed.h"
00002  
00003 I2C i2c(p9,p10);//sda,scl
00004 Serial pc(USBTX,USBRX);
00005 //DigitalOut led(LED1);
00006 // addr
00007 #define WRITE_ADDR 0x30
00008 #define READ_ADDR 0x31
00009 //   LIS3DH ID
00010 #define I_AM_LIS3DH         0x33
00011  
00012 //  Register's definition
00013 #define LIS3DH_STATUS_REG_AUX  0x07
00014 #define LIS3DH_OUT_ADC1_L      0x08
00015 #define LIS3DH_OUT_ADC1_H      0x09
00016 #define LIS3DH_OUT_ADC2_L      0x0a
00017 #define LIS3DH_OUT_ADC2_H      0x0b
00018 #define LIS3DH_OUT_ADC3_L      0x0c
00019 #define LIS3DH_OUT_ADC3_H      0x0d
00020 #define LIS3DH_INT_COUNTER_REG 0x0e
00021 #define LIS3DH_WHO_AM_I        0x0f
00022 #define LIS3DH_TEMP_CFG_REG    0x1f
00023 #define LIS3DH_CTRL_REG1       0x20
00024 #define LIS3DH_CTRL_REG2       0x21
00025 #define LIS3DH_CTRL_REG3       0x22
00026 #define LIS3DH_CTRL_REG4       0x23
00027 #define LIS3DH_CTRL_REG5       0x24
00028 #define LIS3DH_CTRL_REG6       0x25
00029 #define LIS3DH_REFERENCE       0x26
00030 #define LIS3DH_STATUS_REG2     0x27
00031 #define LIS3DH_OUT_X_L         0x28
00032 #define LIS3DH_OUT_X_H         0x29
00033 #define LIS3DH_OUT_Y_L         0x2a
00034 #define LIS3DH_OUT_Y_H         0x2b
00035 #define LIS3DH_OUT_Z_L         0x2c
00036 #define LIS3DH_OUT_Z_H         0x2d
00037 #define LIS3DH_FIFO_CTRL_REG   0x2e
00038 #define LIS3DH_FIFO_SRC_REG    0x2f
00039 #define LIS3DH_INT1_CFG        0x30
00040 #define LIS3DH_INT1_SOURCE     0x31
00041 #define LIS3DH_INT1_THS        0x32
00042 #define LIS3DH_INT1_DURATION   0x33
00043 #define LIS3DH_CLICK_CFG       0x38
00044 #define LIS3DH_CLICK_SRC       0x39
00045 #define LIS3DH_CLICK_THS       0x3a
00046 #define LIS3DH_TIME_LIMIT      0x3b
00047 #define LIS3DH_TIME_LATENCY    0x3c
00048 #define LIS3DH_TIME_WINDOW     0x3d
00049  
00050 // definition for Nomalization
00051 #define LIS3DH_SENSITIVITY_2G  (0.001F)
00052 #define LIS3DH_SENSITIVITY_4G  (0.002F)
00053 #define LIS3DH_SENSITIVITY_8G  (0.004F)
00054 #define LIS3DH_SENSITIVITY_16G (0.012F)
00055 char dbf[2],addr;
00056 int check;
00057 float dt[3];
00058 
00059 int che(void);
00060 int cot(void);   
00061 int main(){
00062     int check;
00063     check = che();
00064     if (check == 1) {
00065         while(1) {
00066             cot();
00067             wait(1);
00068             }
00069         }
00070     }
00071 int che(void){
00072             addr = WRITE_ADDR;
00073             dbf[0] = LIS3DH_WHO_AM_I;
00074             i2c.write(addr, dbf,1);
00075             i2c.read(addr | 1, dbf, 1);
00076             if  (dbf[0] == I_AM_LIS3DH) {
00077                 return 1;
00078             }
00079             else {
00080                 return 0;
00081             }
00082 }
00083 int cot(void) {
00084             char data[6];
00085             dbf[0] = LIS3DH_CTRL_REG1;
00086             dbf[1] = 0x7f;
00087             i2c.write(addr , dbf , 2);         
00088             dbf[0] = LIS3DH_OUT_X_L | 0x80;
00089             i2c.write(addr, dbf, 1);
00090             i2c.read(addr | 1, data, 6);
00091             dt[0] = float(short((data[1]<<8) | data[0])) *LIS3DH_SENSITIVITY_2G  / 15;
00092             dt[1] = float(short((data[3]<<8) | data[2])) *LIS3DH_SENSITIVITY_2G  / 15;
00093             dt[2] = float(short((data[5]<<8) | data[4])) *LIS3DH_SENSITIVITY_2G  / 15;
00094             pc.printf("X=%f __Y=%f __Z=%f \n",dt[0],dt[1],dt[2]);
00095             return 0;
00096         }