DigitalPotentiometer code for MCP4131.
Revision 0:9bd76a5655fa, committed 2012-04-30
- Comitter:
- wsalis01
- Date:
- Mon Apr 30 00:37:45 2012 +0000
- Commit message:
- Initial Commit.
Changed in this revision
DigitalPotentiometer.cpp | Show annotated file Show diff for this revision Revisions of this file |
DigitalPotentiometer.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 9bd76a5655fa DigitalPotentiometer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DigitalPotentiometer.cpp Mon Apr 30 00:37:45 2012 +0000 @@ -0,0 +1,82 @@ +#include "DigitalPotentiometer.h" + +DigitalPotentiometer::DigitalPotentiometer(PinName csPin) : _spi(p5, p6, p7), _cs(csPin) +{ + _cs = 0; + + //Increase the frequency when external pull ups are used + _spi.format(8,3); + _spi.frequency(1000000); +} + +int DigitalPotentiometer::increment() { + _cs = 1; + + // send in the address and value via SPI: + char ret1 = _spi.write(0x04); + + _cs = 0; + return ret1; +} + +int DigitalPotentiometer::decrement() { + _cs = 1; + + // send in the address and value via SPI: + char ret1 = _spi.write(0x08); + + _cs = 0; + return ret1; +} + +int DigitalPotentiometer::readTCON() { + _cs = 1; + + // send in the address and value via SPI: + char ret1 = _spi.write(0x4C); + char ret2 = _spi.write(0x00); + + _cs = 0; + return ret1; +} + +int DigitalPotentiometer::initTCON() { + _cs = 1; + + // send in the address and value via SPI: + char ret1 = _spi.write(0x41); + char ret2 = _spi.write(0x0F); + + _cs = 0; + return ret1; +} + +int DigitalPotentiometer::readStatus() { + _cs = 1; + + // send in the address and value via SPI: + char ret1 = _spi.write(0x5C); + char ret2 = _spi.write(0x00); + + _cs = 0; + return ret1; +} + +int DigitalPotentiometer::setTap(int value) { + _cs = 1; + + // send in the address and value via SPI: + char h = 0x03 & (value >> 8); + char l = 0x00FF & value; + + //Serial.print("HIGH: "); + //Serial.println(h, BIN); + //Serial.print("LOW: "); + //Serial.println(l, BIN); + + char ret1 = _spi.write(h); + char ret2 = _spi.write(l); + + _cs = 0; + return (ret1 << 8) | ret2; +} \ No newline at end of file
diff -r 000000000000 -r 9bd76a5655fa DigitalPotentiometer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DigitalPotentiometer.h Mon Apr 30 00:37:45 2012 +0000 @@ -0,0 +1,31 @@ +#ifndef DigitalPotentiometer_h +#define DigitalPotentiometer_h + +#include "mbed.h" + +#define MOSI 11 +#define MISO 12 +#define SCK 13 + +#define DigitalPotentiometer_MIN 0 +#define DigitalPotentiometer_MAX 256 + +class DigitalPotentiometer +{ +public: + DigitalPotentiometer(PinName csPin); + int initTCON(); + int readTCON(); + int readStatus(); + int increment(); + int decrement(); + int setTap(int value); + +private: + SPI _spi; + DigitalOut _cs; + void enable(); + void disable(); +}; + +#endif