MZJ / Mbed 2 deprecated TenCount_BLE_08252015

Dependencies:   BLE_API mbed nRF51822 strike_detect

Fork of TenCount_BLE by MZJ

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers LIS3DH.cpp Source File

LIS3DH.cpp

00001 #include "LIS3DH.h"
00002 #include "mbed.h"
00003 
00004 //#define FAKE_ACC
00005 
00006 #ifdef FAKE_ACC
00007 void LIS3DH_init(void){
00008   
00009 }
00010 
00011 uint8_t LIS3DH_read(uint8_t address){
00012     return 0;
00013 }
00014 
00015 void LIS3DH_write(uint8_t data, uint8_t address){
00016 
00017 }
00018 
00019 uint8_t LIS3DH2_read(uint8_t address){
00020 
00021     return 0;
00022 }
00023 
00024 void LIS3DH2_write(uint8_t data, uint8_t address){
00025     
00026 }
00027 
00028 void LIS3DH_readAll(int16_t xyz[]){
00029     xyz[0] = 200;
00030     xyz[1] = 200;
00031 }
00032 #else
00033 SPI spi(P0_24, P0_23, P0_25); // mosi, miso, sclk
00034 DigitalOut cs(P0_28);
00035 DigitalOut cs2(P0_12);
00036 
00037 
00038 void LIS3DH_init(void){
00039     cs = 1;
00040     cs2 = 1;
00041  
00042     // Setup the spi for 8 bit data, high steady state clock,
00043     // second edge capture, with a 4MHz clock rate
00044     spi.format(8,3);
00045     spi.frequency(4000000);
00046     
00047     LIS3DH_write(LIS3DH_CTRL_REG1_DATARATE_5000HZ | LIS3DH_CTRL_REG1_XYZEN, LIS3DH_REGISTER_CTRL_REG1);
00048     
00049         
00050     uint8_t who = LIS3DH_read(LIS3DH_REGISTER_WHO_AM_I);
00051    // pc.printf("WHOAMI register = %u\r\n", who);
00052     //LIS3DH_write(LIS3DH_CTRL_REG4_BLOCKDATAUPDATE | LIS3DH_CTRL_REG4_SCALE_8G | LIS3DH_CTRL_REG4_HIGH_RES, LIS3DH_REGISTER_CTRL_REG4);
00053     LIS3DH_write(LIS3DH_CTRL_REG4_SCALE_8G | LIS3DH_CTRL_REG4_HIGH_RES, LIS3DH_REGISTER_CTRL_REG4);
00054     
00055     /*LIS3DH2_write(LIS3DH_CTRL_REG1_DATARATE_5000HZ | LIS3DH_CTRL_REG1_XYZEN, LIS3DH_REGISTER_CTRL_REG1);
00056     who = LIS3DH2_read(LIS3DH_REGISTER_WHO_AM_I);
00057     //pc.printf("WHOAMI register = %u\r\n", who);
00058     LIS3DH2_write(LIS3DH_CTRL_REG4_SCALE_8G | LIS3DH_CTRL_REG4_HIGH_RES, LIS3DH_REGISTER_CTRL_REG4);
00059 */
00060     //UART.printf("WHOAMI register = %u\r\n", who);
00061 }
00062 
00063 uint8_t LIS3DH_read(uint8_t address){
00064     cs = 0;
00065     spi.write(address|READ);
00066     uint8_t data = spi.write(READ);
00067     cs = 1;
00068     return data;
00069 }
00070 
00071 void LIS3DH_write(uint8_t data, uint8_t address){
00072     cs = 0;
00073     spi.write(address|WRITE);
00074     spi.write(data);
00075     cs = 1;
00076 }
00077 
00078 uint8_t LIS3DH2_read(uint8_t address){
00079     cs2 = 0;
00080     spi.write(address|READ);
00081     uint8_t data = spi.write(READ);
00082     cs2 = 1;
00083     return data;
00084 }
00085 
00086 void LIS3DH2_write(uint8_t data, uint8_t address){
00087     cs2 = 0;
00088     spi.write(address|WRITE);
00089     spi.write(data);
00090     cs2 = 1;
00091 }
00092 
00093 void LIS3DH_readAll(int16_t xyz[]){
00094     //char reg;
00095     //char xyz8[3];
00096     //static int count = 0;
00097     
00098     int16_t value;
00099     uint8_t *valueL = (uint8_t *)(&value);
00100     uint8_t *valueH = ((uint8_t *)(&value)+1);
00101     
00102     *valueL = LIS3DH_read(LIS3DH_REGISTER_OUT_X_L);
00103     *valueH = LIS3DH_read(LIS3DH_REGISTER_OUT_X_H);
00104     xyz[0] = value + 960;
00105 
00106     /* don't need z values
00107     *valueL = LIS3DH_read(LIS3DH_REGISTER_OUT_Y_L);
00108     *valueH = LIS3DH_read(LIS3DH_REGISTER_OUT_Y_H);
00109     xyz[1] = value + 960;
00110     */
00111     *valueL = LIS3DH_read(LIS3DH_REGISTER_OUT_Z_L);
00112     *valueH = LIS3DH_read(LIS3DH_REGISTER_OUT_Z_H);
00113     xyz[2] = value + 2048;
00114 }
00115 #endif