hallswitch3 2.1.0.0
hallswitch3.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 HALLSWITCH3_H
29#define HALLSWITCH3_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 HALLSWITCH3_REG_STATUS 0x00
74#define HALLSWITCH3_REG_CONTROL_REG1 0x01
75#define HALLSWITCH3_REG_OUT_M_REG 0x03
76#define HALLSWITCH3_REG_USER_ASSERT_THRESH 0x04
77#define HALLSWITCH3_REG_USER_CLEAR_THRESH 0x05
78#define HALLSWITCH3_REG_USER_ODR 0x06
79#define HALLSWITCH3_REG_WHO_AM_I 0x08
80#define HALLSWITCH3_REG_I2C_ADDR 0x09
81
82 // hallswitch3_reg
83
98#define HALLSWITCH3_STATUS_OUT_B_CLEAR 0x00
99#define HALLSWITCH3_STATUS_OUT_B_ASSERT 0x01
100#define HALLSWITCH3_STATUS_RST_COMPLETE 0x00
101#define HALLSWITCH3_STATUS_RST_NOT_COMPLETE 0x02
102#define HALLSWITCH3_STATUS_OPMODE_SA 0x00
103#define HALLSWITCH3_STATUS_OPMODE_I2C 0x08
104#define HALLSWITCH3_STATUS_MDR_DATA_RDY 0x00
105#define HALLSWITCH3_STATUS_MDR_DATA_NO_RDY 0x20
106#define HALLSWITCH3_STATUS_MDO_DATA_OK 0x00
107#define HALLSWITCH3_STATUS_MDO_DATA_FAULT 0x40
108#define HALLSWITCH3_STATUS_VOUT_LOW 0x00
109#define HALLSWITCH3_STATUS_VOUT_HIGH 0x80
110
115#define HALLSWITCH3_CONTROL_SW_RESET 0x01
116#define HALLSWITCH3_CONTROL_ONE_SHOT 0x04
117#define HALLSWITCH3_CONTROL_AUTO_STOP 0x00
118#define HALLSWITCH3_CONTROL_AUTO_START 0x08
119#define HALLSWITCH3_CONTROL_V_POL_ASSERT_H 0x00
120#define HALLSWITCH3_CONTROL_V_POL_ASSERT_L 0x20
121
126#define HALLSWITCH3_ASSERT_THOLD_DEFAULT 0x10
127#define HALLSWITCH3_CLEAR_THOLD_DEFAULT 0x15
128#define HALLSWITCH3_THOLD_BITMASK 0x1F
129
134#define HALLSWITCH3_OUT_M_RES_RST 0x00
135#define HALLSWITCH3_OUT_M_RES_LOWEST 0x01
136#define HALLSWITCH3_OUT_M_RES_HIGHEST 0x1F
137
142#define HALLSWITCH3_USER_ODR_LSP 0x1F
143#define HALLSWITCH3_USER_ODR_LSP 0x00
144#define HALLSWITCH3_USER_ODR_LSP_X5 0x01
145#define HALLSWITCH3_USER_ODR_MSP 0x02
146#define HALLSWITCH3_USER_ODR_MSP_X5 0x03
147#define HALLSWITCH3_USER_ODR_HSP 0x04
148#define HALLSWITCH3_USER_ODR_HSP_X5 0x05
149#define HALLSWITCH3_USER_ODR_HSP_X10 0x06
150#define HALLSWITCH3_USER_ODR_CFG_ERR 0x07
151
156#define HALLSWITCH3_OUT_STATE_LOW 0x00
157#define HALLSWITCH3_OUT_STATE_HIGH 0x01
158
163#define HALLSWITCH3_WHO_AM_I 0x01
164
170#define HALLSWITCH3_DEVICE_ADDRESS 0x60
171
172 // hallswitch3_set
173
188#define HALLSWITCH3_MAP_MIKROBUS( cfg, mikrobus ) \
189 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
190 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
191 cfg.out = MIKROBUS( mikrobus, MIKROBUS_INT )
192
193 // hallswitch3_map
194 // hallswitch3
195
200typedef struct
201{
202 // Input pins
203 digital_in_t out;
205 // Modules
206 i2c_master_t i2c;
208 // I2C slave address
212
217typedef struct
218{
219 pin_name_t scl;
220 pin_name_t sda;
222 pin_name_t out;
224 uint32_t i2c_speed;
225 uint8_t i2c_address;
228
239
256
271
285
299err_t hallswitch3_reg_write ( hallswitch3_t *ctx, uint8_t reg, uint8_t data_in );
300
314err_t hallswitch3_reg_read ( hallswitch3_t *ctx, uint8_t reg, uint8_t *data_out );
315
328err_t hallswitch3_get_status ( hallswitch3_t *ctx, uint8_t *status );
329
342
356
370
384err_t hallswitch3_set_vpol ( hallswitch3_t *ctx, uint8_t v_pol );
385
398err_t hallswitch3_get_mag_data ( hallswitch3_t *ctx, int8_t *mag_data );
399
413err_t hallswitch3_set_threshold ( hallswitch3_t *ctx, uint8_t assert_thold, uint8_t clear_thold );
414
429
442err_t hallswitch3_get_device_id ( hallswitch3_t *ctx, uint8_t *device_id );
443
455
456#ifdef __cplusplus
457}
458#endif
459#endif // HALLSWITCH3_H
460
461 // hallswitch3
462
463// ------------------------------------------------------------------------ END
err_t hallswitch3_reg_read(hallswitch3_t *ctx, uint8_t reg, uint8_t *data_out)
Hall Switch 3 I2C reading function.
err_t hallswitch3_set_vpol(hallswitch3_t *ctx, uint8_t v_pol)
Hall Switch 3 set VPOL function.
err_t hallswitch3_set_out_data_rate(hallswitch3_t *ctx, uint8_t odr)
Hall Switch 3 sets output data rates function.
void hallswitch3_cfg_setup(hallswitch3_cfg_t *cfg)
Hall Switch 3 configuration object setup function.
err_t hallswitch3_init(hallswitch3_t *ctx, hallswitch3_cfg_t *cfg)
Hall Switch 3 initialization function.
err_t hallswitch3_get_device_id(hallswitch3_t *ctx, uint8_t *device_id)
Hall Switch 3 get device ID function.
err_t hallswitch3_get_mag_data(hallswitch3_t *ctx, int8_t *mag_data)
Hall Switch 3 get mag data function.
err_t hallswitch3_set_one_shot(hallswitch3_t *ctx)
Hall Switch 3 sets one-shot function.
err_t hallswitch3_default_cfg(hallswitch3_t *ctx)
Hall Switch 3 default configuration function.
err_t hallswitch3_autonomous_mode(hallswitch3_t *ctx)
Hall Switch 3 autonomous mode function.
uint8_t hallswitch3_check_mag_field(hallswitch3_t *ctx)
Hall Switch 3 check magnetic field function.
err_t hallswitch3_get_status(hallswitch3_t *ctx, uint8_t *status)
Hall Switch 3 get status function.
err_t hallswitch3_reg_write(hallswitch3_t *ctx, uint8_t reg, uint8_t data_in)
Hall Switch 3 I2C writing function.
err_t hallswitch3_set_threshold(hallswitch3_t *ctx, uint8_t assert_thold, uint8_t clear_thold)
Hall Switch 3 sets assert and clear threshold function.
err_t hallswitch3_reset(hallswitch3_t *ctx)
Hall Switch 3 software reset function.
hallswitch3_return_value_t
Hall Switch 3 Click return value data.
Definition hallswitch3.h:234
@ HALLSWITCH3_ERROR
Definition hallswitch3.h:236
@ HALLSWITCH3_OK
Definition hallswitch3.h:235
Hall Switch 3 Click configuration object.
Definition hallswitch3.h:218
pin_name_t out
Definition hallswitch3.h:222
uint32_t i2c_speed
Definition hallswitch3.h:224
pin_name_t scl
Definition hallswitch3.h:219
pin_name_t sda
Definition hallswitch3.h:220
uint8_t i2c_address
Definition hallswitch3.h:225
Hall Switch 3 Click context object.
Definition hallswitch3.h:201
digital_in_t out
Definition hallswitch3.h:203
i2c_master_t i2c
Definition hallswitch3.h:206
uint8_t slave_address
Definition hallswitch3.h:209