init
Dependencies: aconno_I2C Lis2dh12 WatchdogTimer
Diff: sensors.cpp
- Revision:
- 57:066dfbe8b4b9
- Parent:
- 56:efd9f5613549
- Child:
- 58:8d4a354816b1
--- a/sensors.cpp Fri Aug 09 14:22:21 2019 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-#include "sensors.h"
-
-//------------------------------------------------------------------------------
-// ACCELEROMETER
-//------------------------------------------------------------------------------
-
-DigitalIn lis3dh_int1(PN_ACC_INT1, PullNone); //DISTUBANCE
-DigitalIn lis3dh_int2(PN_ACC_INT2, PullNone); //IMPACT
-
-void lis3dh_configureForSleep(uint8_t motion_threshold, uint8_t impact_threshold) {
- //init
- LIS3DH lis3dh(PN_SPI_MOSI, PN_SPI_MISO, PN_SPI_CS0, PN_SPI_CLK);
-
- //Mode
- lis3dh.LIS3DH_WriteReg(LIS3DH_CTRL_REG1, 0b00111111); // 00111111 25hz low power mode all axis. 50hz = 6ua / 25hz = 4ua / 10hz = 3ua
- lis3dh.LIS3DH_WriteReg(LIS3DH_CTRL_REG2, 0b11001011); // HP Filter with 0.2hz@25hz for both INT1 and INT2 and Data //http://www.st.com/content/ccc/resource/technical/document/application_note/77/ed/e7/e1/28/5a/45/d6/CD00290365.pdf/files/CD00290365.pdf/jcr:content/translations/en.CD00290365.pdf
-
- //g and Resolution
- //lis3dh.LIS3DH_WriteReg(LIS3DH_CTRL_REG4, 0b00110000); // disable highresoluton , set 16g
- lis3dh.LIS3DH_WriteReg(LIS3DH_CTRL_REG4, 0b00100000); // disable highresoluton , set 8g
- //lis3dh.LIS3DH_WriteReg(LIS3DH_CTRL_REG4, 0b00010000); // disable highresoluton , set 4g
- //lis3dh.LIS3DH_WriteReg(LIS3DH_CTRL_REG4, 0b00000000); // disable highresoluton , set 2g
-
- //interrupt setup
- lis3dh.LIS3DH_WriteReg(LIS3DH_CTRL_REG5, 0b00001010); // Latch INT1 and INT2
-
- //impact interrupt
- if (impact_threshold > 10) { //10 is a reasonable minimum value
- lis3dh.LIS3DH_WriteReg(LIS3DH_CTRL_REG3, 0b01000000); // IA1 on INT1
- lis3dh.LIS3DH_WriteReg(LIS3DH_INT1_CFG, 0b00101010); // Enable X,Y,Z interrupt generation
- lis3dh.LIS3DH_WriteReg(LIS3DH_INT1_THS, impact_threshold);
- lis3dh.LIS3DH_WriteReg(LIS3DH_INT1_DURATION, 0x00); // Set duration to 0 cycle
- } else {
- lis3dh.LIS3DH_WriteReg(LIS3DH_CTRL_REG3, 0b00000000); // No IA1 on INT1
- lis3dh.LIS3DH_WriteReg(LIS3DH_INT1_CFG, 0b00000000); // Enable X,Y,Z interrupt generation
- }
-
- //awake interrupt
- lis3dh.LIS3DH_WriteReg(LIS3DH_CTRL_REG6, 0b00100000); // IA2 on INT2
- lis3dh.LIS3DH_WriteReg(LIS3DH_INT2_CFG, 0b00101010); // Enable X,Y,Z interrupt generation
- lis3dh.LIS3DH_WriteReg(LIS3DH_INT2_THS, motion_threshold); // Set threshold
- lis3dh.LIS3DH_WriteReg(LIS3DH_INT2_DURATION, 0x00); // Set duration to 0 cycle
-
- //Clear interrupts
- lis3dh.LIS3DH_ResetInt1Latch();
- lis3dh.LIS3DH_ResetInt2Latch();
-
- GLOBAL_needToConfigureLis3dh = false;
-}