8 channel ADC library

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?

UserRevisionLine numberNew 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