Interface to Analog devices AD5258 digital I2C potentiometer
AD5258.cpp
- Committer:
- RodColeman
- Date:
- 2013-11-11
- Revision:
- 1:64570234d7b5
- Parent:
- 0:8920c7d857d8
- Child:
- 2:8a71db02417b
File content as of revision 1:64570234d7b5:
#include "AD5258.h" #include "mbed.h" AD5258::AD5258(PinName sda, PinName scl, int address) : _i2c(sda, scl) { _address = address; } // RDAC ACCESS: values of 0 to 0x3F for full pot range. int AD5258::read() { char foo[1]; foo[0] = 00; // command to read RDAC _i2c.write(_address, foo, 1); _i2c.read(_address, foo, 1); return foo[0]; } void AD5258::write(int data) { char foo[2]; foo[0] = 00; foo[1] = data; _i2c.write(_address, foo, 2); } // EEPROM ACCESS int AD5258::readEE() { char foo[1]; foo[0] = 0x20; // command to read RDAC _i2c.write(_address, foo, 1); _i2c.read(_address, foo, 1); return foo[0]; } void AD5258::writeEE(int data) { char foo[2]; foo[0] = 0x20; foo[1] = data; _i2c.write(_address, foo, 2); } // Store RDAC value to EEPROM, for nonvol retention: void AD5258::store(void) { char foo[1]; foo[0] = 0xC0; // command to store RDAC to EE _i2c.write(_address, foo, 1); } // restore RDAC value from EEPROM void AD5258::restore(void) { char foo[2]; foo[0] = 0xA0; // command to store RDAC to EE foo[1] = 0x80; // NOP to restore low power mode _i2c.write(_address, foo, 1); }