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 "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 }