proximity13 2.0.0.0
proximity13.h
Go to the documentation of this file.
1/*
2 * MikroSDK - MikroE Software Development Kit
3 * Copyright© 2020 MikroElektronika d.o.o.
4 *
5 * Permission is hereby granted, free of charge, to any person
6 * obtaining a copy of this software and associated documentation
7 * files (the "Software"), to deal in the Software without restriction,
8 * including without limitation the rights to use, copy, modify, merge,
9 * publish, distribute, sublicense, and/or sell copies of the Software,
10 * and to permit persons to whom the Software is furnished to do so,
11 * subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be
14 * included in all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
22 * OR OTHER DEALINGS IN THE SOFTWARE.
23 */
24
33// ----------------------------------------------------------------------------
34
35#ifndef PROXIMITY13_H
36#define PROXIMITY13_H
37
38#include "drv_digital_in.h"
39#include "drv_i2c_master.h"
40
41
42// -------------------------------------------------------------- PUBLIC MACROS
52#define PROXIMITY13_MAP_MIKROBUS( cfg, mikrobus ) \
53 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
54 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
55 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
62#define PROXIMITY13_RETVAL uint8_t
63
64#define PROXIMITY13_OK 0x00
65#define PROXIMITY13_INIT_ERROR 0xFF
66#define PROXIMITY13_ERROR 0xEE
73#define PROXIMITY13_SLAVE_ADDRESS 0x53
80#define PROXIMITY13_REG_PART_ID 0x00
81#define PROXIMITY13_REG_HW_ID 0x01
82#define PROXIMITY13_REG_REV_ID 0x02
83#define PROXIMITY13_REG_INFO_0 0x03
84#define PROXIMITY13_REG_INFO_1 0x04
85#define PROXIMITY13_REG_HOSTIN_0 0x0A
86#define PROXIMITY13_REG_COMMAND 0x0B
87#define PROXIMITY13_REG_IRQ_ENABLE 0x0F
88#define PROXIMITY13_REG_RESPONSE_1 0x10
89#define PROXIMITY13_REG_RESPONSE_0 0x11
90#define PROXIMITY13_REG_IRQ_STATUS 0x12
91#define PROXIMITY13_REG_HOSTOUT_0 0x13
92#define PROXIMITY13_REG_HOSTOUT_1 0x14
93#define PROXIMITY13_REG_HOSTOUT_2 0x15
94#define PROXIMITY13_REG_HOSTOUT_3 0x16
95#define PROXIMITY13_REG_HOSTOUT_4 0x17
96#define PROXIMITY13_REG_HOSTOUT_5 0x18
97#define PROXIMITY13_REG_HOSTOUT_6 0x19
98#define PROXIMITY13_REG_HOSTOUT_7 0x1A
99#define PROXIMITY13_REG_HOSTOUT_8 0x1B
100#define PROXIMITY13_REG_HOSTOUT_9 0x1C
101#define PROXIMITY13_REG_HOSTOUT_10 0x1D
102#define PROXIMITY13_REG_HOSTOUT_11 0x1E
103#define PROXIMITY13_REG_HOSTOUT_12 0x1F
104#define PROXIMITY13_REG_HOSTOUT_13 0x20
105#define PROXIMITY13_REG_HOSTOUT_14 0x21
106#define PROXIMITY13_REG_HOSTOUT_15 0x22
107#define PROXIMITY13_REG_HOSTOUT_16 0x23
108#define PROXIMITY13_REG_HOSTOUT_17 0x24
109#define PROXIMITY13_REG_HOSTOUT_18 0x25
110#define PROXIMITY13_REG_HOSTOUT_19 0x26
111#define PROXIMITY13_REG_HOSTOUT_20 0x27
112#define PROXIMITY13_REG_HOSTOUT_21 0x28
113#define PROXIMITY13_REG_HOSTOUT_22 0x29
114#define PROXIMITY13_REG_HOSTOUT_23 0x2A
115#define PROXIMITY13_REG_HOSTOUT_24 0x2B
116#define PROXIMITY13_REG_HOSTOUT_25 0x2C
123#define PROXIMITY13_PARAMETER_I2C_ADDR 0x00
124#define PROXIMITY13_PARAMETER_CHAN_LIST 0x01
125#define PROXIMITY13_PARAMETER_ADCCONFIG_0 0x02
126#define PROXIMITY13_PARAMETER_ADCSENS_0 0x03
127#define PROXIMITY13_PARAMETER_ADCPOST_0 0x04
128#define PROXIMITY13_PARAMETER_MEASCONFIG_0 0x05
129#define PROXIMITY13_PARAMETER_ADCCONFIG_1 0x06
130#define PROXIMITY13_PARAMETER_ADCSENS_1 0x07
131#define PROXIMITY13_PARAMETER_ADCPOST_1 0x08
132#define PROXIMITY13_PARAMETER_MEASCONFIG_1 0x09
133#define PROXIMITY13_PARAMETER_ADCCONFIG_2 0x0A
134#define PROXIMITY13_PARAMETER_ADCSENS_2 0x0B
135#define PROXIMITY13_PARAMETER_ADCPOST_2 0x0C
136#define PROXIMITY13_PARAMETER_MEASCONFIG_2 0x0D
137#define PROXIMITY13_PARAMETER_ADCCONFIG_3 0x0E
138#define PROXIMITY13_PARAMETER_ADCSENS_3 0x0F
139#define PROXIMITY13_PARAMETER_ADCPOST_3 0x10
140#define PROXIMITY13_PARAMETER_MEASCONFIG_3 0x11
141#define PROXIMITY13_PARAMETER_ADCCONFIG_4 0x12
142#define PROXIMITY13_PARAMETER_ADCSENS_4 0x13
143#define PROXIMITY13_PARAMETER_ADCPOST_4 0x14
144#define PROXIMITY13_PARAMETER_MEASCONFIG_4 0x15
145#define PROXIMITY13_PARAMETER_ADCCONFIG_5 0x16
146#define PROXIMITY13_PARAMETER_ADCSENS_5 0x17
147#define PROXIMITY13_PARAMETER_ADCPOST_5 0x18
148#define PROXIMITY13_PARAMETER_MEASCONFIG_5 0x19
149#define PROXIMITY13_PARAMETER_MEASRATE_H 0x1A
150#define PROXIMITY13_PARAMETER_MEASRATE_L 0x1B
151#define PROXIMITY13_PARAMETER_MEASCOUNT_0 0x1C
152#define PROXIMITY13_PARAMETER_MEASCOUNT_1 0x1D
153#define PROXIMITY13_PARAMETER_MEASCOUNT_2 0x1E
154#define PROXIMITY13_PARAMETER_LED1_A 0x1F
155#define PROXIMITY13_PARAMETER_LED1_B 0x20
156#define PROXIMITY13_PARAMETER_LED2_A 0x21
157#define PROXIMITY13_PARAMETER_LED2_B 0x22
158#define PROXIMITY13_PARAMETER_LED3_A 0x23
159#define PROXIMITY13_PARAMETER_LED3_B 0x24
160#define PROXIMITY13_PARAMETER_THRESHOLD0_H 0x25
161#define PROXIMITY13_PARAMETER_THRESHOLD0_L 0x26
162#define PROXIMITY13_PARAMETER_THRESHOLD1_H 0x27
163#define PROXIMITY13_PARAMETER_THRESHOLD1_L 0x28
164#define PROXIMITY13_PARAMETER_THRESHOLD2_H 0x29
165#define PROXIMITY13_PARAMETER_THRESHOLD2_L 0x2A
166#define PROXIMITY13_PARAMETER_BURST 0x2B
173#define PROXIMITY13_CMD_RESET_CTR 0x00
174#define PROXIMITY13_CMD_RESET_SW 0x01
175#define PROXIMITY13_CMD_FORCE 0x11
176#define PROXIMITY13_CMD_PAUSE 0x12
177#define PROXIMITY13_CMD_START 0x13
184#define PROXIMITY13_DEV_ID_VAL 0x53
185#define PROXIMITY13_HW_ID_VAL 0x01
186#define PROXIMITY13_REV_ID_VAL 0x11
193#define PROXIMITY13_ADC_CFG_RATE_48p8_US 0x00
194#define PROXIMITY13_ADC_CFG_RATE_97p6_US 0x20
195#define PROXIMITY13_ADC_CFG_RATE_195_US 0x40
196#define PROXIMITY13_ADC_CFG_RATE_24p4_US 0x60
197#define PROXIMITY13_ADC_CFG_MUX_SMALL_IR 0x00
198#define PROXIMITY13_ADC_CFG_MUX_MEDIUM_IR 0x01
199#define PROXIMITY13_ADC_CFG_MUX_LARGE_IR 0x02
200#define PROXIMITY13_ADC_CFG_MUX_WHITE 0x0B
201#define PROXIMITY13_ADC_CFG_MUX_LARGE_WHITE 0x0D
208#define PROXIMITY13_ADC_SENS_SW_GAIN_1 0x00
209#define PROXIMITY13_ADC_SENS_SW_GAIN_2 0x10
210#define PROXIMITY13_ADC_SENS_SW_GAIN_4 0x20
211#define PROXIMITY13_ADC_SENS_SW_GAIN_8 0x30
212#define PROXIMITY13_ADC_SENS_SW_GAIN_16 0x40
213#define PROXIMITY13_ADC_SENS_SW_GAIN_32 0x50
214#define PROXIMITY13_ADC_SENS_SW_GAIN_64 0x60
215#define PROXIMITY13_ADC_SENS_SW_GAIN_128 0x70
216#define PROXIMITY13_ADC_SENS_HW_GAIN_MIN_24p4_US 0x00
217#define PROXIMITY13_ADC_SENS_HW_GAIN_MAX_50_MS 0x0B
224#define PROXIMITY13_ADC_POST_RESOLUTION_16 0x00
225#define PROXIMITY13_ADC_POST_RESOLUTION_24 0x40
226#define PROXIMITY13_ADC_POST_INT_MORE_THEN_THRESH 0x00
227#define PROXIMITY13_ADC_POST_INT_LESS_THEN_THRESH 0x04
228#define PROXIMITY13_ADC_POST_INT_NO_TRESH 0x00
229#define PROXIMITY13_ADC_POST_INT_THRESHOLD_0_EN 0x01
230#define PROXIMITY13_ADC_POST_INT_THRESHOLD_1_EN 0x02
231#define PROXIMITY13_ADC_POST_INT_BETWEEN_TRESHOLD 0x03
238#define PROXIMITY13_MEAS_CFG_BURST_ONLY 0x00
239#define PROXIMITY13_MEAS_CFG_MEASCOUNT0 0x40
240#define PROXIMITY13_MEAS_CFG_MEASCOUNT1 0x80
241#define PROXIMITY13_MEAS_CFG_MEASCOUNT2 0xC0
242#define PROXIMITY13_MEAS_CFG_NOMINAL_LED 0x00
243#define PROXIMITY13_MEAS_CFG_LED_UNDEFINED 0x10
244#define PROXIMITY13_MEAS_CFG_LED_INC_9_PCT 0x20
245#define PROXIMITY13_MEAS_CFG_LED_INC_10_PCT 0x30
246#define PROXIMITY13_MEAS_CFG_LED_A 0x00
247#define PROXIMITY13_MEAS_CFG_LED_B 0x08
248#define PROXIMITY13_MEAS_CFG_LED_2 0x04
249#define PROXIMITY13_MEAS_CFG_LED_3 0x02
250#define PROXIMITY13_MEAS_CFG_LED_1 0x01
257#define PROXIMITY13_PIN_HIGH 1
258#define PROXIMITY13_PIN_LOW 0
265#define PROXIMITY13_CHANNEL_0 0x01
266#define PROXIMITY13_CHANNEL_1 0x02
267#define PROXIMITY13_CHANNEL_2 0x04
268#define PROXIMITY13_CHANNEL_3 0x08
269#define PROXIMITY13_CHANNEL_4 0x10
270#define PROXIMITY13_CHANNEL_5 0x20 // End group macro
274// --------------------------------------------------------------- PUBLIC TYPES
283typedef struct
284{
285 // Input pins
286
287 digital_in_t int_pin;
288
289 // Modules
290
291 i2c_master_t i2c;
292
293 // ctx variable
294
296
298
302typedef struct
303{
304 // Communication gpio pins
305
306 pin_name_t scl;
307 pin_name_t sda;
308
309 // Additional gpio pins
310
311 pin_name_t int_pin;
312
313 // static variable
314
315 uint32_t i2c_speed;
316 uint8_t i2c_address;
317
319
323typedef struct
324{
325 uint8_t adc_cfg;
326 uint8_t adc_sens;
327 uint8_t adc_post;
328 uint8_t measure_cfg;
330
334typedef struct
335{
336 uint32_t channel_0;
337 uint32_t channel_1;
338 uint32_t channel_2;
339 uint32_t channel_3;
340 uint32_t channel_4;
341 uint32_t channel_5;
343 // End types group
345
346// ----------------------------------------------- PUBLIC FUNCTION DECLARATIONS
347
353#ifdef __cplusplus
354extern "C"{
355#endif
356
366
376
385
395void proximity13_generic_write ( proximity13_t *ctx, uint8_t reg_adr, uint8_t write_data );
396
407uint8_t proximity13_generic_read ( proximity13_t *ctx, uint8_t reg_adr );
408
419
430uint8_t proximity13_send_command ( proximity13_t *ctx, uint8_t cmd_val );
431
443uint8_t proximity13_set_parameter ( proximity13_t *ctx, uint8_t param, uint8_t cmd_val );
444
456uint8_t porximity13_config_channel ( proximity13_t *ctx, uint8_t chn_num, proximity13_config_t cfg_val );
457
468
478
479#ifdef __cplusplus
480}
481#endif
482#endif // _PROXIMITY13_H_
483 // End public_function group
486
487// ------------------------------------------------------------------------- END
#define PROXIMITY13_RETVAL
Definition: proximity13.h:62
uint8_t proximity13_generic_read(proximity13_t *ctx, uint8_t reg_adr)
Generic read function.
uint8_t porximity13_check_id(proximity13_t *ctx)
Checks id of the device.
void proximity13_generic_write(proximity13_t *ctx, uint8_t reg_adr, uint8_t write_data)
Generic write function.
uint8_t porximity13_config_channel(proximity13_t *ctx, uint8_t chn_num, proximity13_config_t cfg_val)
Configuration of channel.
PROXIMITY13_RETVAL proximity13_init(proximity13_t *ctx, proximity13_cfg_t *cfg)
Initialization function.
void proximity13_read_channels(proximity13_t *ctx, proximity13_chn_val_t *chn_val)
Reads all enabled channels.
uint8_t proximity13_get_int_pin_status(proximity13_t *ctx)
Checks status of int pin.
void proximity13_cfg_setup(proximity13_cfg_t *cfg)
Config Object Initialization function.
void proximity13_default_cfg(proximity13_t *ctx)
Click Default Configuration function.
uint8_t proximity13_set_parameter(proximity13_t *ctx, uint8_t param, uint8_t cmd_val)
Sets parameter.
uint8_t proximity13_send_command(proximity13_t *ctx, uint8_t cmd_val)
Sends command to command register.
Click configuration structure definition.
Definition: proximity13.h:303
uint32_t i2c_speed
Definition: proximity13.h:315
pin_name_t scl
Definition: proximity13.h:306
pin_name_t int_pin
Definition: proximity13.h:311
pin_name_t sda
Definition: proximity13.h:307
uint8_t i2c_address
Definition: proximity13.h:316
Structure for reading values of channels.
Definition: proximity13.h:335
uint32_t channel_2
Definition: proximity13.h:338
uint32_t channel_3
Definition: proximity13.h:339
uint32_t channel_0
Definition: proximity13.h:336
uint32_t channel_1
Definition: proximity13.h:337
uint32_t channel_5
Definition: proximity13.h:341
uint32_t channel_4
Definition: proximity13.h:340
Structure for configurating device.
Definition: proximity13.h:324
uint8_t adc_post
Definition: proximity13.h:327
uint8_t adc_cfg
Definition: proximity13.h:325
uint8_t measure_cfg
Definition: proximity13.h:328
uint8_t adc_sens
Definition: proximity13.h:326
Click ctx object definition.
Definition: proximity13.h:284
digital_in_t int_pin
Definition: proximity13.h:287
i2c_master_t i2c
Definition: proximity13.h:291
uint8_t slave_address
Definition: proximity13.h:295