color9 2.0.0.0
color9.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 COLOR9_H
36#define COLOR9_H
37
38#include "drv_digital_out.h"
39#include "drv_digital_in.h"
40#include "drv_i2c_master.h"
41
42
43// -------------------------------------------------------------- PUBLIC MACROS
49#define COLOR9_SLAVE_ADDR 0x52
50#define COLOR9_MAIN_CTRL 0x00
51#define COLOR9_LS_MEAS_RATE 0x04
52#define COLOR9_LS_GAIN 0x05
53#define COLOR9_PART_ID 0x06
54#define COLOR9_MAIN_STATUS 0x07
55#define COLOR9_LS_DATA_IR_0 0x0A
56#define COLOR9_LS_DATA_IR_1 0x0B
57#define COLOR9_LS_DATA_IR_2 0x0C
58#define COLOR9_LS_DATA_GREEN_0 0x0D
59#define COLOR9_LS_DATA_GREEN_1 0x0E
60#define COLOR9_LS_DATA_GREEN_2 0x0F
61#define COLOR9_LS_DATA_BLUE_0 0x10
62#define COLOR9_LS_DATA_BLUE_1 0x11
63#define COLOR9_LS_DATA_BLUE_2 0x12
64#define COLOR9_LS_DATA_RED_0 0x13
65#define COLOR9_LS_DATA_RED_1 0x14
66#define COLOR9_LS_DATA_RED_2 0x15
67#define COLOR9_INT_CFG 0x19
68#define COLOR9_INT_PERSISTENCE 0x1A
69#define COLOR9_LS_THRES_UP_0 0x21
70#define COLOR9_LS_THRES_UP_1 0x22
71#define COLOR9_LS_THRES_UP_2 0x23
72#define COLOR9_LS_THRES_LOW_0 0x24
73#define COLOR9_LS_THRES_LOW_1 0x25
74#define COLOR9_LS_THRES_LOW_2 0x26
75#define COLOR9_LS_THRES_VAR 0x27
76
77
82#define COLOR9_MAIN_CTRL_SW_RESET 0x10
83#define COLOR9_MAIN_CTRL_CS_MODE 0x04
84#define COLOR9_MAIN_CTRL_LS_EN 0x02 // End group main_ctrl
86
87
92#define COLOR9_LS_MEAS_BITWIDTH_20 0x00
93#define COLOR9_LS_MEAS_BITWIDTH_19 0x01
94#define COLOR9_LS_MEAS_BITWIDTH_18 0x02
95#define COLOR9_LS_MEAS_BITWIDTH_17 0x03
96#define COLOR9_LS_MEAS_BITWIDTH_16 0x04
97#define COLOR9_LS_MEAS_BITWIDTH_13 0x05
98
99#define COLOR9_LS_MEAS_RATE_25ms 0x00
100#define COLOR9_LS_MEAS_RATE_50ms 0x01
101#define COLOR9_LS_MEAS_RATE_100ms 0x02
102#define COLOR9_LS_MEAS_RATE_200ms 0x03
103#define COLOR9_LS_MEAS_RATE_500ms 0x04
104#define COLOR9_LS_MEAS_RATE_1000ms 0x05
105#define COLOR9_LS_MEAS_RATE_2000ms 0x06 // End group ls_meas_rate
107
112#define COLOR9_LS_GAIN_1 0x00
113#define COLOR9_LS_GAIN_3 0x01
114#define COLOR9_LS_GAIN_6 0x02
115#define COLOR9_LS_GAIN_9 0x03
116#define COLOR9_LS_GAIN_18 0x04 // End group ls_gain
118
123#define COLOR9_INT_CFG_IR_CH 0x00
124#define COLOR9_INT_CFG_ALS_GREEN_CH 0x01
125#define COLOR9_INT_CFG_RED_CH 0x02
126#define COLOR9_INT_CFG_BLUE_CH 0x03
127#define COLOR9_INT_CFG_LS_THRESHOLD_INT_MODE 0x00
128#define COLOR9_INT_CFG_LS_VARIATION_INT_MODE 0x01
129#define COLOR9_INT_CFG_LS_INT_ENABLE 0x01
130#define COLOR9_INT_CFG_LS_INT_DISABLE 0x00 // End group int_cfg
132
137#define COLOR9_INT_PERSISTENCE_ANYVAL_TRIGGER 0x00
138#define COLOR9_INT_PERSISTENCE_SECOND_COUNT_TRIGGER 0x01
139#define COLOR9_INT_PERSISTENCE_SIXTEEN_COUNT_TRIGGER 0x0F // End group int_persistence
141
146#define COLOR9_LS_THRES_VAR_COUNT_8 0x00
147#define COLOR9_LS_THRES_VAR_COUNT_16 0x01
148#define COLOR9_LS_THRES_VAR_COUNT_32 0x02
149#define COLOR9_LS_THRES_VAR_COUNT_64 0x03
150#define COLOR9_LS_THRES_VAR_COUNT_1024 0x07 // End group ls_thres_var
152
157#define COLOR9_MAP_MIKROBUS( cfg, mikrobus ) \
158 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
159 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
160 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
167#define COLOR9_RETVAL uint8_t
168
169#define COLOR9_OK 0x00
170#define COLOR9_INIT_ERROR 0xFF // End group macro
174// --------------------------------------------------------------- PUBLIC TYPES
183typedef struct
184{
185 digital_in_t int_pin;
186
187 // Modules
188
189 i2c_master_t i2c;
190
191 // ctx variable
192
194
195} color9_t;
196
200typedef struct
201{
202 // Communication gpio pins
203
204 pin_name_t scl;
205 pin_name_t sda;
206
207 // Additional gpio pins
208
209 pin_name_t int_pin;
210
211 // static variable
212
213 uint32_t i2c_speed;
214 uint8_t i2c_address;
215
217 // End types group
219// ----------------------------------------------- PUBLIC FUNCTION DECLARATIONS
220
226#ifdef __cplusplus
227extern "C"{
228#endif
229
239
249
250
251
261void color9_write ( color9_t* ctx, uint8_t reg_addr, uint8_t r_data );
262
271uint8_t color9_read ( color9_t* ctx, uint8_t reg_addr );
272
280
290uint32_t color9_get_Ir ( color9_t* ctx );
291
301uint32_t color9_get_green ( color9_t* ctx );
302
312uint32_t color9_get_blue ( color9_t* ctx );
313
323uint32_t color9_get_red ( color9_t* ctx );
324
335
345void color9_meas_rate ( color9_t* ctx, uint8_t resolution, uint8_t meas_rate );
346
355void color9_reg_ctrl ( color9_t* ctx, uint8_t cfg );
356
365void color9_set_gain ( color9_t* ctx, uint8_t g_setting );
366
377void color9_int_config ( color9_t* ctx, uint8_t int_select, uint8_t int_mode,
378 uint8_t cfg_setting );
379
388void color9_sample_compare ( color9_t* ctx, uint8_t num_of_compares );
389
398uint32_t color9_read_32 ( color9_t* ctx, uint8_t reg_addr );
399
409void color9_write_32 ( color9_t* ctx, uint8_t reg_addr, uint32_t treas_val );
410
419void color9_similarity_count ( color9_t* ctx, uint8_t sim_set );
420
429void color9_upper_tresset ( color9_t* ctx, uint32_t set_val );
430
439void color9_lower_tresset ( color9_t* ctx, uint32_t set_val );
440
441#ifdef __cplusplus
442}
443#endif
444#endif // _COLOR9_H_
445 // End public_function group
448
449// ------------------------------------------------------------------------- END
#define COLOR9_RETVAL
Definition: color9.h:167
void color9_cfg_setup(color9_cfg_t *cfg)
Config Object Initialization function.
void color9_reg_ctrl(color9_t *ctx, uint8_t cfg)
Function for setting the main configuration register.
uint32_t color9_get_red(color9_t *ctx)
Gets value of Red measurement reading.
uint32_t color9_read_32(color9_t *ctx, uint8_t reg_addr)
Generic read function for 32 bits.
void color9_similarity_count(color9_t *ctx, uint8_t sim_set)
Similarity count.
COLOR9_RETVAL color9_init(color9_t *ctx, color9_cfg_t *cfg)
Initialization function.
void color9_sample_compare(color9_t *ctx, uint8_t num_of_compares)
Configre number of compares between samples.
uint8_t color9_read(color9_t *ctx, uint8_t reg_addr)
Generic read function.
void color9_lower_tresset(color9_t *ctx, uint32_t set_val)
Lower Tresset.
uint32_t color9_get_green(color9_t *ctx)
Gets value of Green measurement reading.
void color9_write_32(color9_t *ctx, uint8_t reg_addr, uint32_t treas_val)
Generic write function for 32 bits.
void color9_sw_reset(color9_t *ctx)
Software reset function.
void color9_upper_tresset(color9_t *ctx, uint32_t set_val)
Upper Tresset.
void color9_write(color9_t *ctx, uint8_t reg_addr, uint8_t r_data)
Generic write function.
uint32_t color9_get_blue(color9_t *ctx)
Gets value of Blue measurement reading.
void color9_set_gain(color9_t *ctx, uint8_t g_setting)
Function for gain setting.
void color9_meas_rate(color9_t *ctx, uint8_t resolution, uint8_t meas_rate)
Configure measurement rates.
uint8_t color9_get_status_reg(color9_t *ctx)
Status register value.
uint32_t color9_get_Ir(color9_t *ctx)
Get value of IR measurement reading.
void color9_int_config(color9_t *ctx, uint8_t int_select, uint8_t int_mode, uint8_t cfg_setting)
Interrupt configuration.
Click configuration structure definition.
Definition: color9.h:201
uint32_t i2c_speed
Definition: color9.h:213
pin_name_t scl
Definition: color9.h:204
pin_name_t int_pin
Definition: color9.h:209
pin_name_t sda
Definition: color9.h:205
uint8_t i2c_address
Definition: color9.h:214
Click ctx object definition.
Definition: color9.h:184
digital_in_t int_pin
Definition: color9.h:185
i2c_master_t i2c
Definition: color9.h:189
uint8_t slave_address
Definition: color9.h:193