accel25 2.1.0.0
accel25.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2020 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
28#ifndef ACCEL25_H
29#define ACCEL25_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
39#ifdef PREINIT_SUPPORTED
40#include "preinit.h"
41#endif
42
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
45 #include "delays.h"
46 #endif
47#endif
48
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_i2c_master.h"
52
73#define ACCEL25_REG_INT_SRC0 0x00
74#define ACCEL25_REG_INT_CLR0 0x00
75#define ACCEL25_REG_INT_SRC1 0x01
76#define ACCEL25_REG_INT_CLR1 0x01
77#define ACCEL25_REG_STATUS 0x02
78#define ACCEL25_REG_XOUT_MSB 0x03
79#define ACCEL25_REG_XOUT_LSB 0x04
80#define ACCEL25_REG_YOUT_MSB 0x05
81#define ACCEL25_REG_YOUT_LSB 0x06
82#define ACCEL25_REG_ZOUT_MSB 0x07
83#define ACCEL25_REG_ZOUT_LSB 0x08
84#define ACCEL25_REG_TOUT 0x09
85#define ACCEL25_REG_INT_MASK0 0x0A
86#define ACCEL25_REG_INT_MASK1 0x0B
87#define ACCEL25_REG_DETECTION 0x0C
88#define ACCEL25_REG_CONTROL 0x0D
89#define ACCEL25_REG_DEVICE_ID 0x0E
90#define ACCEL25_REG_WHO_AM_I 0x0F
91
92 // accel25_reg
93
112#define ACCEL25_INT_SRC0_CHORZ 0x80
113#define ACCEL25_INT_SRC0_CHORXY 0x40
114#define ACCEL25_INT_SRC0_SHYM 0x08
115#define ACCEL25_INT_SRC0_SHYP 0x04
116#define ACCEL25_INT_SRC0_SHXM 0x02
117#define ACCEL25_INT_SRC0_SHXP 0x01
118
123#define ACCEL25_INT_CLR0_ORZC 0x80
124#define ACCEL25_INT_CLR0_ORXYC 0x40
125#define ACCEL25_INT_CLR0_SHYMC 0x08
126#define ACCEL25_INT_CLR0_SHYPC 0x04
127#define ACCEL25_INT_CLR0_SHXMC 0x02
128#define ACCEL25_INT_CLR0_SHXPC 0x01
129#define ACCEL25_INT_CLR0_ALL 0xCF
130
135#define ACCEL25_INT_SRC1_TILT 0x80
136#define ACCEL25_INT_SRC1_ORZ 0x40
137#define ACCEL25_INT_SRC1_ORXY_X_PLUS 0x00
138#define ACCEL25_INT_SRC1_ORXY_Y_PLUS 0x10
139#define ACCEL25_INT_SRC1_ORXY_X_MINUS 0x20
140#define ACCEL25_INT_SRC1_ORXY_Y_MINUS 0x30
141#define ACCEL25_INT_SRC1_ORXY_MASK 0x30
142#define ACCEL25_INT_SRC1_DRDY 0x01
143
148#define ACCEL25_INT_CLR1_SW_RST 0x10
149#define ACCEL25_INT_CLR1_DRDYC 0x01
150
155#define ACCEL25_STATUS_ORD 0x10
156#define ACCEL25_STATUS_ORIZ_MSB 0x08
157#define ACCEL25_STATUS_ORIZ_LSB 0x04
158#define ACCEL25_STATUS_ORIXY_MSB 0x02
159#define ACCEL25_STATUS_ORIXY_LSB 0x01
160
165#define ACCEL25_INT_MASK0_ORZE 0x80
166#define ACCEL25_INT_MASK0_ORXYE 0x40
167#define ACCEL25_INT_MASK0_SHYME 0x08
168#define ACCEL25_INT_MASK0_SHYPE 0x04
169#define ACCEL25_INT_MASK0_SHXME 0x02
170#define ACCEL25_INT_MASK0_SHXPE 0x01
171#define ACCEL25_INT_MASK0_NONE 0x00
172#define ACCEL25_INT_MASK0_ALL 0xCF
173
178#define ACCEL25_INT_MASK1_DRDYE 0x01
179
184#define ACCEL25_DETECTION_SHM 0x80
185#define ACCEL25_DETECTION_SHTH_0p25G 0x00
186#define ACCEL25_DETECTION_SHTH_0p5G 0x10
187#define ACCEL25_DETECTION_SHTH_0p75G 0x20
188#define ACCEL25_DETECTION_SHTH_1G 0x30
189#define ACCEL25_DETECTION_SHTH_1p25G 0x40
190#define ACCEL25_DETECTION_SHTH_1p5G 0x50
191#define ACCEL25_DETECTION_SHTH_1p75G 0x60
192#define ACCEL25_DETECTION_SHTH_2G 0x70
193#define ACCEL25_DETECTION_SHTH_MASK 0x70
194#define ACCEL25_DETECTION_SHC_8 0x00
195#define ACCEL25_DETECTION_SHC_16 0x04
196#define ACCEL25_DETECTION_SHC_32 0x08
197#define ACCEL25_DETECTION_SHC_64 0x0C
198#define ACCEL25_DETECTION_SHC_MASK 0x0C
199#define ACCEL25_DETECTION_ORC_16 0x00
200#define ACCEL25_DETECTION_ORC_32 0x01
201#define ACCEL25_DETECTION_ORC_64 0x02
202#define ACCEL25_DETECTION_ORC_128 0x03
203#define ACCEL25_DETECTION_ORC_MASK 0x03
204#define ACCEL25_DETECTION_NONE 0x00
205
210#define ACCEL25_CONTROL_FSR_2G 0x00
211#define ACCEL25_CONTROL_FSR_4G 0x20
212#define ACCEL25_CONTROL_FSR_8G 0x40
213#define ACCEL25_CONTROL_FSR_UNDEFINED 0x60
214#define ACCEL25_CONTROL_FSR_MASK 0x60
215#define ACCEL25_CONTROL_PD 0x01
216
221#define ACCEL25_ACCEL_RESOLUTION 2048.0f
222#define ACCEL25_TEMP_SENSITIVITY 0.586f
223#define ACCEL25_TEMP_NOMINAL 25.0f
224
229#define ACCEL25_FSR_2G 0
230#define ACCEL25_FSR_4G 1
231#define ACCEL25_FSR_8G 2
232
237#define ACCEL25_DEVICE_ID 0x02
238
243#define ACCEL25_PIN_STATE_LOW 0x00
244#define ACCEL25_PIN_STATE_HIGH 0x01
245
251#define ACCEL25_DEVICE_ADDRESS 0x15
252
253 // accel25_set
254
269#define ACCEL25_MAP_MIKROBUS( cfg, mikrobus ) \
270 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
271 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
272 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
273
274 // accel25_map
275 // accel25
276
281typedef struct
282{
283 // Input pins
284 digital_in_t int_pin;
286 // Modules
287 i2c_master_t i2c;
289 // I2C slave address
292 uint8_t fsr_sens;
294} accel25_t;
295
300typedef struct
301{
302 pin_name_t scl;
303 pin_name_t sda;
305 pin_name_t int_pin;
307 uint32_t i2c_speed;
308 uint8_t i2c_address;
311
316typedef struct
317{
318 float x;
319 float y;
320 float z;
324
329typedef enum
330{
332 ACCEL25_ERROR = -1
333
335
352
367
381
396err_t accel25_generic_write ( accel25_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
397
412err_t accel25_generic_read ( accel25_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
413
426err_t accel25_write_register ( accel25_t *ctx, uint8_t reg, uint8_t data_in );
427
440err_t accel25_read_register ( accel25_t *ctx, uint8_t reg, uint8_t *data_out );
441
453
463
475
489err_t accel25_set_full_scale_range ( accel25_t *ctx, uint8_t fsr );
490
505
506#ifdef __cplusplus
507}
508#endif
509#endif // ACCEL25_H
510
511 // accel25
512
513// ------------------------------------------------------------------------ END
accel25_return_value_t
Accel 25 Click return value data.
Definition accel25.h:330
@ ACCEL25_ERROR
Definition accel25.h:332
@ ACCEL25_OK
Definition accel25.h:331
err_t accel25_set_full_scale_range(accel25_t *ctx, uint8_t fsr)
Accel 25 set full scale range function.
err_t accel25_read_data(accel25_t *ctx, accel25_data_t *data_out)
Accel 25 read data function.
void accel25_cfg_setup(accel25_cfg_t *cfg)
Accel 25 configuration object setup function.
err_t accel25_default_cfg(accel25_t *ctx)
Accel 25 default configuration function.
err_t accel25_generic_read(accel25_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Accel 25 I2C reading function.
err_t accel25_generic_write(accel25_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Accel 25 I2C writing function.
uint8_t accel25_get_int_pin(accel25_t *ctx)
Accel 25 get int pin function.
err_t accel25_write_register(accel25_t *ctx, uint8_t reg, uint8_t data_in)
Accel 25 write register function.
err_t accel25_check_communication(accel25_t *ctx)
Accel 25 check communication function.
err_t accel25_read_register(accel25_t *ctx, uint8_t reg, uint8_t *data_out)
Accel 25 read register function.
err_t accel25_init(accel25_t *ctx, accel25_cfg_t *cfg)
Accel 25 initialization function.
err_t accel25_soft_reset(accel25_t *ctx)
Accel 25 soft reset function.
Accel 25 Click configuration object.
Definition accel25.h:301
uint32_t i2c_speed
Definition accel25.h:307
pin_name_t scl
Definition accel25.h:302
pin_name_t int_pin
Definition accel25.h:305
pin_name_t sda
Definition accel25.h:303
uint8_t i2c_address
Definition accel25.h:308
Accel 25 Click data structure.
Definition accel25.h:317
float y
Definition accel25.h:319
float x
Definition accel25.h:318
float z
Definition accel25.h:320
float temperature
Definition accel25.h:321
Accel 25 Click context object.
Definition accel25.h:282
digital_in_t int_pin
Definition accel25.h:284
i2c_master_t i2c
Definition accel25.h:287
uint8_t fsr_sens
Definition accel25.h:292
uint8_t slave_address
Definition accel25.h:290