DigitalPotentiometer code for MCP4131.
DigitalPotentiometer.cpp@0:9bd76a5655fa, 2012-04-30 (annotated)
- Committer:
- wsalis01
- Date:
- Mon Apr 30 00:37:45 2012 +0000
- Revision:
- 0:9bd76a5655fa
Initial Commit.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wsalis01 | 0:9bd76a5655fa | 1 | #include "DigitalPotentiometer.h" |
wsalis01 | 0:9bd76a5655fa | 2 | |
wsalis01 | 0:9bd76a5655fa | 3 | DigitalPotentiometer::DigitalPotentiometer(PinName csPin) : _spi(p5, p6, p7), _cs(csPin) |
wsalis01 | 0:9bd76a5655fa | 4 | { |
wsalis01 | 0:9bd76a5655fa | 5 | _cs = 0; |
wsalis01 | 0:9bd76a5655fa | 6 | |
wsalis01 | 0:9bd76a5655fa | 7 | //Increase the frequency when external pull ups are used |
wsalis01 | 0:9bd76a5655fa | 8 | _spi.format(8,3); |
wsalis01 | 0:9bd76a5655fa | 9 | _spi.frequency(1000000); |
wsalis01 | 0:9bd76a5655fa | 10 | } |
wsalis01 | 0:9bd76a5655fa | 11 | |
wsalis01 | 0:9bd76a5655fa | 12 | int DigitalPotentiometer::increment() { |
wsalis01 | 0:9bd76a5655fa | 13 | _cs = 1; |
wsalis01 | 0:9bd76a5655fa | 14 | |
wsalis01 | 0:9bd76a5655fa | 15 | // send in the address and value via SPI: |
wsalis01 | 0:9bd76a5655fa | 16 | char ret1 = _spi.write(0x04); |
wsalis01 | 0:9bd76a5655fa | 17 | |
wsalis01 | 0:9bd76a5655fa | 18 | _cs = 0; |
wsalis01 | 0:9bd76a5655fa | 19 | return ret1; |
wsalis01 | 0:9bd76a5655fa | 20 | } |
wsalis01 | 0:9bd76a5655fa | 21 | |
wsalis01 | 0:9bd76a5655fa | 22 | int DigitalPotentiometer::decrement() { |
wsalis01 | 0:9bd76a5655fa | 23 | _cs = 1; |
wsalis01 | 0:9bd76a5655fa | 24 | |
wsalis01 | 0:9bd76a5655fa | 25 | // send in the address and value via SPI: |
wsalis01 | 0:9bd76a5655fa | 26 | char ret1 = _spi.write(0x08); |
wsalis01 | 0:9bd76a5655fa | 27 | |
wsalis01 | 0:9bd76a5655fa | 28 | _cs = 0; |
wsalis01 | 0:9bd76a5655fa | 29 | return ret1; |
wsalis01 | 0:9bd76a5655fa | 30 | } |
wsalis01 | 0:9bd76a5655fa | 31 | |
wsalis01 | 0:9bd76a5655fa | 32 | int DigitalPotentiometer::readTCON() { |
wsalis01 | 0:9bd76a5655fa | 33 | _cs = 1; |
wsalis01 | 0:9bd76a5655fa | 34 | |
wsalis01 | 0:9bd76a5655fa | 35 | // send in the address and value via SPI: |
wsalis01 | 0:9bd76a5655fa | 36 | char ret1 = _spi.write(0x4C); |
wsalis01 | 0:9bd76a5655fa | 37 | char ret2 = _spi.write(0x00); |
wsalis01 | 0:9bd76a5655fa | 38 | |
wsalis01 | 0:9bd76a5655fa | 39 | _cs = 0; |
wsalis01 | 0:9bd76a5655fa | 40 | return ret1; |
wsalis01 | 0:9bd76a5655fa | 41 | } |
wsalis01 | 0:9bd76a5655fa | 42 | |
wsalis01 | 0:9bd76a5655fa | 43 | int DigitalPotentiometer::initTCON() { |
wsalis01 | 0:9bd76a5655fa | 44 | _cs = 1; |
wsalis01 | 0:9bd76a5655fa | 45 | |
wsalis01 | 0:9bd76a5655fa | 46 | // send in the address and value via SPI: |
wsalis01 | 0:9bd76a5655fa | 47 | char ret1 = _spi.write(0x41); |
wsalis01 | 0:9bd76a5655fa | 48 | char ret2 = _spi.write(0x0F); |
wsalis01 | 0:9bd76a5655fa | 49 | |
wsalis01 | 0:9bd76a5655fa | 50 | _cs = 0; |
wsalis01 | 0:9bd76a5655fa | 51 | return ret1; |
wsalis01 | 0:9bd76a5655fa | 52 | } |
wsalis01 | 0:9bd76a5655fa | 53 | |
wsalis01 | 0:9bd76a5655fa | 54 | int DigitalPotentiometer::readStatus() { |
wsalis01 | 0:9bd76a5655fa | 55 | _cs = 1; |
wsalis01 | 0:9bd76a5655fa | 56 | |
wsalis01 | 0:9bd76a5655fa | 57 | // send in the address and value via SPI: |
wsalis01 | 0:9bd76a5655fa | 58 | char ret1 = _spi.write(0x5C); |
wsalis01 | 0:9bd76a5655fa | 59 | char ret2 = _spi.write(0x00); |
wsalis01 | 0:9bd76a5655fa | 60 | |
wsalis01 | 0:9bd76a5655fa | 61 | _cs = 0; |
wsalis01 | 0:9bd76a5655fa | 62 | return ret1; |
wsalis01 | 0:9bd76a5655fa | 63 | } |
wsalis01 | 0:9bd76a5655fa | 64 | |
wsalis01 | 0:9bd76a5655fa | 65 | int DigitalPotentiometer::setTap(int value) { |
wsalis01 | 0:9bd76a5655fa | 66 | _cs = 1; |
wsalis01 | 0:9bd76a5655fa | 67 | |
wsalis01 | 0:9bd76a5655fa | 68 | // send in the address and value via SPI: |
wsalis01 | 0:9bd76a5655fa | 69 | char h = 0x03 & (value >> 8); |
wsalis01 | 0:9bd76a5655fa | 70 | char l = 0x00FF & value; |
wsalis01 | 0:9bd76a5655fa | 71 | |
wsalis01 | 0:9bd76a5655fa | 72 | //Serial.print("HIGH: "); |
wsalis01 | 0:9bd76a5655fa | 73 | //Serial.println(h, BIN); |
wsalis01 | 0:9bd76a5655fa | 74 | //Serial.print("LOW: "); |
wsalis01 | 0:9bd76a5655fa | 75 | //Serial.println(l, BIN); |
wsalis01 | 0:9bd76a5655fa | 76 | |
wsalis01 | 0:9bd76a5655fa | 77 | char ret1 = _spi.write(h); |
wsalis01 | 0:9bd76a5655fa | 78 | char ret2 = _spi.write(l); |
wsalis01 | 0:9bd76a5655fa | 79 | |
wsalis01 | 0:9bd76a5655fa | 80 | _cs = 0; |
wsalis01 | 0:9bd76a5655fa | 81 | return (ret1 << 8) | ret2; |
wsalis01 | 0:9bd76a5655fa | 82 | } |