ADS1100 I2C 16bit ADC driver
ADS1100.h@0:5198300978ab, 2018-07-23 (annotated)
- Committer:
- mederic
- Date:
- Mon Jul 23 12:58:05 2018 +0000
- Revision:
- 0:5198300978ab
1st released
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mederic | 0:5198300978ab | 1 | #ifndef ADS1100_H |
mederic | 0:5198300978ab | 2 | #define ADS1100_H |
mederic | 0:5198300978ab | 3 | |
mederic | 0:5198300978ab | 4 | #include "mbed.h" |
mederic | 0:5198300978ab | 5 | |
mederic | 0:5198300978ab | 6 | class ADS1100{ |
mederic | 0:5198300978ab | 7 | |
mederic | 0:5198300978ab | 8 | public: |
mederic | 0:5198300978ab | 9 | enum state{ |
mederic | 0:5198300978ab | 10 | I2C_ADDR = 0x90, //I2C adress |
mederic | 0:5198300978ab | 11 | }; |
mederic | 0:5198300978ab | 12 | |
mederic | 0:5198300978ab | 13 | |
mederic | 0:5198300978ab | 14 | /** Create ADC1100 instance |
mederic | 0:5198300978ab | 15 | * @param *i2c initialized I2C bus to use |
mederic | 0:5198300978ab | 16 | * @param ad <0,7> marking code number for addr |
mederic | 0:5198300978ab | 17 | */ |
mederic | 0:5198300978ab | 18 | ADS1100(I2C* i2c, char ad); |
mederic | 0:5198300978ab | 19 | |
mederic | 0:5198300978ab | 20 | /** Read outputCode |
mederic | 0:5198300978ab | 21 | * @return signed 16bit output code |
mederic | 0:5198300978ab | 22 | */ |
mederic | 0:5198300978ab | 23 | short read_s16(void); |
mederic | 0:5198300978ab | 24 | |
mederic | 0:5198300978ab | 25 | /** Read output |
mederic | 0:5198300978ab | 26 | * @param vdd proportional factor defualt=1.0 |
mederic | 0:5198300978ab | 27 | * @return vdd*code/codemax*gain |
mederic | 0:5198300978ab | 28 | */ |
mederic | 0:5198300978ab | 29 | float read(float vdd=1.0); |
mederic | 0:5198300978ab | 30 | |
mederic | 0:5198300978ab | 31 | /** Configure ADS1100 |
mederic | 0:5198300978ab | 32 | * @param single true for single converion mode false for continuous |
mederic | 0:5198300978ab | 33 | * @param rate can be 8,16,32,128 sample per sencods |
mederic | 0:5198300978ab | 34 | * @param gain can be 1,2,4,8 |
mederic | 0:5198300978ab | 35 | */ |
mederic | 0:5198300978ab | 36 | void config(bool single, char rate, char gain); |
mederic | 0:5198300978ab | 37 | |
mederic | 0:5198300978ab | 38 | /** Read registers |
mederic | 0:5198300978ab | 39 | * @param output cofig reg |
mederic | 0:5198300978ab | 40 | * @return s16 code |
mederic | 0:5198300978ab | 41 | */ |
mederic | 0:5198300978ab | 42 | short readReg(char* config); |
mederic | 0:5198300978ab | 43 | |
mederic | 0:5198300978ab | 44 | /** Initiate a conversion (single mode) |
mederic | 0:5198300978ab | 45 | */ |
mederic | 0:5198300978ab | 46 | void startConvert(void); |
mederic | 0:5198300978ab | 47 | |
mederic | 0:5198300978ab | 48 | /** Check if converstion finished (continuous mode) |
mederic | 0:5198300978ab | 49 | * @return bool true if busy |
mederic | 0:5198300978ab | 50 | */ |
mederic | 0:5198300978ab | 51 | bool busy(void); |
mederic | 0:5198300978ab | 52 | |
mederic | 0:5198300978ab | 53 | private: |
mederic | 0:5198300978ab | 54 | I2C* _i2c; |
mederic | 0:5198300978ab | 55 | char _addr; |
mederic | 0:5198300978ab | 56 | char _config; |
mederic | 0:5198300978ab | 57 | short _minCode; |
mederic | 0:5198300978ab | 58 | char _gain; |
mederic | 0:5198300978ab | 59 | }; |
mederic | 0:5198300978ab | 60 | |
mederic | 0:5198300978ab | 61 | #endif |