Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BLE_API mbed nRF51822 strike_detect
Fork of TenCount_BLE by
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
Generated on Thu Aug 18 2022 13:14:57 by
1.7.2
