Go to the documentation of this file.
39 #ifdef PREINIT_SUPPORTED
43 #ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49 #include "drv_digital_out.h"
50 #include "drv_digital_in.h"
51 #include "drv_i2c_master.h"
73 #define MLVIBROSENS_REG_INT_STATUS 0x00
74 #define MLVIBROSENS_REG_TEMP_OUT 0x01
75 #define MLVIBROSENS_REG_VECM_LSB 0x02
76 #define MLVIBROSENS_REG_VECM_MSB 0x03
77 #define MLVIBROSENS_REG_OUT_X_LSB 0x04
78 #define MLVIBROSENS_REG_OUT_X_MSB 0x05
79 #define MLVIBROSENS_REG_OUT_Y_LSB 0x06
80 #define MLVIBROSENS_REG_OUT_Y_MSB 0x07
81 #define MLVIBROSENS_REG_OUT_Z_LSB 0x08
82 #define MLVIBROSENS_REG_OUT_Z_MSB 0x09
83 #define MLVIBROSENS_REG_BUF_STATUS 0x0B
84 #define MLVIBROSENS_REG_BUF_X_LSB 0x0C
85 #define MLVIBROSENS_REG_BUF_X_MSB 0x0D
86 #define MLVIBROSENS_REG_BUF_Y_LSB 0x0E
87 #define MLVIBROSENS_REG_BUF_Y_MSB 0x0F
88 #define MLVIBROSENS_REG_BUF_Z_LSB 0x10
89 #define MLVIBROSENS_REG_BUF_Z_MSB 0x11
90 #define MLVIBROSENS_REG_PROD_REV 0x12
91 #define MLVIBROSENS_REG_WHO_AM_I 0x13
92 #define MLVIBROSENS_REG_SYS_MODE 0x14
93 #define MLVIBROSENS_REG_SENS_CONFIG1 0x15
94 #define MLVIBROSENS_REG_SENS_CONFIG2 0x16
95 #define MLVIBROSENS_REG_SENS_CONFIG3 0x17
96 #define MLVIBROSENS_REG_SENS_CONFIG4 0x18
97 #define MLVIBROSENS_REG_SENS_CONFIG5 0x19
98 #define MLVIBROSENS_REG_WAKE_IDLE_LSB 0x1A
99 #define MLVIBROSENS_REG_WAKE_IDLE_MSB 0x1B
100 #define MLVIBROSENS_REG_SLEEP_IDLE_LSB 0x1C
101 #define MLVIBROSENS_REG_SLEEP_IDLE_MSB 0x1D
102 #define MLVIBROSENS_REG_ASLP_COUNT_LSB 0x1E
103 #define MLVIBROSENS_REG_ASLP_COUNT_MSB 0x1F
104 #define MLVIBROSENS_REG_INT_EN 0x20
105 #define MLVIBROSENS_REG_INT_PIN_SEL 0x21
106 #define MLVIBROSENS_REG_OFF_X 0x22
107 #define MLVIBROSENS_REG_OFF_Y 0x23
108 #define MLVIBROSENS_REG_OFF_Z 0x24
109 #define MLVIBROSENS_REG_BUF_CONFIG1 0x26
110 #define MLVIBROSENS_REG_BUF_CONFIG2 0x27
111 #define MLVIBROSENS_REG_ORIENT_STATUS 0x28
112 #define MLVIBROSENS_REG_ORIENT_CONFIG 0x29
113 #define MLVIBROSENS_REG_ORIENT_DBCOUNT 0x2A
114 #define MLVIBROSENS_REG_ORIENT_BF_ZCOMP 0x2B
115 #define MLVIBROSENS_REG_ORIENT_THS_REG 0x2C
116 #define MLVIBROSENS_REG_SDCD_INT_SRC1 0x2D
117 #define MLVIBROSENS_REG_SDCD_INT_SRC2 0x2E
118 #define MLVIBROSENS_REG_SDCD_CONFIG1 0x2F
119 #define MLVIBROSENS_REG_SDCD_CONFIG2 0x30
120 #define MLVIBROSENS_REG_SDCD_OT_DBCNT 0x31
121 #define MLVIBROSENS_REG_SDCD_WT_DBCNT 0x32
122 #define MLVIBROSENS_REG_SDCD_LTHS_LSB 0x33
123 #define MLVIBROSENS_REG_SDCD_LTHS_MSB 0x34
124 #define MLVIBROSENS_REG_SDCD_UTHS_LSB 0x35
125 #define MLVIBROSENS_REG_SDCD_UTHS_MSB 0x36
126 #define MLVIBROSENS_REG_SELF_TEST_CONFIG1 0x37
127 #define MLVIBROSENS_REG_SELF_TEST_CONFIG2 0x38
145 #define MLVIBROSENS_INT_STATUS_SRC_DRDY 0x80
146 #define MLVIBROSENS_INT_STATUS_SRC_OVF 0x40
147 #define MLVIBROSENS_INT_STATUS_SRC_BUF 0x20
148 #define MLVIBROSENS_INT_STATUS_SRC_SDCD_OT 0x10
149 #define MLVIBROSENS_INT_STATUS_SRC_SDCD_WT 0x08
150 #define MLVIBROSENS_INT_STATUS_SRC_ORIENT 0x04
151 #define MLVIBROSENS_INT_STATUS_SRC_ASLP 0x02
152 #define MLVIBROSENS_INT_STATUS_SRC_BOOT 0x01
158 #define MLVIBROSENS_WHO_AM_I 0x86
164 #define MLVIBROSENS_SENS_CONFIG1_RST 0x80
165 #define MLVIBROSENS_SENS_CONFIG1_ST_AXIS_SEL_DIS 0x00
166 #define MLVIBROSENS_SENS_CONFIG1_ST_AXIS_SEL_X 0x20
167 #define MLVIBROSENS_SENS_CONFIG1_ST_AXIS_SEL_Y 0x40
168 #define MLVIBROSENS_SENS_CONFIG1_ST_AXIS_SEL_Z 0x60
169 #define MLVIBROSENS_SENS_CONFIG1_ST_AXIS_SEL_MASK 0x60
170 #define MLVIBROSENS_SENS_CONFIG1_ST_POL 0x10
171 #define MLVIBROSENS_SENS_CONFIG1_SPI_M_4_WIRE 0x00
172 #define MLVIBROSENS_SENS_CONFIG1_SPI_M_3_WIRE 0x08
173 #define MLVIBROSENS_SENS_CONFIG1_SPI_M_MASK 0x08
174 #define MLVIBROSENS_SENS_CONFIG1_FSR_2G 0x00
175 #define MLVIBROSENS_SENS_CONFIG1_FSR_4G 0x02
176 #define MLVIBROSENS_SENS_CONFIG1_FSR_8G 0x04
177 #define MLVIBROSENS_SENS_CONFIG1_FSR_16G 0x06
178 #define MLVIBROSENS_SENS_CONFIG1_FSR_MASK 0x06
179 #define MLVIBROSENS_SENS_CONFIG1_MODE_STANDBY 0x00
180 #define MLVIBROSENS_SENS_CONFIG1_MODE_ACTIVE 0x01
181 #define MLVIBROSENS_SENS_CONFIG1_MODE_MASK 0x01
187 #define MLVIBROSENS_SENS_CONFIG3_WAKE_ODR_MASK 0xF0
188 #define MLVIBROSENS_SENS_CONFIG3_SLEEP_ODR_MASK 0x0F
194 #define MLVIBROSENS_SENS_CONFIG4_EXT_TRIG_M 0x80
195 #define MLVIBROSENS_SENS_CONFIG4_WAKE_SDCD_WT 0x40
196 #define MLVIBROSENS_SENS_CONFIG4_WAKE_SDCD_OT 0x20
197 #define MLVIBROSENS_SENS_CONFIG4_WAKE_ORIENT 0x10
198 #define MLVIBROSENS_SENS_CONFIG4_DRDY_PUL 0x08
199 #define MLVIBROSENS_SENS_CONFIG4_INT2_FUNC 0x04
200 #define MLVIBROSENS_SENS_CONFIG4_INT_PP_OD 0x02
201 #define MLVIBROSENS_SENS_CONFIG4_INT_POL 0x01
202 #define MLVIBROSENS_SENS_CONFIG4_INT_PP_LOW 0x00
208 #define MLVIBROSENS_INT_EN_DRDY 0x80
209 #define MLVIBROSENS_INT_EN_BUF 0x40
210 #define MLVIBROSENS_INT_EN_SDCD_OT 0x20
211 #define MLVIBROSENS_INT_EN_SDCD_WT 0x10
212 #define MLVIBROSENS_INT_EN_ORIENT 0x08
213 #define MLVIBROSENS_INT_EN_ASLP 0x04
214 #define MLVIBROSENS_INT_EN_BOOT_DIS 0x02
215 #define MLVIBROSENS_INT_EN_WAKE_OUT 0x01
221 #define MLVIBROSENS_INT_PIN_SEL_DRDY_INT2 0x80
222 #define MLVIBROSENS_INT_PIN_SEL_BUF_INT2 0x40
223 #define MLVIBROSENS_INT_PIN_SEL_SDCD_OT_INT2 0x20
224 #define MLVIBROSENS_INT_PIN_SEL_SDCD_WT_INT2 0x10
225 #define MLVIBROSENS_INT_PIN_SEL_ORIENT_INT2 0x08
226 #define MLVIBROSENS_INT_PIN_SEL_ASLP_INT2 0x04
227 #define MLVIBROSENS_INT_PIN_SEL_BOOT_INT2 0x02
228 #define MLVIBROSENS_INT_PIN_SEL_WAKE_OUT_INT2 0x01
229 #define MLVIBROSENS_INT_PIN_SEL_ALL_INT1 0x00
235 #define MLVIBROSENS_MODE_STANDBY 0
236 #define MLVIBROSENS_MODE_ACTIVE 1
242 #define MLVIBROSENS_FSR_2G 0
243 #define MLVIBROSENS_FSR_4G 1
244 #define MLVIBROSENS_FSR_8G 2
245 #define MLVIBROSENS_FSR_16G 3
251 #define MLVIBROSENS_ODR_3200_HZ 0
252 #define MLVIBROSENS_ODR_1600_HZ 1
253 #define MLVIBROSENS_ODR_800_HZ 2
254 #define MLVIBROSENS_ODR_400_HZ 3
255 #define MLVIBROSENS_ODR_200_HZ 4
256 #define MLVIBROSENS_ODR_100_HZ 5
257 #define MLVIBROSENS_ODR_50_HZ 6
258 #define MLVIBROSENS_ODR_25_HZ 7
259 #define MLVIBROSENS_ODR_12_5_HZ 8
260 #define MLVIBROSENS_ODR_6_25_HZ 9
261 #define MLVIBROSENS_ODR_3_125_HZ 10
262 #define MLVIBROSENS_ODR_1_563_HZ 11
263 #define MLVIBROSENS_ODR_0_781_HZ 12
269 #define MLVIBROSENS_LSB_PER_G_FSR_2G 1024
270 #define MLVIBROSENS_LSB_PER_G_FSR_4G 512
271 #define MLVIBROSENS_LSB_PER_G_FSR_8G 256
272 #define MLVIBROSENS_LSB_PER_G_FSR_16G 128
278 #define MLVIBROSENS_TEMP_OFFSET 25
284 #define MLVIBROSENS_VIBRO_STATE_IDLE 0
285 #define MLVIBROSENS_VIBRO_STATE_BALANCED 1
286 #define MLVIBROSENS_VIBRO_STATE_UNBALANCED 2
287 #define MLVIBROSENS_VIBRO_STATE_BOTH 3
294 #define MLVIBROSENS_DEVICE_ADDRESS_0 0x18
295 #define MLVIBROSENS_DEVICE_ADDRESS_1 0x19
313 #define MLVIBROSENS_MAP_MIKROBUS( cfg, mikrobus ) \
314 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
315 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
316 cfg.bal = MIKROBUS( mikrobus, MIKROBUS_CS ); \
317 cfg.unb = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
318 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
667 #endif // MLVIBROSENS_H
pin_name_t int_pin
Definition: mlvibrosens.h:357
@ MLVIBROSENS_OK
Definition: mlvibrosens.h:383
void mlvibrosens_set_vibro_state(mlvibrosens_t *ctx, uint8_t state)
ML Vibro Sens set vibro state function.
uint8_t slave_address
Definition: mlvibrosens.h:340
err_t mlvibrosens_check_comm(mlvibrosens_t *ctx)
ML Vibro Sens check comm function.
uint32_t i2c_speed
Definition: mlvibrosens.h:359
ML Vibro Sens Click configuration object.
Definition: mlvibrosens.h:351
void mlvibrosens_balanced_enable(mlvibrosens_t *ctx)
ML Vibro Sens balanced enable function.
uint16_t lsb_per_g
Definition: mlvibrosens.h:342
uint8_t mlvibrosens_get_int_pin(mlvibrosens_t *ctx)
ML Vibro Sens get int1 pin function.
err_t mlvibrosens_write_reg(mlvibrosens_t *ctx, uint8_t reg, uint8_t data_in)
ML Vibro Sens write reg function.
pin_name_t sda
Definition: mlvibrosens.h:353
mlvibrosens_return_value_t
ML Vibro Sens Click return value data.
Definition: mlvibrosens.h:382
float z
Definition: mlvibrosens.h:372
digital_out_t bal
Definition: mlvibrosens.h:330
ML Vibro Sens Click Axes data structure.
Definition: mlvibrosens.h:369
@ MLVIBROSENS_ERROR
Definition: mlvibrosens.h:384
uint8_t i2c_address
Definition: mlvibrosens.h:360
err_t mlvibrosens_get_data(mlvibrosens_t *ctx, mlvibrosens_data_t *data_out)
ML Vibro Sens get data function.
void mlvibrosens_unbalanced_enable(mlvibrosens_t *ctx)
ML Vibro Sens unbalanced enable function.
err_t mlvibrosens_init(mlvibrosens_t *ctx, mlvibrosens_cfg_t *cfg)
ML Vibro Sens initialization function.
err_t mlvibrosens_set_mode(mlvibrosens_t *ctx, uint8_t mode)
ML Vibro Sens set mode function.
err_t mlvibrosens_read_reg(mlvibrosens_t *ctx, uint8_t reg, uint8_t *data_out)
ML Vibro Sens read reg function.
err_t mlvibrosens_default_cfg(mlvibrosens_t *ctx)
ML Vibro Sens default configuration function.
err_t mlvibrosens_set_odr(mlvibrosens_t *ctx, uint8_t odr)
ML Vibro Sens set odr function.
pin_name_t unb
Definition: mlvibrosens.h:356
digital_out_t unb
Definition: mlvibrosens.h:331
err_t mlvibrosens_set_fsr(mlvibrosens_t *ctx, uint8_t fsr)
ML Vibro Sens set fsr function.
void mlvibrosens_balanced_disable(mlvibrosens_t *ctx)
ML Vibro Sens balanced disable function.
i2c_master_t i2c
Definition: mlvibrosens.h:337
float x
Definition: mlvibrosens.h:370
int8_t temperature
Definition: mlvibrosens.h:373
void mlvibrosens_unbalanced_disable(mlvibrosens_t *ctx)
ML Vibro Sens unbalanced disable function.
pin_name_t scl
Definition: mlvibrosens.h:352
err_t mlvibrosens_write_regs(mlvibrosens_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
ML Vibro Sens write regs function.
err_t mlvibrosens_get_status(mlvibrosens_t *ctx, uint8_t *status)
ML Vibro Sens get status function.
void mlvibrosens_cfg_setup(mlvibrosens_cfg_t *cfg)
ML Vibro Sens configuration object setup function.
err_t mlvibrosens_read_regs(mlvibrosens_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
ML Vibro Sens read regs function.
pin_name_t bal
Definition: mlvibrosens.h:355
float y
Definition: mlvibrosens.h:371
ML Vibro Sens Click context object.
Definition: mlvibrosens.h:328
digital_in_t int_pin
Definition: mlvibrosens.h:334
err_t mlvibrosens_sw_reset(mlvibrosens_t *ctx)
ML Vibro Sens sw reset function.