8 channel ADC library
mcp3208.cpp@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 "mcp3208.h" |
henryeherman | 1:7dde73ad2b78 | 3 | |
henryeherman | 1:7dde73ad2b78 | 4 | using namespace mbed; |
henryeherman | 1:7dde73ad2b78 | 5 | |
henryeherman | 1:7dde73ad2b78 | 6 | mcp3208::mcp3208(SPI &spi, void(*sel)(void), void(*usel)(void)): _spi(spi) { |
henryeherman | 1:7dde73ad2b78 | 7 | selectfxn = sel; |
henryeherman | 1:7dde73ad2b78 | 8 | unselectfxn = usel; |
henryeherman | 1:7dde73ad2b78 | 9 | } |
henryeherman | 1:7dde73ad2b78 | 10 | |
henryeherman | 1:7dde73ad2b78 | 11 | mcp3208::~mcp3208() { |
henryeherman | 1:7dde73ad2b78 | 12 | } |
henryeherman | 1:7dde73ad2b78 | 13 | |
henryeherman | 1:7dde73ad2b78 | 14 | int mcp3208::read0(){ |
henryeherman | 1:7dde73ad2b78 | 15 | //printf("Read 0\r\n"); |
henryeherman | 1:7dde73ad2b78 | 16 | select(); |
henryeherman | 1:7dde73ad2b78 | 17 | _spi.write(USELECTADC0); |
henryeherman | 1:7dde73ad2b78 | 18 | int upperbyte = _spi.write(LSELECTADC0); |
henryeherman | 1:7dde73ad2b78 | 19 | int lowerbyte = _spi.write(0x00); |
henryeherman | 1:7dde73ad2b78 | 20 | deselect(); |
henryeherman | 1:7dde73ad2b78 | 21 | int value = ((0x0F & upperbyte) << 8) | lowerbyte; |
henryeherman | 1:7dde73ad2b78 | 22 | return value; |
henryeherman | 1:7dde73ad2b78 | 23 | } |
henryeherman | 1:7dde73ad2b78 | 24 | |
henryeherman | 1:7dde73ad2b78 | 25 | int mcp3208::read1(){ |
henryeherman | 1:7dde73ad2b78 | 26 | //printf("Read 1\r\n"); |
henryeherman | 1:7dde73ad2b78 | 27 | select(); |
henryeherman | 1:7dde73ad2b78 | 28 | _spi.write(USELECTADC1); |
henryeherman | 1:7dde73ad2b78 | 29 | int upperbyte = _spi.write(LSELECTADC1); |
henryeherman | 1:7dde73ad2b78 | 30 | int lowerbyte = _spi.write(0x00); |
henryeherman | 1:7dde73ad2b78 | 31 | deselect(); |
henryeherman | 1:7dde73ad2b78 | 32 | int value = ((0x0F & upperbyte) << 8) | lowerbyte; |
henryeherman | 1:7dde73ad2b78 | 33 | return value; |
henryeherman | 1:7dde73ad2b78 | 34 | } |
henryeherman | 1:7dde73ad2b78 | 35 | |
henryeherman | 1:7dde73ad2b78 | 36 | int mcp3208::read2(){ |
henryeherman | 1:7dde73ad2b78 | 37 | //printf("Read 2\r\n"); |
henryeherman | 1:7dde73ad2b78 | 38 | select(); |
henryeherman | 1:7dde73ad2b78 | 39 | _spi.write(USELECTADC2); |
henryeherman | 1:7dde73ad2b78 | 40 | int upperbyte = _spi.write(LSELECTADC2); |
henryeherman | 1:7dde73ad2b78 | 41 | int lowerbyte = _spi.write(0x00); |
henryeherman | 1:7dde73ad2b78 | 42 | deselect(); |
henryeherman | 1:7dde73ad2b78 | 43 | int value = ((0x0F & upperbyte) << 8) | lowerbyte; |
henryeherman | 1:7dde73ad2b78 | 44 | return value; |
henryeherman | 1:7dde73ad2b78 | 45 | } |
henryeherman | 1:7dde73ad2b78 | 46 | |
henryeherman | 1:7dde73ad2b78 | 47 | int mcp3208::read3(){ |
henryeherman | 1:7dde73ad2b78 | 48 | //printf("Read 3\r\n"); |
henryeherman | 1:7dde73ad2b78 | 49 | select(); |
henryeherman | 1:7dde73ad2b78 | 50 | _spi.write(USELECTADC3); |
henryeherman | 1:7dde73ad2b78 | 51 | int upperbyte = _spi.write(LSELECTADC3); |
henryeherman | 1:7dde73ad2b78 | 52 | int lowerbyte = _spi.write(0x00); |
henryeherman | 1:7dde73ad2b78 | 53 | deselect(); |
henryeherman | 1:7dde73ad2b78 | 54 | int value = ((0x0F & upperbyte) << 8) | lowerbyte; |
henryeherman | 1:7dde73ad2b78 | 55 | return value; |
henryeherman | 1:7dde73ad2b78 | 56 | } |
henryeherman | 1:7dde73ad2b78 | 57 | |
henryeherman | 1:7dde73ad2b78 | 58 | int mcp3208::read4(){ |
henryeherman | 1:7dde73ad2b78 | 59 | //printf("Read 4\r\n"); |
henryeherman | 1:7dde73ad2b78 | 60 | select(); |
henryeherman | 1:7dde73ad2b78 | 61 | _spi.write(USELECTADC4); |
henryeherman | 1:7dde73ad2b78 | 62 | int upperbyte = _spi.write(LSELECTADC4); |
henryeherman | 1:7dde73ad2b78 | 63 | int lowerbyte = _spi.write(0x00); |
henryeherman | 1:7dde73ad2b78 | 64 | deselect(); |
henryeherman | 1:7dde73ad2b78 | 65 | int value = ((0x0F & upperbyte) << 8) | lowerbyte; |
henryeherman | 1:7dde73ad2b78 | 66 | return value; |
henryeherman | 1:7dde73ad2b78 | 67 | } |
henryeherman | 1:7dde73ad2b78 | 68 | |
henryeherman | 1:7dde73ad2b78 | 69 | int mcp3208::read5(){ |
henryeherman | 1:7dde73ad2b78 | 70 | //printf("Read 5\r\n"); |
henryeherman | 1:7dde73ad2b78 | 71 | select(); |
henryeherman | 1:7dde73ad2b78 | 72 | _spi.write(USELECTADC5); |
henryeherman | 1:7dde73ad2b78 | 73 | int upperbyte = _spi.write(LSELECTADC5); |
henryeherman | 1:7dde73ad2b78 | 74 | int lowerbyte = _spi.write(0x00); |
henryeherman | 1:7dde73ad2b78 | 75 | deselect(); |
henryeherman | 1:7dde73ad2b78 | 76 | int value = ((0x0F & upperbyte) << 8) | lowerbyte; |
henryeherman | 1:7dde73ad2b78 | 77 | return value; |
henryeherman | 1:7dde73ad2b78 | 78 | } |
henryeherman | 1:7dde73ad2b78 | 79 | |
henryeherman | 1:7dde73ad2b78 | 80 | int mcp3208::read6(){ |
henryeherman | 1:7dde73ad2b78 | 81 | //printf("Read 6\r\n"); |
henryeherman | 1:7dde73ad2b78 | 82 | select(); |
henryeherman | 1:7dde73ad2b78 | 83 | _spi.write(USELECTADC6); |
henryeherman | 1:7dde73ad2b78 | 84 | int upperbyte = _spi.write(LSELECTADC6); |
henryeherman | 1:7dde73ad2b78 | 85 | int lowerbyte = _spi.write(0x00); |
henryeherman | 1:7dde73ad2b78 | 86 | deselect(); |
henryeherman | 1:7dde73ad2b78 | 87 | int value = ((0x0F & upperbyte) << 8) | lowerbyte; |
henryeherman | 1:7dde73ad2b78 | 88 | return value; |
henryeherman | 1:7dde73ad2b78 | 89 | } |
henryeherman | 1:7dde73ad2b78 | 90 | |
henryeherman | 1:7dde73ad2b78 | 91 | int mcp3208::read7(){ |
henryeherman | 1:7dde73ad2b78 | 92 | //printf("Read 7\r\n"); |
henryeherman | 1:7dde73ad2b78 | 93 | select(); |
henryeherman | 1:7dde73ad2b78 | 94 | _spi.write(USELECTADC7); |
henryeherman | 1:7dde73ad2b78 | 95 | int upperbyte = _spi.write(LSELECTADC7); |
henryeherman | 1:7dde73ad2b78 | 96 | int lowerbyte = _spi.write(0x00); |
henryeherman | 1:7dde73ad2b78 | 97 | deselect(); |
henryeherman | 1:7dde73ad2b78 | 98 | int value = ((0x0F & upperbyte) << 8) | lowerbyte; |
henryeherman | 1:7dde73ad2b78 | 99 | return value; |
henryeherman | 1:7dde73ad2b78 | 100 | } |
henryeherman | 1:7dde73ad2b78 | 101 | |
henryeherman | 1:7dde73ad2b78 | 102 | void mcp3208::configspi() { |
henryeherman | 1:7dde73ad2b78 | 103 | _spi.format(8, 0); |
henryeherman | 1:7dde73ad2b78 | 104 | //_spi.frequency(); |
henryeherman | 1:7dde73ad2b78 | 105 | } |
henryeherman | 1:7dde73ad2b78 | 106 | |
henryeherman | 1:7dde73ad2b78 | 107 | void mcp3208::select() { |
henryeherman | 1:7dde73ad2b78 | 108 | //Set CS low to start transmission (interrupts conversion) |
henryeherman | 1:7dde73ad2b78 | 109 | configspi(); |
henryeherman | 1:7dde73ad2b78 | 110 | selectfxn(); |
henryeherman | 1:7dde73ad2b78 | 111 | } |
henryeherman | 1:7dde73ad2b78 | 112 | |
henryeherman | 1:7dde73ad2b78 | 113 | void mcp3208::deselect() { |
henryeherman | 1:7dde73ad2b78 | 114 | //Set CS high to stop transmission (restarts conversion) |
henryeherman | 1:7dde73ad2b78 | 115 | unselectfxn(); |
henryeherman | 1:7dde73ad2b78 | 116 | } |