DigitalPotentiometer code for MCP4131.
DigitalPotentiometer.cpp
- Committer:
- wsalis01
- Date:
- 2012-04-30
- Revision:
- 0:9bd76a5655fa
File content as of revision 0:9bd76a5655fa:
#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; }