adc17 2.0.0.0
adc17.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 ADC17_H
29#define ADC17_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 ADC17_REG_SETUP 0x80
74#define ADC17_SETUP_VREF_VDD_REF_NC_OFF 0x00
75#define ADC17_SETUP_VREF_EXT_REF_IN_OFF 0x20
76#define ADC17_SETUP_VREF_INT_REF_NC_OFF 0x40
77#define ADC17_SETUP_VREF_INT_REF_NC_ON 0x50
78#define ADC17_SETUP_VREF_INT_REF_OUT_OFF 0x60
79#define ADC17_SETUP_VREF_INT_REF_OUT_ON 0x70
80#define ADC17_SETUP_CLK_INT 0x00
81#define ADC17_SETUP_CLK_EXT 0x08
82#define ADC17_SETUP_UNIPOLAR 0x00
83#define ADC17_SETUP_BIPOLAR 0x04
84#define ADC17_SETUP_RST_RESET 0x00
85#define ADC17_SETUP_RST_NO_ACTION 0x02
86
91#define ADC17_REG_CONFIG 0x00
92#define ADC17_CONFIG_SCAN_AIN0_TO_CS0 0x00
93#define ADC17_CONFIG_SCAN_CS0_8_TIMES 0x20
94#define ADC17_CONFIG_SCAN_CS0 0x60
95#define ADC17_CONFIG_CS0_AIN0 0x00
96#define ADC17_CONFIG_CS0_AIN1 0x02
97#define ADC17_CONFIG_DIFFERENTIAL 0x00
98#define ADC17_CONFIG_SINGLE_ENDED 0x01
99
104#define ADC17_REG_BIT_MASK 0x80
105#define ADC17_SETUP_VREF_BIT_MASK 0x70
106#define ADC17_SETUP_CLK_BIT_MASK 0x08
107#define ADC17_SETUP_UNI_BIP_BIT_MASK 0x04
108#define ADC17_SETUP_RST_BIT_MASK 0x02
109#define ADC17_CONFIG_SCAN_BIT_MASK 0x60
110#define ADC17_CONFIG_CS0_BIT_MASK 0x02
111#define ADC17_CONFIG_SGL_DIF_BIT_MASK 0x01
112
117#define ADC17_CHANNEL_0 0
118#define ADC17_CHANNEL_1 1
119
124#define ADC17_RESOLUTION 0x0FFF
125#define ADC17_VREF 2.048
126
132#define ADC17_SET_DEV_ADDR 0x36
133
134 // adc17_set
135
150#define ADC17_MAP_MIKROBUS( cfg, mikrobus ) \
151 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
152 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA );
153
154 // adc17_map
155 // adc17
156
161typedef struct
162{
163 // Modules
164 i2c_master_t i2c;
166 // I2C slave address
169 uint8_t setup_byte;
170 uint8_t config_byte;
172} adc17_t;
173
178typedef struct
179{
180 pin_name_t scl;
181 pin_name_t sda;
183 uint32_t i2c_speed;
184 uint8_t i2c_address;
187
192typedef enum
193{
195 ADC17_ERROR = -1
196
198
215
230err_t adc17_init ( adc17_t *ctx, adc17_cfg_t *cfg );
231
246
259err_t adc17_write_setup_byte ( adc17_t *ctx, uint8_t setup_byte );
260
273err_t adc17_write_config_byte ( adc17_t *ctx, uint8_t config_byte );
274
287err_t adc17_set_channel ( adc17_t *ctx, uint8_t channel );
288
302err_t adc17_get_voltage ( adc17_t *ctx, float *voltage );
303
304#ifdef __cplusplus
305}
306#endif
307#endif // ADC17_H
308
309 // adc17
310
311// ------------------------------------------------------------------------ END
adc17_return_value_t
ADC 17 Click return value data.
Definition adc17.h:193
@ ADC17_OK
Definition adc17.h:194
@ ADC17_ERROR
Definition adc17.h:195
err_t adc17_init(adc17_t *ctx, adc17_cfg_t *cfg)
ADC 17 initialization function.
err_t adc17_set_channel(adc17_t *ctx, uint8_t channel)
ADC 17 set channel function.
err_t adc17_default_cfg(adc17_t *ctx)
ADC 17 default configuration function.
void adc17_cfg_setup(adc17_cfg_t *cfg)
ADC 17 configuration object setup function.
err_t adc17_write_setup_byte(adc17_t *ctx, uint8_t setup_byte)
ADC 17 write setup byte function.
err_t adc17_get_voltage(adc17_t *ctx, float *voltage)
ADC 17 get voltage function.
err_t adc17_write_config_byte(adc17_t *ctx, uint8_t config_byte)
ADC 17 write config byte function.
ADC 17 Click configuration object.
Definition adc17.h:179
uint32_t i2c_speed
Definition adc17.h:183
pin_name_t scl
Definition adc17.h:180
pin_name_t sda
Definition adc17.h:181
uint8_t i2c_address
Definition adc17.h:184
ADC 17 Click context object.
Definition adc17.h:162
uint8_t config_byte
Definition adc17.h:170
i2c_master_t i2c
Definition adc17.h:164
uint8_t setup_byte
Definition adc17.h:169
uint8_t slave_address
Definition adc17.h:167