8 channel ADC library
mcp3208.h@1:7dde73ad2b78, 2013-12-15 (annotated)
- Committer:
- henryeherman
- Date:
- Sun Dec 15 02:42:47 2013 +0000
- Revision:
- 1:7dde73ad2b78
Working 8 channel ADC library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
henryeherman | 1:7dde73ad2b78 | 1 | #include "mbed.h" |
henryeherman | 1:7dde73ad2b78 | 2 | #include "bit.h" |
henryeherman | 1:7dde73ad2b78 | 3 | #ifndef MCP3208_H |
henryeherman | 1:7dde73ad2b78 | 4 | #define MCP3208_H |
henryeherman | 1:7dde73ad2b78 | 5 | |
henryeherman | 1:7dde73ad2b78 | 6 | #define MCP3208_STARTBIT BIT(2) |
henryeherman | 1:7dde73ad2b78 | 7 | #define MCP3208_SGL_DIFF BIT(1) |
henryeherman | 1:7dde73ad2b78 | 8 | #define MCP3208_ADCSEL2 BIT(0) |
henryeherman | 1:7dde73ad2b78 | 9 | #define MCP3208_ADCSEL1 BIT(7) |
henryeherman | 1:7dde73ad2b78 | 10 | #define MCP3208_ADCSEL0 BIT(6) |
henryeherman | 1:7dde73ad2b78 | 11 | |
henryeherman | 1:7dde73ad2b78 | 12 | #define USELECTADC0 (MCP3208_STARTBIT|MCP3208_SGL_DIFF) |
henryeherman | 1:7dde73ad2b78 | 13 | #define LSELECTADC0 (0) |
henryeherman | 1:7dde73ad2b78 | 14 | |
henryeherman | 1:7dde73ad2b78 | 15 | #define USELECTADC1 (MCP3208_STARTBIT|MCP3208_SGL_DIFF) |
henryeherman | 1:7dde73ad2b78 | 16 | #define LSELECTADC1 (MCP3208_ADCSEL0) |
henryeherman | 1:7dde73ad2b78 | 17 | |
henryeherman | 1:7dde73ad2b78 | 18 | #define USELECTADC2 (MCP3208_STARTBIT|MCP3208_SGL_DIFF) |
henryeherman | 1:7dde73ad2b78 | 19 | #define LSELECTADC2 (MCP3208_ADCSEL1) |
henryeherman | 1:7dde73ad2b78 | 20 | |
henryeherman | 1:7dde73ad2b78 | 21 | #define USELECTADC3 (MCP3208_STARTBIT|MCP3208_SGL_DIFF) |
henryeherman | 1:7dde73ad2b78 | 22 | #define LSELECTADC3 (MCP3208_ADCSEL1|MCP3208_ADCSEL0) |
henryeherman | 1:7dde73ad2b78 | 23 | |
henryeherman | 1:7dde73ad2b78 | 24 | #define USELECTADC4 (MCP3208_STARTBIT|MCP3208_SGL_DIFF|MCP3208_ADCSEL2) |
henryeherman | 1:7dde73ad2b78 | 25 | #define LSELECTADC4 (0) |
henryeherman | 1:7dde73ad2b78 | 26 | |
henryeherman | 1:7dde73ad2b78 | 27 | #define USELECTADC5 (MCP3208_STARTBIT|MCP3208_SGL_DIFF|MCP3208_ADCSEL2) |
henryeherman | 1:7dde73ad2b78 | 28 | #define LSELECTADC5 (MCP3208_ADCSEL0) |
henryeherman | 1:7dde73ad2b78 | 29 | |
henryeherman | 1:7dde73ad2b78 | 30 | #define USELECTADC6 (MCP3208_STARTBIT|MCP3208_SGL_DIFF|MCP3208_ADCSEL2) |
henryeherman | 1:7dde73ad2b78 | 31 | #define LSELECTADC6 (MCP3208_ADCSEL1) |
henryeherman | 1:7dde73ad2b78 | 32 | |
henryeherman | 1:7dde73ad2b78 | 33 | #define USELECTADC7 (MCP3208_STARTBIT|MCP3208_SGL_DIFF|MCP3208_ADCSEL2) |
henryeherman | 1:7dde73ad2b78 | 34 | #define LSELECTADC7 (MCP3208_ADCSEL1|MCP3208_ADCSEL0) |
henryeherman | 1:7dde73ad2b78 | 35 | |
henryeherman | 1:7dde73ad2b78 | 36 | |
henryeherman | 1:7dde73ad2b78 | 37 | // BITS 0-11 set the output voltage!!! |
henryeherman | 1:7dde73ad2b78 | 38 | |
henryeherman | 1:7dde73ad2b78 | 39 | class mcp3208 { |
henryeherman | 1:7dde73ad2b78 | 40 | public: |
henryeherman | 1:7dde73ad2b78 | 41 | |
henryeherman | 1:7dde73ad2b78 | 42 | /* |
henryeherman | 1:7dde73ad2b78 | 43 | * Constructor |
henryeherman | 1:7dde73ad2b78 | 44 | */ |
henryeherman | 1:7dde73ad2b78 | 45 | mcp3208(SPI &spi, void(*sel)(void), void(*usel)(void)); |
henryeherman | 1:7dde73ad2b78 | 46 | |
henryeherman | 1:7dde73ad2b78 | 47 | /* |
henryeherman | 1:7dde73ad2b78 | 48 | * Destructor |
henryeherman | 1:7dde73ad2b78 | 49 | */ |
henryeherman | 1:7dde73ad2b78 | 50 | ~mcp3208(); |
henryeherman | 1:7dde73ad2b78 | 51 | |
henryeherman | 1:7dde73ad2b78 | 52 | /* |
henryeherman | 1:7dde73ad2b78 | 53 | * Write to DAC 0 |
henryeherman | 1:7dde73ad2b78 | 54 | */ |
henryeherman | 1:7dde73ad2b78 | 55 | int read0(); |
henryeherman | 1:7dde73ad2b78 | 56 | |
henryeherman | 1:7dde73ad2b78 | 57 | |
henryeherman | 1:7dde73ad2b78 | 58 | /* |
henryeherman | 1:7dde73ad2b78 | 59 | * Write to DAC 1 |
henryeherman | 1:7dde73ad2b78 | 60 | */ |
henryeherman | 1:7dde73ad2b78 | 61 | int read1(); |
henryeherman | 1:7dde73ad2b78 | 62 | |
henryeherman | 1:7dde73ad2b78 | 63 | /* |
henryeherman | 1:7dde73ad2b78 | 64 | * Write to DAC 2 |
henryeherman | 1:7dde73ad2b78 | 65 | */ |
henryeherman | 1:7dde73ad2b78 | 66 | int read2(); |
henryeherman | 1:7dde73ad2b78 | 67 | |
henryeherman | 1:7dde73ad2b78 | 68 | /* |
henryeherman | 1:7dde73ad2b78 | 69 | * Write to DAC 3 |
henryeherman | 1:7dde73ad2b78 | 70 | */ |
henryeherman | 1:7dde73ad2b78 | 71 | int read3(); |
henryeherman | 1:7dde73ad2b78 | 72 | |
henryeherman | 1:7dde73ad2b78 | 73 | /* |
henryeherman | 1:7dde73ad2b78 | 74 | * Write to DAC 4 |
henryeherman | 1:7dde73ad2b78 | 75 | */ |
henryeherman | 1:7dde73ad2b78 | 76 | int read4(); |
henryeherman | 1:7dde73ad2b78 | 77 | |
henryeherman | 1:7dde73ad2b78 | 78 | /* |
henryeherman | 1:7dde73ad2b78 | 79 | * Write to DAC 5 |
henryeherman | 1:7dde73ad2b78 | 80 | */ |
henryeherman | 1:7dde73ad2b78 | 81 | int read5(); |
henryeherman | 1:7dde73ad2b78 | 82 | |
henryeherman | 1:7dde73ad2b78 | 83 | /* |
henryeherman | 1:7dde73ad2b78 | 84 | * Write to DAC 6 |
henryeherman | 1:7dde73ad2b78 | 85 | */ |
henryeherman | 1:7dde73ad2b78 | 86 | int read6(); |
henryeherman | 1:7dde73ad2b78 | 87 | |
henryeherman | 1:7dde73ad2b78 | 88 | /* |
henryeherman | 1:7dde73ad2b78 | 89 | * Write to DAC 7 |
henryeherman | 1:7dde73ad2b78 | 90 | */ |
henryeherman | 1:7dde73ad2b78 | 91 | int read7(); |
henryeherman | 1:7dde73ad2b78 | 92 | |
henryeherman | 1:7dde73ad2b78 | 93 | /* |
henryeherman | 1:7dde73ad2b78 | 94 | * Select the ADC for data retrievel |
henryeherman | 1:7dde73ad2b78 | 95 | */ |
henryeherman | 1:7dde73ad2b78 | 96 | void select(); |
henryeherman | 1:7dde73ad2b78 | 97 | |
henryeherman | 1:7dde73ad2b78 | 98 | /* |
henryeherman | 1:7dde73ad2b78 | 99 | * Deselect the ADC |
henryeherman | 1:7dde73ad2b78 | 100 | */ |
henryeherman | 1:7dde73ad2b78 | 101 | void deselect(); |
henryeherman | 1:7dde73ad2b78 | 102 | |
henryeherman | 1:7dde73ad2b78 | 103 | private: |
henryeherman | 1:7dde73ad2b78 | 104 | |
henryeherman | 1:7dde73ad2b78 | 105 | // These function pointer allows you to |
henryeherman | 1:7dde73ad2b78 | 106 | // use a routine to control the chip select line |
henryeherman | 1:7dde73ad2b78 | 107 | // important for me since all of my chip select lines are |
henryeherman | 1:7dde73ad2b78 | 108 | // controlled by a array of shift registers! |
henryeherman | 1:7dde73ad2b78 | 109 | void(*selectfxn)(void); |
henryeherman | 1:7dde73ad2b78 | 110 | void(*unselectfxn)(void); |
henryeherman | 1:7dde73ad2b78 | 111 | SPI &_spi; |
henryeherman | 1:7dde73ad2b78 | 112 | |
henryeherman | 1:7dde73ad2b78 | 113 | // Configure the SPI periphreal to drive our ADCs |
henryeherman | 1:7dde73ad2b78 | 114 | void configspi(); |
henryeherman | 1:7dde73ad2b78 | 115 | }; // end class MCP3208 |
henryeherman | 1:7dde73ad2b78 | 116 | |
henryeherman | 1:7dde73ad2b78 | 117 | #endif //MCP3208_H |