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 C3DHALL13_REG_DEVICE_CONFIG_1 0x00
74#define C3DHALL13_REG_DEVICE_CONFIG_2 0x01
75#define C3DHALL13_REG_SENSOR_CONFIG_1 0x02
76#define C3DHALL13_REG_SENSOR_CONFIG_2 0x03
77#define C3DHALL13_REG_THR_CONFIG_1 0x04
78#define C3DHALL13_REG_THR_CONFIG_2 0x05
79#define C3DHALL13_REG_THR_CONFIG_3 0x06
80#define C3DHALL13_REG_SENSOR_CONFIG_3 0x07
81#define C3DHALL13_REG_INT_CONFIG_1 0x08
82#define C3DHALL13_REG_SENSOR_CONFIG_4 0x09
83#define C3DHALL13_REG_SENSOR_CONFIG_5 0x0A
84#define C3DHALL13_REG_SENSOR_CONFIG_6 0x0B
85#define C3DHALL13_REG_I2C_ADDRESS 0x0C
86#define C3DHALL13_REG_DEVICE_ID 0x0D
87#define C3DHALL13_REG_MANUFACTURER_ID_LSB 0x0E
88#define C3DHALL13_REG_MANUFACTURER_ID_MSB 0x0F
89#define C3DHALL13_REG_T_RESULT_MSB 0x10
90#define C3DHALL13_REG_T_RESULT_LSB 0x11
91#define C3DHALL13_REG_X_RESULT_MSB 0x12
92#define C3DHALL13_REG_X_RESULT_LSB 0x13
93#define C3DHALL13_REG_Y_RESULT_MSB 0x14
94#define C3DHALL13_REG_Y_RESULT_LSB 0x15
95#define C3DHALL13_REG_Z_RESULT_MSB 0x16
96#define C3DHALL13_REG_Z_RESULT_LSB 0x17
97#define C3DHALL13_REG_CONV_STATUS 0x18
98#define C3DHALL13_REG_ANGLE_RESULT_MSB 0x19
99#define C3DHALL13_REG_ANGLE_RESULT_LSB 0x1A
100#define C3DHALL13_REG_MAGNITUDE_RESULT 0x1B
101#define C3DHALL13_REG_DEVICE_STATUS 0x1C
119#define C3DHALL13_DEVICE_CONFIG_1_CRC_DISABLE 0x00
120#define C3DHALL13_DEVICE_CONFIG_1_CRC_ENABLE 0x80
121#define C3DHALL13_DEVICE_CONFIG_1_CRC_EN_MASK 0x80
122#define C3DHALL13_DEVICE_CONFIG_1_MAG_TEMPCO_0 0x00
123#define C3DHALL13_DEVICE_CONFIG_1_MAG_TEMPCO_0_12 0x20
124#define C3DHALL13_DEVICE_CONFIG_1_MAG_TEMPCO_0_3 0x40
125#define C3DHALL13_DEVICE_CONFIG_1_MAG_TEMPCO_0_2 0x60
126#define C3DHALL13_DEVICE_CONFIG_1_MAG_TEMPCO_MASK 0x60
127#define C3DHALL13_DEVICE_CONFIG_1_CONV_AVG_1X 0x00
128#define C3DHALL13_DEVICE_CONFIG_1_CONV_AVG_2X 0x04
129#define C3DHALL13_DEVICE_CONFIG_1_CONV_AVG_4X 0x08
130#define C3DHALL13_DEVICE_CONFIG_1_CONV_AVG_8X 0x0C
131#define C3DHALL13_DEVICE_CONFIG_1_CONV_AVG_16X 0x10
132#define C3DHALL13_DEVICE_CONFIG_1_CONV_AVG_32X 0x14
133#define C3DHALL13_DEVICE_CONFIG_1_CONV_AVG_MASK 0x1C
134#define C3DHALL13_DEVICE_CONFIG_1_I2C_RD_STANDARD 0x00
135#define C3DHALL13_DEVICE_CONFIG_1_I2C_RD_1_BYTE_16BIT 0x01
136#define C3DHALL13_DEVICE_CONFIG_1_I2C_RD_1_BYTE_8BIT 0x02
137#define C3DHALL13_DEVICE_CONFIG_1_I2C_RD_MASK 0x03
143#define C3DHALL13_DEVICE_CONFIG_2_THR_HYST_2_LSB 0x00
144#define C3DHALL13_DEVICE_CONFIG_2_THR_HYST_4_LSB 0x20
145#define C3DHALL13_DEVICE_CONFIG_2_THR_HYST_8_LSB 0x40
146#define C3DHALL13_DEVICE_CONFIG_2_THR_HYST_16_LSB 0x60
147#define C3DHALL13_DEVICE_CONFIG_2_THR_HYST_32_LSB 0x80
148#define C3DHALL13_DEVICE_CONFIG_2_THR_HYST_64_LSB 0xA0
149#define C3DHALL13_DEVICE_CONFIG_2_THR_HYST_128_LSB 0xC0
150#define C3DHALL13_DEVICE_CONFIG_2_THR_HYST_256_LSB 0xE0
151#define C3DHALL13_DEVICE_CONFIG_2_THR_HYST_MASK 0xE0
152#define C3DHALL13_DEVICE_CONFIG_2_LP_LN_ACTIVE_CURRENT_MODE 0x00
153#define C3DHALL13_DEVICE_CONFIG_2_LP_LN_NOISE_MODE 0x10
154#define C3DHALL13_DEVICE_CONFIG_2_LP_LN_MASK 0x10
155#define C3DHALL13_DEVICE_CONFIG_2_I2C_GLITCH_FILTER_ON 0x00
156#define C3DHALL13_DEVICE_CONFIG_2_I2C_GLITCH_FILTER_OFF 0x08
157#define C3DHALL13_DEVICE_CONFIG_2_I2C_GLITCH_FILTER_MASK 0x08
158#define C3DHALL13_DEVICE_CONFIG_2_TRIGGER_MODE_CMD 0x00
159#define C3DHALL13_DEVICE_CONFIG_2_TRIGGER_MODE_INT 0x04
160#define C3DHALL13_DEVICE_CONFIG_2_TRIGGER_MODE_MASK 0x04
161#define C3DHALL13_DEVICE_CONFIG_2_OPERATING_MODE_STANDBY 0x00
162#define C3DHALL13_DEVICE_CONFIG_2_OPERATING_MODE_SLEEP 0x01
163#define C3DHALL13_DEVICE_CONFIG_2_OPERATING_MODE_CONTINUOUS 0x02
164#define C3DHALL13_DEVICE_CONFIG_2_OPERATING_MODE_WS 0x03
165#define C3DHALL13_DEVICE_CONFIG_2_OPERATING_MODE_MASK 0x03
171#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_DISABLE 0x00
172#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_ENABLE_X 0x10
173#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_ENABLE_Y 0x20
174#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_ENABLE_XY 0x30
175#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_ENABLE_Z 0x40
176#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_ENABLE_ZX 0x50
177#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_ENABLE_YZ 0x60
178#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_ENABLE_XYZ 0x70
179#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_ENABLE_XYX 0x80
180#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_ENABLE_YXY 0x90
181#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_ENABLE_YZY 0xA0
182#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_ENABLE_XZX 0xB0
183#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_XYZ_POS_OFFSET 0xC0
184#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_XYZ_NEG_OFFSET 0xD0
185#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_HALL_RES_ADC 0xE0
186#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_HALL_OFFSET_AFE 0xF0
187#define C3DHALL13_SENSOR_CONFIG_1_MAG_CH_EN_MASK 0xF0
188#define C3DHALL13_SENSOR_CONFIG_1_SLEEPTIME_1MS 0x00
189#define C3DHALL13_SENSOR_CONFIG_1_SLEEPTIME_5MS 0x01
190#define C3DHALL13_SENSOR_CONFIG_1_SLEEPTIME_10MS 0x02
191#define C3DHALL13_SENSOR_CONFIG_1_SLEEPTIME_15MS 0x03
192#define C3DHALL13_SENSOR_CONFIG_1_SLEEPTIME_20MS 0x04
193#define C3DHALL13_SENSOR_CONFIG_1_SLEEPTIME_30MS 0x05
194#define C3DHALL13_SENSOR_CONFIG_1_SLEEPTIME_50MS 0x06
195#define C3DHALL13_SENSOR_CONFIG_1_SLEEPTIME_100MS 0x07
196#define C3DHALL13_SENSOR_CONFIG_1_SLEEPTIME_500MS 0x08
197#define C3DHALL13_SENSOR_CONFIG_1_SLEEPTIME_1000MS 0x09
198#define C3DHALL13_SENSOR_CONFIG_1_SLEEPTIME_2000MS 0x0A
199#define C3DHALL13_SENSOR_CONFIG_1_SLEEPTIME_5000MS 0x0B
200#define C3DHALL13_SENSOR_CONFIG_1_SLEEPTIME_20000MS 0x0C
201#define C3DHALL13_SENSOR_CONFIG_1_SLEEPTIME_MASK 0x0F
207#define C3DHALL13_SENSOR_CONFIG_2_T_RATE_SINGLE 0x00
208#define C3DHALL13_SENSOR_CONFIG_2_T_RATE_AVG 0x80
209#define C3DHALL13_SENSOR_CONFIG_2_T_RATE_MASK 0x80
210#define C3DHALL13_SENSOR_CONFIG_2_INTB_POL_LOW 0x00
211#define C3DHALL13_SENSOR_CONFIG_2_INTB_POL_HIGH 0x40
212#define C3DHALL13_SENSOR_CONFIG_2_INTB_POL_MASK 0x40
213#define C3DHALL13_SENSOR_CONFIG_2_MAG_THR_DIR_ABOVE 0x00
214#define C3DHALL13_SENSOR_CONFIG_2_MAG_THR_DIR_BELOW 0x20
215#define C3DHALL13_SENSOR_CONFIG_2_MAG_THR_DIR_MASK 0x20
216#define C3DHALL13_SENSOR_CONFIG_2_MAG_GAIN_CH_1 0x00
217#define C3DHALL13_SENSOR_CONFIG_2_MAG_GAIN_CH_2 0x10
218#define C3DHALL13_SENSOR_CONFIG_2_MAG_GAIN_CH_MASK 0x10
219#define C3DHALL13_SENSOR_CONFIG_2_ANGLE_EN_NO_ANGLE 0x00
220#define C3DHALL13_SENSOR_CONFIG_2_ANGLE_EN_XY_ANGLE 0x04
221#define C3DHALL13_SENSOR_CONFIG_2_ANGLE_EN_YZ_ANGLE 0x08
222#define C3DHALL13_SENSOR_CONFIG_2_ANGLE_EN_XZ_ANGLE 0x0C
223#define C3DHALL13_SENSOR_CONFIG_2_ANGLE_EN_MASK 0x0C
224#define C3DHALL13_SENSOR_CONFIG_2_X_Y_RANGE_40MT 0x00
225#define C3DHALL13_SENSOR_CONFIG_2_X_Y_RANGE_80MT 0x02
226#define C3DHALL13_SENSOR_CONFIG_2_X_Y_RANGE_MASK 0x02
227#define C3DHALL13_SENSOR_CONFIG_2_Z_RANGE_40MT 0x00
228#define C3DHALL13_SENSOR_CONFIG_2_Z_RANGE_80MT 0x01
229#define C3DHALL13_SENSOR_CONFIG_2_Z_RANGE_MASK 0x01
235#define C3DHALL13_SENSOR_CONFIG_3_WOC_SEL_DISABLE 0x00
236#define C3DHALL13_SENSOR_CONFIG_3_WOC_SEL_ANGLE 0x40
237#define C3DHALL13_SENSOR_CONFIG_3_WOC_SEL_MAG_FIELD 0x80
238#define C3DHALL13_SENSOR_CONFIG_3_WOC_SEL_MASK 0xC0
239#define C3DHALL13_SENSOR_CONFIG_3_THR_SEL_DISABLE 0x00
240#define C3DHALL13_SENSOR_CONFIG_3_THR_SEL_ANGLE 0x10
241#define C3DHALL13_SENSOR_CONFIG_3_THR_SEL_B_FIELD 0x20
242#define C3DHALL13_SENSOR_CONFIG_3_THR_SEL_BUTTON 0x30
243#define C3DHALL13_SENSOR_CONFIG_3_THR_SEL_MASK 0x30
244#define C3DHALL13_SENSOR_CONFIG_3_ANGLE_HYS_1_DEG 0x00
245#define C3DHALL13_SENSOR_CONFIG_3_ANGLE_HYS_2_DEGS 0x04
246#define C3DHALL13_SENSOR_CONFIG_3_ANGLE_HYS_4_DEGS 0x08
247#define C3DHALL13_SENSOR_CONFIG_3_ANGLE_HYS_8_DEGS 0x08
248#define C3DHALL13_SENSOR_CONFIG_3_ANGLE_HYS_MASK 0x0C
249#define C3DHALL13_SENSOR_CONFIG_3_ANGLE_OFFSET_EN_DISABLE 0x00
250#define C3DHALL13_SENSOR_CONFIG_3_ANGLE_OFFSET_EN_ENABLE 0x02
251#define C3DHALL13_SENSOR_CONFIG_3_ANGLE_OFFSET_EN_MASK 0x02
252#define C3DHALL13_SENSOR_CONFIG_3_ANGLE_OFFSET_DIR_ADDED 0x00
253#define C3DHALL13_SENSOR_CONFIG_3_ANGLE_OFFSET_DIR_SUBSTR 0x01
254#define C3DHALL13_SENSOR_CONFIG_3_ANGLE_OFFSET_DIR_MASK 0x01
260#define C3DHALL13_INT_CONFIG_1_RESULT_INT_NO_ASSERT 0x00
261#define C3DHALL13_INT_CONFIG_1_RESULT_INT_ASSERT 0x80
262#define C3DHALL13_INT_CONFIG_1_RESULT_INT_MASK 0x80
263#define C3DHALL13_INT_CONFIG_1_THRESHOLD_INT_NO_ASSERT 0x00
264#define C3DHALL13_INT_CONFIG_1_THRESHOLD_INT_ASSERT 0x40
265#define C3DHALL13_INT_CONFIG_1_THRESHOLD_INT_MASK 0x40
266#define C3DHALL13_INT_CONFIG_1_INT_STATE_LATCHED 0x00
267#define C3DHALL13_INT_CONFIG_1_INT_STATE_PULSE_5US 0x20
268#define C3DHALL13_INT_CONFIG_1_INT_STATE_MASK 0x20
269#define C3DHALL13_INT_CONFIG_1_INT_MODE_NO_INT 0x00
270#define C3DHALL13_INT_CONFIG_1_INT_MODE_INT 0x04
271#define C3DHALL13_INT_CONFIG_1_INT_MODE_INT_WO_I2C_BUSY 0x08
272#define C3DHALL13_INT_CONFIG_1_INT_MODE_SCL 0x0C
273#define C3DHALL13_INT_CONFIG_1_INT_MODE_SCL_WO_I2C_BUSY 0x10
274#define C3DHALL13_INT_CONFIG_1_INT_MODE_UNIPOLAR_SWITCH 0x14
275#define C3DHALL13_INT_CONFIG_1_INT_MODE_OMNIPOLAR_SWITCH 0x18
276#define C3DHALL13_INT_CONFIG_1_INT_MODE_MASK 0x1C
277#define C3DHALL13_INT_CONFIG_1_INT_POL_EN_DISABLE 0x00
278#define C3DHALL13_INT_CONFIG_1_INT_POL_EN_ENABLE 0x02
279#define C3DHALL13_INT_CONFIG_1_INT_POL_EN_MASK 0x02
280#define C3DHALL13_INT_CONFIG_1_MASK_INT_ENABLE 0x00
281#define C3DHALL13_INT_CONFIG_1_MASK_INT_DISABLE 0x01
282#define C3DHALL13_INT_CONFIG_1_MASK_INT_MASK 0x01
288#define C3DHALL13_DEVICE_ID 0x00
289#define C3DHALL13_DEVICE_ID_MASK 0x0C
290#define C3DHALL13_MANUFACTURER_ID_LSB 0x49
291#define C3DHALL13_MANUFACTURER_ID_MSB 0x54
297#define C3DHALL13_CONV_STATUS_SET_COUNT_MASK 0xE0
298#define C3DHALL13_CONV_STATUS_POR 0x10
299#define C3DHALL13_CONV_STATUS_DIAG_STATUS 0x02
300#define C3DHALL13_CONV_STATUS_DATA_READY 0x01
306#define C3DHALL13_DEVICE_STATUS_INTB_RB 0x10
307#define C3DHALL13_DEVICE_STATUS_INT_ER 0x04
308#define C3DHALL13_DEVICE_STATUS_OTP_CRC_ER 0x02
309#define C3DHALL13_DEVICE_STATUS_THR_CROSS 0x01
315#define C3DHALL13_TEMP_SENS_T0 25.0
316#define C3DHALL13_TEMP_ADC_T0 17512
317#define C3DHALL13_TEMP_ADC_RESOLUTION 58.2
318#define C3DHALL13_ANGLE_RESOLUTION 16.0
319#define C3DHALL13_XYZ_SENSITIVITY_40MT 885.0
320#define C3DHALL13_XYZ_SENSITIVITY_80MT 446.0
327#define C3DHALL13_DEVICE_ADDRESS_0 0x34
328#define C3DHALL13_DEVICE_ADDRESS_1 0x35
346#define C3DHALL13_MAP_MIKROBUS( cfg, mikrobus ) \
347 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
348 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
349 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
c3dhall13_return_value_t
3D Hall 13 Click return value data.
Definition c3dhall13.h:407
@ C3DHALL13_ERROR
Definition c3dhall13.h:409
@ C3DHALL13_OK
Definition c3dhall13.h:408
err_t c3dhall13_init(c3dhall13_t *ctx, c3dhall13_cfg_t *cfg)
3D Hall 13 initialization function.
void c3dhall13_cfg_setup(c3dhall13_cfg_t *cfg)
3D Hall 13 configuration object setup function.
err_t c3dhall13_generic_read(c3dhall13_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
3D Hall 13 I2C reading function.
err_t c3dhall13_read_register(c3dhall13_t *ctx, uint8_t reg, uint8_t *data_out)
3D Hall 13 read register function.
err_t c3dhall13_generic_write(c3dhall13_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
3D Hall 13 I2C writing function.
err_t c3dhall13_read_data(c3dhall13_t *ctx, c3dhall13_data_t *data_out)
3D Hall 13 read data function.
err_t c3dhall13_default_cfg(c3dhall13_t *ctx)
3D Hall 13 default configuration function.
uint8_t c3dhall13_get_int_pin(c3dhall13_t *ctx)
3D Hall 13 get int pin function.
err_t c3dhall13_write_register(c3dhall13_t *ctx, uint8_t reg, uint8_t data_in)
3D Hall 13 write register function.
err_t c3dhall13_check_communication(c3dhall13_t *ctx)
3D Hall 13 check communication function.
3D Hall 13 Click configuration object.
Definition c3dhall13.h:391
uint32_t i2c_speed
Definition c3dhall13.h:397
pin_name_t scl
Definition c3dhall13.h:392
pin_name_t int_pin
Definition c3dhall13.h:395
pin_name_t sda
Definition c3dhall13.h:393
uint8_t i2c_address
Definition c3dhall13.h:398
3D Hall 13 Click data object.
Definition c3dhall13.h:359
float z_axis
Definition c3dhall13.h:362
uint8_t magnitude
Definition c3dhall13.h:365
float x_axis
Definition c3dhall13.h:360
float y_axis
Definition c3dhall13.h:361
float angle
Definition c3dhall13.h:363
float temperature
Definition c3dhall13.h:364
3D Hall 13 Click context object.
Definition c3dhall13.h:374
digital_in_t int_pin
Definition c3dhall13.h:376
i2c_master_t i2c
Definition c3dhall13.h:379
uint8_t slave_address
Definition c3dhall13.h:382