ambient2  2.0.0.0
ambient2.h
Go to the documentation of this file.
1 /*
2  * MikroSDK - MikroE Software Development Kit
3  * Copyright (c) 2019, MikroElektronika - www.mikroe.com
4  * All rights reserved.
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to deal
8  * in the Software without restriction, including without limitation the rights
9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  * copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in
14  * all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  * SOFTWARE.
23  */
24 
33 // ----------------------------------------------------------------------------
34 
35 #ifndef _AMBIENT2_H_
36 #define _AMBIENT2_H_
37 
38 #include "drv_digital_in.h"
39 #include "drv_i2c_master.h"
40 
41 
42 // -------------------------------------------------------------- PUBLIC MACROS
52 #define AMBIENT2_CFG_RANGE_40_95_LX_MIN 0x0
53 #define AMBIENT2_CFG_RANGE_81_9_LX 0x1000
54 #define AMBIENT2_CFG_RANGE_163_8_LX 0x2000
55 #define AMBIENT2_CFG_RANGE_327_6_LX 0x3000
56 #define AMBIENT2_CFG_RANGE_655_2_LX 0x4000
57 #define AMBIENT2_CFG_RANGE_1310_4_LX 0x5000
58 #define AMBIENT2_CFG_RANGE_2620_8_LX 0x6000
59 #define AMBIENT2_CFG_RANGE_5241_6_LX 0x7000
60 #define AMBIENT2_CFG_RANGE_10483_2_LX 0x8000
61 #define AMBIENT2_CFG_RANGE_20966_4_LX 0x9000
62 #define AMBIENT2_CFG_RANGE_41932_8_LX 0xA000
63 #define AMBIENT2_CFG_RANGE_83865_6_LX_MAX 0xB000
64 #define AMBIENT2_CFG_RANGE_AUTO_SCALE 0xC000
65 
71 #define AMBIENT2_CFG_CONV_TIME_100MS 0x0
72 #define AMBIENT2_CFG_CONV_TIME_800MS 0x800
73 
79 #define AMBIENT2_CFG_CONV_MODE_SHUTDOWN 0x0
80 #define AMBIENT2_CFG_CONV_MODE_SINGLE_SHOT 0x200
81 #define AMBIENT2_CFG_CONV_MODE_CONT_CONV 0x400
82 
88 #define AMBIENT2_CFG_LATCH_COMP_HYSTERESIS_STYLE 0x0
89 #define AMBIENT2_CFG_LATCH_COMP_WINDOW_STYLE 0x10
90 
96 #define AMBIENT2_CFG_POL_INT_ACTIVE_LOW 0x0
97 #define AMBIENT2_CFG_POL_INT_ACTIVE_HIGH 0x8
98 
104 #define AMBIENT2_CFG_MASK_EXPONENT 0x4
105 
111 #define AMBIENT2_CFG_FAULT_1_COUNT 0x0
112 #define AMBIENT2_CFG_FAULT_2_COUNTS 0x1
113 #define AMBIENT2_CFG_FAULT_4_COUNTS 0x2
114 #define AMBIENT2_CFG_FAULT_8_COUNTS 0x3
115 
121 #define AMBIENT2_FLAG_MASK_OVERFLOW 0x100
122 #define AMBIENT2_FLAG_MASK_CONV_READY 0x80
123 #define AMBIENT2_FLAG_MASK_HIGH 0x40
124 #define AMBIENT2_FLAG_MASK_LOW 0x20
125 
131 #define AMBIENT2_ID_MANUFACTURER 0x5449
132 #define AMBIENT2_ID_DEVICE 0x3001
133 
139 #define AMBIENT2_MAP_MIKROBUS( cfg, mikrobus ) \
140  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
141  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
142  cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
143  // End macros group
146 // --------------------------------------------------------------- PUBLIC TYPES
155 typedef uint16_t ambient2_data_t;
156 
160 typedef enum
161 {
162  AMBIENT2_OK = 0x0,
165 
167 
171 typedef enum
172 {
177 
179 
183 typedef enum
184 {
191 
193 
197 typedef struct
198 {
201  uint8_t amb_light_per;
202 
204 
208 typedef struct
209 {
210  // Event pin.
211  digital_in_t int_pin;
212 
213  // Module.
214  i2c_master_t i2c;
215 
216  // Device slave address.
218 
219  // Ambient light sensor data.
221 
222 } ambient2_t;
223 
227 typedef struct
228 {
229  // Communication gpio pins.
230  pin_name_t scl;
231  pin_name_t sda;
232 
233  // Additional gpio pin.
234  pin_name_t int_pin;
235 
236  // Module configuration variables.
237  hal_i2c_speed_t i2c_speed;
239 
241  // End types group
243 // ----------------------------------------------- PUBLIC FUNCTION DECLARATIONS
249 #ifdef __cplusplus
250 extern "C"{
251 #endif
252 
262 
274 
282 void ambient2_default_cfg( ambient2_t *ctx );
283 
295 
308 
319 
329 digital_in_data_t ambient2_get_int( ambient2_t *ctx );
330 
331 #ifdef __cplusplus
332 }
333 #endif
334 #endif // _AMBIENT2_H_
335  // End public_function group
338 
339 // ------------------------------------------------------------------------ END
ambient2_generic_write
void ambient2_generic_write(ambient2_t *ctx, ambient2_reg_addr_t reg_addr, ambient2_data_t data_in)
Generic Write function.
AMBIENT2_I2C_ADDRESS_GND
Definition: ambient2.h:173
ambient2_sens_data_t::amb_light_range
float amb_light_range
Definition: ambient2.h:200
ambient2_t
Click context object definition.
Definition: ambient2.h:208
AMBIENT2_REG_LOW_LIMIT
Definition: ambient2.h:187
ambient2_get_sens_results
void ambient2_get_sens_results(ambient2_t *ctx)
Sensor Results Read function.
AMBIENT2_REG_HIGH_LIMIT
Definition: ambient2.h:188
ambient2_sens_data_t::amb_light_per
uint8_t amb_light_per
Definition: ambient2.h:201
ambient2_t::slave_addr
ambient2_i2c_addr_t slave_addr
Definition: ambient2.h:217
ambient2_init
ambient2_err_t ambient2_init(ambient2_t *ctx, ambient2_cfg_t *cfg)
Click Initialization function.
ambient2_reg_addr_t
ambient2_reg_addr_t
Click register address selection.
Definition: ambient2.h:183
ambient2_cfg_t
Click configuration structure definition.
Definition: ambient2.h:227
ambient2_i2c_addr_t
ambient2_i2c_addr_t
Click I2C address selection.
Definition: ambient2.h:171
ambient2_cfg_setup
void ambient2_cfg_setup(ambient2_cfg_t *cfg)
Configuration Object Setup function.
ambient2_default_cfg
void ambient2_default_cfg(ambient2_t *ctx)
Click Default Configuration function.
ambient2_cfg_t::int_pin
pin_name_t int_pin
Definition: ambient2.h:234
AMBIENT2_ERR_UNSUPPORTED_PIN
Definition: ambient2.h:164
ambient2_cfg_t::i2c_speed
hal_i2c_speed_t i2c_speed
Definition: ambient2.h:237
ambient2_t::int_pin
digital_in_t int_pin
Definition: ambient2.h:211
AMBIENT2_REG_DEVICE_ID
Definition: ambient2.h:190
ambient2_cfg_t::i2c_addr
ambient2_i2c_addr_t i2c_addr
Definition: ambient2.h:238
ambient2_t::i2c
i2c_master_t i2c
Definition: ambient2.h:214
AMBIENT2_I2C_ADDRESS_SDA
Definition: ambient2.h:175
AMBIENT2_I2C_ADDRESS_SCL
Definition: ambient2.h:176
ambient2_cfg_t::sda
pin_name_t sda
Definition: ambient2.h:231
AMBIENT2_OK
Definition: ambient2.h:162
AMBIENT2_REG_MANUFACTURER_ID
Definition: ambient2.h:189
ambient2_err_t
ambient2_err_t
Click error code definition.
Definition: ambient2.h:160
AMBIENT2_ERR_INIT_DRV
Definition: ambient2.h:163
AMBIENT2_REG_CONFIGURATION
Definition: ambient2.h:186
ambient2_data_t
uint16_t ambient2_data_t
Click registers data type.
Definition: ambient2.h:155
ambient2_cfg_t::scl
pin_name_t scl
Definition: ambient2.h:230
ambient2_t::sens_data
ambient2_sens_data_t sens_data
Definition: ambient2.h:220
ambient2_generic_read
ambient2_data_t ambient2_generic_read(ambient2_t *ctx, ambient2_reg_addr_t reg_addr)
Generic Read function.
AMBIENT2_REG_RESULT
Definition: ambient2.h:185
ambient2_sens_data_t
Click sensor data definition.
Definition: ambient2.h:197
AMBIENT2_I2C_ADDRESS_VDD
Definition: ambient2.h:174
ambient2_sens_data_t::amb_light_lx
float amb_light_lx
Definition: ambient2.h:199
ambient2_get_int
digital_in_data_t ambient2_get_int(ambient2_t *ctx)
INT Pin Check function.