Check program for LIS3DH bug fixed rev.
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
main.cpp@0:117c3daca107, 2015-12-12 (annotated)
- 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?
User | Revision | Line number | New 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 | } |