-
Notifications
You must be signed in to change notification settings - Fork 9
/
ads1115.h
55 lines (47 loc) · 1.22 KB
/
ads1115.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#pragma once
#include <common_lib/i2c.h>
#define ADS1115_ADDRESS 0x48
#define ADS1115_CONVERSION_REG 0x00
#define ADS1115_CONFIG_REG 0x01
typedef union {
struct __attribute__((packed)) {
uint8_t comp_que : 2;
uint8_t comp_lat : 1;
uint8_t comp_pol : 1;
uint8_t comp_mode : 1;
uint8_t dr : 3;
uint8_t mode : 1;
uint8_t pga : 3;
uint8_t mux : 3;
uint8_t os : 1;
} reg;
uint16_t raw;
} ads1115_config;
/**
* Initialize device
* @param i2c
* @param dev
* @return
*/
error_t ads1115_init(uint32_t i2c, i2c_device *dev);
/**
* Read value of config register
* @param dev : i2c device
* @param reg : allocated structure for holding register values
* @return
*/
error_t ads1115_read_config(const i2c_device *dev, ads1115_config *reg);
/**
* Update device config using provided structure
* @param dev : i2c device
* @param reg : structure with updated values to write
* @return
*/
error_t ads1115_write_config(const i2c_device *dev, const ads1115_config *reg);
/**
* Perform single-shot read from device and convert reading to mV
* @param dev : i2c device
* @param voltage : variable to hold result (in mV)
* @return
*/
error_t ads1115_read_single_shot(const i2c_device *dev, float *voltage);