ambient2 2.0.0.0
ambient2.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 */
32// ----------------------------------------------------------------------------
33
34#ifndef _AMBIENT2_H_
35#define _AMBIENT2_H_
36
41#ifdef PREINIT_SUPPORTED
42#include "preinit.h"
43#endif
44
45#ifdef MikroCCoreVersion
46 #if MikroCCoreVersion >= 1
47 #include "delays.h"
48 #endif
49#endif
50
51#include "drv_digital_in.h"
52#include "drv_i2c_master.h"
53
54// -------------------------------------------------------------- PUBLIC MACROS
64#define AMBIENT2_CFG_RANGE_40_95_LX_MIN 0x0
65#define AMBIENT2_CFG_RANGE_81_9_LX 0x1000
66#define AMBIENT2_CFG_RANGE_163_8_LX 0x2000
67#define AMBIENT2_CFG_RANGE_327_6_LX 0x3000
68#define AMBIENT2_CFG_RANGE_655_2_LX 0x4000
69#define AMBIENT2_CFG_RANGE_1310_4_LX 0x5000
70#define AMBIENT2_CFG_RANGE_2620_8_LX 0x6000
71#define AMBIENT2_CFG_RANGE_5241_6_LX 0x7000
72#define AMBIENT2_CFG_RANGE_10483_2_LX 0x8000
73#define AMBIENT2_CFG_RANGE_20966_4_LX 0x9000
74#define AMBIENT2_CFG_RANGE_41932_8_LX 0xA000
75#define AMBIENT2_CFG_RANGE_83865_6_LX_MAX 0xB000
76#define AMBIENT2_CFG_RANGE_AUTO_SCALE 0xC000
83#define AMBIENT2_CFG_CONV_TIME_100MS 0x0
84#define AMBIENT2_CFG_CONV_TIME_800MS 0x800
91#define AMBIENT2_CFG_CONV_MODE_SHUTDOWN 0x0
92#define AMBIENT2_CFG_CONV_MODE_SINGLE_SHOT 0x200
93#define AMBIENT2_CFG_CONV_MODE_CONT_CONV 0x400
100#define AMBIENT2_CFG_LATCH_COMP_HYSTERESIS_STYLE 0x0
101#define AMBIENT2_CFG_LATCH_COMP_WINDOW_STYLE 0x10
108#define AMBIENT2_CFG_POL_INT_ACTIVE_LOW 0x0
109#define AMBIENT2_CFG_POL_INT_ACTIVE_HIGH 0x8
116#define AMBIENT2_CFG_MASK_EXPONENT 0x4
123#define AMBIENT2_CFG_FAULT_1_COUNT 0x0
124#define AMBIENT2_CFG_FAULT_2_COUNTS 0x1
125#define AMBIENT2_CFG_FAULT_4_COUNTS 0x2
126#define AMBIENT2_CFG_FAULT_8_COUNTS 0x3
133#define AMBIENT2_FLAG_MASK_OVERFLOW 0x100
134#define AMBIENT2_FLAG_MASK_CONV_READY 0x80
135#define AMBIENT2_FLAG_MASK_HIGH 0x40
136#define AMBIENT2_FLAG_MASK_LOW 0x20
143#define AMBIENT2_ID_MANUFACTURER 0x5449
144#define AMBIENT2_ID_DEVICE 0x3001
151#define AMBIENT2_MAP_MIKROBUS( cfg, mikrobus ) \
152 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
153 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
154 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
157 // End macros group
158// --------------------------------------------------------------- PUBLIC TYPES
167typedef uint16_t ambient2_data_t;
168
179
191
205
209typedef struct
210{
214
216
220typedef struct
221{
222 // Event pin.
223 digital_in_t int_pin;
224
225 // Module.
226 i2c_master_t i2c;
227
228 // Device slave address.
229 uint8_t slave_addr;
230
231 // Ambient light sensor data.
233
234} ambient2_t;
235
239typedef struct
240{
241 // Communication gpio pins.
242 pin_name_t scl;
243 pin_name_t sda;
244
245 // Additional gpio pin.
246 pin_name_t int_pin;
247
248 // Module configuration variables.
249 uint32_t i2c_speed;
250 uint8_t i2c_addr;
251
253
254 // End types group
255// ----------------------------------------------- PUBLIC FUNCTION DECLARATIONS
261#ifdef __cplusplus
262extern "C"{
263#endif
264
274
286
295
307
320
331
342
343#ifdef __cplusplus
344}
345#endif
346#endif // _AMBIENT2_H_
347
348 // End public_function group
350
351// ------------------------------------------------------------------------ END
ambient2_err_t ambient2_init(ambient2_t *ctx, ambient2_cfg_t *cfg)
Click Initialization function.
void ambient2_cfg_setup(ambient2_cfg_t *cfg)
Configuration Object Setup function.
void ambient2_default_cfg(ambient2_t *ctx)
Click Default Configuration function.
void ambient2_generic_write(ambient2_t *ctx, ambient2_reg_addr_t reg_addr, ambient2_data_t data_in)
Generic Write function.
uint8_t ambient2_get_int(ambient2_t *ctx)
INT Pin Check function.
void ambient2_get_sens_results(ambient2_t *ctx)
Sensor Results Read function.
ambient2_data_t ambient2_generic_read(ambient2_t *ctx, ambient2_reg_addr_t reg_addr)
Generic Read function.
uint16_t ambient2_data_t
Click registers data type.
Definition ambient2.h:167
ambient2_reg_addr_t
Click register address selection.
Definition ambient2.h:196
ambient2_err_t
Click error code definition.
Definition ambient2.h:173
ambient_addr_t
Click I2C address selection.
Definition ambient2.h:184
@ AMBIENT2_REG_LOW_LIMIT
Definition ambient2.h:199
@ AMBIENT2_REG_MANUFACTURER_ID
Definition ambient2.h:201
@ AMBIENT2_REG_HIGH_LIMIT
Definition ambient2.h:200
@ AMBIENT2_REG_RESULT
Definition ambient2.h:197
@ AMBIENT2_REG_DEVICE_ID
Definition ambient2.h:202
@ AMBIENT2_REG_CONFIGURATION
Definition ambient2.h:198
@ AMBIENT2_OK
Definition ambient2.h:174
@ AMBIENT2_ERR_INIT_DRV
Definition ambient2.h:175
@ AMBIENT2_ERR_UNSUPPORTED_PIN
Definition ambient2.h:176
@ AMBIENT2_I2C_ADDRESS_VDD
Definition ambient2.h:186
@ AMBIENT2_I2C_ADDRESS_SCL
Definition ambient2.h:188
@ AMBIENT2_I2C_ADDRESS_GND
Definition ambient2.h:185
@ AMBIENT2_I2C_ADDRESS_SDA
Definition ambient2.h:187
Click configuration structure definition.
Definition ambient2.h:240
uint8_t i2c_addr
Definition ambient2.h:250
uint32_t i2c_speed
Definition ambient2.h:249
pin_name_t scl
Definition ambient2.h:242
pin_name_t int_pin
Definition ambient2.h:246
pin_name_t sda
Definition ambient2.h:243
Click sensor data definition.
Definition ambient2.h:210
float amb_light_lx
Definition ambient2.h:211
uint8_t amb_light_per
Definition ambient2.h:213
float amb_light_range
Definition ambient2.h:212
Click context object definition.
Definition ambient2.h:221
digital_in_t int_pin
Definition ambient2.h:223
i2c_master_t i2c
Definition ambient2.h:226
uint8_t slave_addr
Definition ambient2.h:229
ambient2_sens_data_t sens_data
Definition ambient2.h:232