Will Salisbury / DigitalPotentiometer
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers DigitalPotentiometer.cpp Source File

DigitalPotentiometer.cpp

00001 #include "DigitalPotentiometer.h"
00002 
00003 DigitalPotentiometer::DigitalPotentiometer(PinName csPin) : _spi(p5, p6, p7), _cs(csPin)
00004 {
00005     _cs = 0;
00006 
00007     //Increase the frequency when external pull ups are used
00008     _spi.format(8,3);
00009     _spi.frequency(1000000);
00010 }
00011 
00012 int DigitalPotentiometer::increment() {
00013     _cs = 1;
00014     
00015     //  send in the address and value via SPI:
00016     char ret1 = _spi.write(0x04);
00017 
00018     _cs = 0;
00019     return ret1;
00020 }
00021 
00022 int DigitalPotentiometer::decrement() {
00023     _cs = 1;
00024     
00025     //  send in the address and value via SPI:
00026     char ret1 = _spi.write(0x08);
00027     
00028     _cs = 0;
00029     return ret1;
00030 }
00031 
00032 int DigitalPotentiometer::readTCON() {
00033     _cs = 1;
00034     
00035     //  send in the address and value via SPI:
00036     char ret1 = _spi.write(0x4C);
00037     char ret2 = _spi.write(0x00);
00038     
00039     _cs = 0;
00040     return ret1;
00041 }
00042 
00043 int DigitalPotentiometer::initTCON() {
00044     _cs = 1;
00045     
00046     //  send in the address and value via SPI:
00047     char ret1 = _spi.write(0x41);
00048     char ret2 = _spi.write(0x0F);
00049     
00050     _cs = 0;
00051     return ret1;
00052 }
00053 
00054 int DigitalPotentiometer::readStatus() {
00055     _cs = 1;
00056     
00057     //  send in the address and value via SPI:
00058     char ret1 = _spi.write(0x5C);
00059     char ret2 = _spi.write(0x00);
00060     
00061     _cs = 0;
00062     return ret1;
00063 }
00064 
00065 int DigitalPotentiometer::setTap(int value) {
00066     _cs = 1;
00067 
00068     //  send in the address and value via SPI:
00069     char h = 0x03 & (value >> 8);
00070     char l = 0x00FF & value;
00071     
00072     //Serial.print("HIGH: ");
00073     //Serial.println(h, BIN);
00074     //Serial.print("LOW: ");
00075     //Serial.println(l, BIN);
00076     
00077     char ret1 = _spi.write(h);
00078     char ret2 = _spi.write(l);
00079 
00080     _cs = 0;    
00081     return (ret1 << 8) | ret2;
00082 }