Check program for LIS3DH bug fixed rev.

Dependencies:   LIS3DH mbed

I fixed bugs in my library LIS3DH and updated it as Rev.7. This is a check program for LIS3DH lib.

Followings are PC console output data.

003854,new,[m/s2],-0.1079,+0.1177,+9.3457,[mg],   -10,   +14,  +957
003855,new,[m/s2],-0.0588,+0.0686,+9.3555,[mg],    -9,   +11,  +956
003856,new,[m/s2],-0.0686,+0.0883,+9.3163,[mg],   -11,    +8,  +953
003857,new,[m/s2],-0.0981,+0.1275,+9.3752,[mg],    -9,   +13,  +953
003858,new,[m/s2],-0.0981,+0.0294,+9.3457,[mg],   -13,   +10,  +953

In addition, you can see reg. contents.

LIS3DH ultra low-power high performance 3-axes 'nano' accelerometer
 STATUS_AUX=0xff
 OUT_ADC1_L=0x00, OUT_ADC1_H=0x00
 OUT_ADC2_L=0x00, OUT_ADC2_H=0x00
 OUT_ADC3_L=0x00, OUT_ADC3_H=0x00
 INT_COUNTER_REG=0x00
 WHO_AM_I=0x33
 TEMP_CFG_REG=0x00
 CTRL_REG1=0x47, CTRL_REG2=0x00, CTRL_REG3=0x00
 CTRL_REG4=0x08, CTRL_REG5=0x00, CTRL_REG6=0x00
 REFERENCE=0x00
 STATUS_REG=0xff
 OUT_X_L=0xc0, OUT_X_H=0xff
 OUT_Y_L=0x10, OUT_Y_H=0x00
 OUT_Z_L=0x60, OUT_Z_H=0x3b
 FIFO_CTRL_REG=0x00, FIFO_SRC_REG=0x20
 INT1_CFG=0x00, INT1_SOURCE=0x00, INT1_THS=0x00, INT1_DURATION=0x00
 CLICK_CFG=0x00, CLICK_SRC=0x00, CLICK_THS=0x00
 TIME_LIMIT=0x00, TIME_LATENCY=0x00, TIME_WINDOW=0x00

Here is meaning of data.

<Setting condition>
 STATUS_AUX=0xff
-> new data are avairable but all data are over-run condition
 OUT_ADC1_L=0x00, OUT_ADC1_H=0x00
 OUT_ADC2_L=0x00, OUT_ADC2_H=0x00
 OUT_ADC3_L=0x00, OUT_ADC3_H=0x00
-> all ADC data are Zero
 INT_COUNTER_REG=0x00
-> ?
 WHO_AM_I=0x33
-> I'm LIS3DH
 TEMP_CFG_REG=0x00
-> ADC: disabled, Temperature sensor (T): disabled
 CTRL_REG1=0x47
-> Data rate selection: 50Hz, Low power mode: disabled, XYZ axes: all enabled
 CTRL_REG2=0x00
-> High pass filter mode selection: normal, Filtered data selection: internal filter bypassed
High pass filter: bypassed
 CTRL_REG3=0x00
-> All kinds of interrupt: disabled
 CTRL_REG4=0x08
-> Block data update:continuos update, Big/little endian data selection: Data LSB/lower address
Full scale selection. default value: +/-2G, High resolution output mode: disabled
 CTRL_REG5=0x00
-> FIFO disable
 CTRL_REG6=0x00
-> ?
 REFERENCE=0x00
-> Reference value for Interrupt generation=0
 STATUS_REG=0xff
-> new data are avairable but all data are over-run condition
 OUT_X_L=0xc0, OUT_X_H=0xff
-> 0xffc0 -> -64/16 -> -4 
 OUT_Y_L=0x10, OUT_Y_H=0x00
-> 0x0010 -> 16/16 -> 1
 OUT_Z_L=0x60, OUT_Z_H=0x3b
-> 0x3b60 -> 15200/16 ->950
 FIFO_CTRL_REG=0x00
-> FIFO mode selection: bypassed
 FIFO_SRC_REG=0x20
-> FIFO: empty
 INT1_CFG=0x00, INT1_SOURCE=0x00, INT1_THS=0x00, INT1_DURATION=0x00
-> Interrupt related reg's are not used
 CLICK_CFG=0x00, CLICK_SRC=0x00, CLICK_THS=0x00
-> Click action: not used
 TIME_LIMIT=0x00, TIME_LATENCY=0x00, TIME_WINDOW=0x00
-> Click related reg's are nit used
Committer:
kenjiArai
Date:
Sat Dec 12 06:17:47 2015 +0000
Revision:
0:117c3daca107
Check program for LIS3DH bug fixed rev.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:117c3daca107 1 /*
kenjiArai 0:117c3daca107 2 * mbed Application program for the mbed
kenjiArai 0:117c3daca107 3 * LIS3DH ultra low-power high performance 3-axes “nano” accelerometer
kenjiArai 0:117c3daca107 4 *
kenjiArai 0:117c3daca107 5 * Copyright (c) 2014 Kenji Arai / JH1PJL
kenjiArai 0:117c3daca107 6 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:117c3daca107 7 * http://mbed.org/users/kenjiArai/
kenjiArai 0:117c3daca107 8 * Created: November 29th, 2015
kenjiArai 0:117c3daca107 9 * Revised: December 12th, 2015
kenjiArai 0:117c3daca107 10 *
kenjiArai 0:117c3daca107 11 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
kenjiArai 0:117c3daca107 12 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
kenjiArai 0:117c3daca107 13 * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
kenjiArai 0:117c3daca107 14 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
kenjiArai 0:117c3daca107 15 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
kenjiArai 0:117c3daca107 16 */
kenjiArai 0:117c3daca107 17
kenjiArai 0:117c3daca107 18 // Include ---------------------------------------------------------------------------------------
kenjiArai 0:117c3daca107 19 #include "mbed.h"
kenjiArai 0:117c3daca107 20 #include "LIS3DH.h"
kenjiArai 0:117c3daca107 21
kenjiArai 0:117c3daca107 22 // Definition ------------------------------------------------------------------------------------
kenjiArai 0:117c3daca107 23
kenjiArai 0:117c3daca107 24 // Object ----------------------------------------------------------------------------------------
kenjiArai 0:117c3daca107 25 // com
kenjiArai 0:117c3daca107 26 Serial pc(USBTX, USBRX); // Communication with Host
kenjiArai 0:117c3daca107 27 I2C i2c(D14,D15);
kenjiArai 0:117c3daca107 28 // Acc
kenjiArai 0:117c3daca107 29 LIS3DH acc(i2c, LIS3DH_V_CHIP_ADDR, LIS3DH_DR_NR_LP_50HZ, LIS3DH_FS_2G);
kenjiArai 0:117c3daca107 30
kenjiArai 0:117c3daca107 31 // RAM -------------------------------------------------------------------------------------------
kenjiArai 0:117c3daca107 32 float fa[3]; // Acc 0:X, 1:Y, 2:Z
kenjiArai 0:117c3daca107 33 uint32_t n;
kenjiArai 0:117c3daca107 34
kenjiArai 0:117c3daca107 35 // ROM / Constant data ---------------------------------------------------------------------------
kenjiArai 0:117c3daca107 36
kenjiArai 0:117c3daca107 37 // Function prototypes ---------------------------------------------------------------------------
kenjiArai 0:117c3daca107 38 void display_reg(void);
kenjiArai 0:117c3daca107 39
kenjiArai 0:117c3daca107 40 //-------------------------------------------------------------------------------------------------
kenjiArai 0:117c3daca107 41 // Control Program
kenjiArai 0:117c3daca107 42 //-------------------------------------------------------------------------------------------------
kenjiArai 0:117c3daca107 43 int main(void) {
kenjiArai 0:117c3daca107 44 n = 1;
kenjiArai 0:117c3daca107 45 while (true) {
kenjiArai 0:117c3daca107 46 #if OLD_REV // defined in LIS3DH.h
kenjiArai 0:117c3daca107 47 acc.read_data(fa);
kenjiArai 0:117c3daca107 48 pc.printf("%06d,old,[m/s2], %+7.4f,%+7.4f,%+7.4f,", n++, fa[0], fa[1], fa[2]);
kenjiArai 0:117c3daca107 49 acc.read_mg_data(fa);
kenjiArai 0:117c3daca107 50 pc.printf("[g],%+7.4f,%+7.4f,%+7.4f \r\n", fa[0], fa[1], fa[2]);
kenjiArai 0:117c3daca107 51 #else
kenjiArai 0:117c3daca107 52 acc.read_data(fa);
kenjiArai 0:117c3daca107 53 pc.printf("%06d,new,[m/s2],%+06.4f,%+06.4f,%+06.4f,", n++, fa[0], fa[1], fa[2]);
kenjiArai 0:117c3daca107 54 acc.read_mg_data(fa);
kenjiArai 0:117c3daca107 55 pc.printf("[mg],%+6.0f,%+6.0f,%+6.0f \r\n", fa[0], fa[1], fa[2]);
kenjiArai 0:117c3daca107 56 #endif
kenjiArai 0:117c3daca107 57 wait(0.5);
kenjiArai 0:117c3daca107 58 if (n%25 == 0){
kenjiArai 0:117c3daca107 59 display_reg();
kenjiArai 0:117c3daca107 60 }
kenjiArai 0:117c3daca107 61 }
kenjiArai 0:117c3daca107 62 }
kenjiArai 0:117c3daca107 63
kenjiArai 0:117c3daca107 64 void display_reg(void){
kenjiArai 0:117c3daca107 65 pc.printf("LIS3DH ultra low-power high performance 3-axes 'nano' accelerometer\r\n");
kenjiArai 0:117c3daca107 66 pc.printf(" STATUS_AUX=0x%02x\r\n", acc.read_reg(LIS3DH_STATUS_REG_AUX));
kenjiArai 0:117c3daca107 67 pc.printf(" OUT_ADC1_L=0x%02x,", acc.read_reg(LIS3DH_OUT_ADC1_L));
kenjiArai 0:117c3daca107 68 pc.printf(" OUT_ADC1_H=0x%02x\r\n", acc.read_reg(LIS3DH_OUT_ADC1_H));
kenjiArai 0:117c3daca107 69 pc.printf(" OUT_ADC2_L=0x%02x,", acc.read_reg(LIS3DH_OUT_ADC2_L));
kenjiArai 0:117c3daca107 70 pc.printf(" OUT_ADC2_H=0x%02x\r\n", acc.read_reg(LIS3DH_OUT_ADC2_H));
kenjiArai 0:117c3daca107 71 pc.printf(" OUT_ADC3_L=0x%02x,", acc.read_reg(LIS3DH_OUT_ADC3_L));
kenjiArai 0:117c3daca107 72 pc.printf(" OUT_ADC3_H=0x%02x\r\n", acc.read_reg(LIS3DH_OUT_ADC3_H));
kenjiArai 0:117c3daca107 73 pc.printf(" INT_COUNTER_REG=0x%02x\r\n", acc.read_reg(LIS3DH_INT_COUNTER_REG));
kenjiArai 0:117c3daca107 74 pc.printf(" WHO_AM_I=0x%02x\r\n", acc.read_reg(LIS3DH_WHO_AM_I));
kenjiArai 0:117c3daca107 75 pc.printf(" TEMP_CFG_REG=0x%02x\r\n", acc.read_reg(LIS3DH_TEMP_CFG_REG));
kenjiArai 0:117c3daca107 76 pc.printf(" CTRL_REG1=0x%02x,", acc.read_reg(LIS3DH_CTRL_REG1));
kenjiArai 0:117c3daca107 77 pc.printf(" CTRL_REG2=0x%02x,", acc.read_reg(LIS3DH_CTRL_REG2));
kenjiArai 0:117c3daca107 78 pc.printf(" CTRL_REG3=0x%02x\r\n", acc.read_reg(LIS3DH_CTRL_REG3));
kenjiArai 0:117c3daca107 79 pc.printf(" CTRL_REG4=0x%02x,", acc.read_reg(LIS3DH_CTRL_REG4));
kenjiArai 0:117c3daca107 80 pc.printf(" CTRL_REG5=0x%02x,", acc.read_reg(LIS3DH_CTRL_REG5));
kenjiArai 0:117c3daca107 81 pc.printf(" CTRL_REG6=0x%02x\r\n", acc.read_reg(LIS3DH_CTRL_REG6));
kenjiArai 0:117c3daca107 82 pc.printf(" REFERENCE=0x%02x\r\n", acc.read_reg(LIS3DH_REFERENCE));
kenjiArai 0:117c3daca107 83 pc.printf(" STATUS_REG=0x%02x\r\n", acc.read_reg(LIS3DH_STATUS_REG));
kenjiArai 0:117c3daca107 84 pc.printf(" OUT_X_L=0x%02x,", acc.read_reg(LIS3DH_OUT_X_L));
kenjiArai 0:117c3daca107 85 pc.printf(" OUT_X_H=0x%02x\r\n", acc.read_reg(LIS3DH_OUT_X_H));
kenjiArai 0:117c3daca107 86 pc.printf(" OUT_Y_L=0x%02x,", acc.read_reg(LIS3DH_OUT_Y_L));
kenjiArai 0:117c3daca107 87 pc.printf(" OUT_Y_H=0x%02x\r\n", acc.read_reg(LIS3DH_OUT_Y_H));
kenjiArai 0:117c3daca107 88 pc.printf(" OUT_Z_L=0x%02x,", acc.read_reg(LIS3DH_OUT_Z_L));
kenjiArai 0:117c3daca107 89 pc.printf(" OUT_Z_H=0x%02x\r\n", acc.read_reg(LIS3DH_OUT_Z_H));
kenjiArai 0:117c3daca107 90 pc.printf(" FIFO_CTRL_REG=0x%02x,", acc.read_reg(LIS3DH_FIFO_CTRL_REG));
kenjiArai 0:117c3daca107 91 pc.printf(" FIFO_SRC_REG=0x%02x\r\n", acc.read_reg(LIS3DH_FIFO_SRC_REG));
kenjiArai 0:117c3daca107 92 pc.printf(" INT1_CFG=0x%02x,", acc.read_reg(LIS3DH_INT1_CFG));
kenjiArai 0:117c3daca107 93 pc.printf(" INT1_SOURCE=0x%02x,", acc.read_reg(LIS3DH_INT1_SOURCE));
kenjiArai 0:117c3daca107 94 pc.printf(" INT1_THS=0x%02x,", acc.read_reg(LIS3DH_INT1_THS));
kenjiArai 0:117c3daca107 95 pc.printf(" INT1_DURATION=0x%02x\r\n", acc.read_reg(LIS3DH_INT1_DURATION));
kenjiArai 0:117c3daca107 96 pc.printf(" CLICK_CFG=0x%02x,", acc.read_reg(LIS3DH_CLICK_CFG));
kenjiArai 0:117c3daca107 97 pc.printf(" CLICK_SRC=0x%02x,", acc.read_reg(LIS3DH_CLICK_SRC));
kenjiArai 0:117c3daca107 98 pc.printf(" CLICK_THS=0x%02x\r\n", acc.read_reg(LIS3DH_CLICK_THS));
kenjiArai 0:117c3daca107 99 pc.printf(" TIME_LIMIT=0x%02x,", acc.read_reg(LIS3DH_TIME_LIMIT));
kenjiArai 0:117c3daca107 100 pc.printf(" TIME_LATENCY=0x%02x,", acc.read_reg(LIS3DH_TIME_LATENCY));
kenjiArai 0:117c3daca107 101 pc.printf(" TIME_WINDOW=0x%02x\r\n", acc.read_reg(LIS3DH_TIME_WINDOW));
kenjiArai 0:117c3daca107 102 }