8 channel ADC library
Diff: mcp3208.cpp
- Revision:
- 1:7dde73ad2b78
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mcp3208.cpp Sun Dec 15 02:42:47 2013 +0000 @@ -0,0 +1,116 @@ +#include "mbed.h" +#include "mcp3208.h" + +using namespace mbed; + +mcp3208::mcp3208(SPI &spi, void(*sel)(void), void(*usel)(void)): _spi(spi) { + selectfxn = sel; + unselectfxn = usel; +} + +mcp3208::~mcp3208() { +} + +int mcp3208::read0(){ + //printf("Read 0\r\n"); + select(); + _spi.write(USELECTADC0); + int upperbyte = _spi.write(LSELECTADC0); + int lowerbyte = _spi.write(0x00); + deselect(); + int value = ((0x0F & upperbyte) << 8) | lowerbyte; + return value; +} + +int mcp3208::read1(){ + //printf("Read 1\r\n"); + select(); + _spi.write(USELECTADC1); + int upperbyte = _spi.write(LSELECTADC1); + int lowerbyte = _spi.write(0x00); + deselect(); + int value = ((0x0F & upperbyte) << 8) | lowerbyte; + return value; +} + +int mcp3208::read2(){ + //printf("Read 2\r\n"); + select(); + _spi.write(USELECTADC2); + int upperbyte = _spi.write(LSELECTADC2); + int lowerbyte = _spi.write(0x00); + deselect(); + int value = ((0x0F & upperbyte) << 8) | lowerbyte; + return value; +} + +int mcp3208::read3(){ + //printf("Read 3\r\n"); + select(); + _spi.write(USELECTADC3); + int upperbyte = _spi.write(LSELECTADC3); + int lowerbyte = _spi.write(0x00); + deselect(); + int value = ((0x0F & upperbyte) << 8) | lowerbyte; + return value; +} + +int mcp3208::read4(){ + //printf("Read 4\r\n"); + select(); + _spi.write(USELECTADC4); + int upperbyte = _spi.write(LSELECTADC4); + int lowerbyte = _spi.write(0x00); + deselect(); + int value = ((0x0F & upperbyte) << 8) | lowerbyte; + return value; +} + +int mcp3208::read5(){ + //printf("Read 5\r\n"); + select(); + _spi.write(USELECTADC5); + int upperbyte = _spi.write(LSELECTADC5); + int lowerbyte = _spi.write(0x00); + deselect(); + int value = ((0x0F & upperbyte) << 8) | lowerbyte; + return value; +} + +int mcp3208::read6(){ + //printf("Read 6\r\n"); + select(); + _spi.write(USELECTADC6); + int upperbyte = _spi.write(LSELECTADC6); + int lowerbyte = _spi.write(0x00); + deselect(); + int value = ((0x0F & upperbyte) << 8) | lowerbyte; + return value; +} + +int mcp3208::read7(){ + //printf("Read 7\r\n"); + select(); + _spi.write(USELECTADC7); + int upperbyte = _spi.write(LSELECTADC7); + int lowerbyte = _spi.write(0x00); + deselect(); + int value = ((0x0F & upperbyte) << 8) | lowerbyte; + return value; +} + +void mcp3208::configspi() { + _spi.format(8, 0); + //_spi.frequency(); +} + +void mcp3208::select() { + //Set CS low to start transmission (interrupts conversion) + configspi(); + selectfxn(); +} + +void mcp3208::deselect() { + //Set CS high to stop transmission (restarts conversion) + unselectfxn(); +} \ No newline at end of file