Interface to Analog devices AD5258 digital I2C potentiometer

AD5258.h

Committer:
RodColeman
Date:
2013-11-12
Revision:
2:8a71db02417b
Parent:
1:64570234d7b5
Child:
3:f5b60d166896

File content as of revision 2:8a71db02417b:

#include "mbed.h"
 
#ifndef MBED_AD5258_H
#define MBED_AD5258_H
 
// Interface to the AD5258 I2C 64-step (0x00 to 0x3F)6-Bit digital Potentiometer

// measure reference voltage on the pin6 of U3 LM293
// be sure to remove R11, and check R4 is 220

/*Examples: RDAC =
0x00, Vref=1,0V
0x03, Vref=1,1V
0x05, Vref=1,2V
0x0F, Vref=1,5V
0x20, Vref=1,82V  // default
0x30, Vref=2,0V
0x3F, Vref=2,2V 
*/


class AD5258 {
public:
    /** Create an instance of the AD5258 connected to specfied I2C pins, with the specified address.
     *
     * @param sda The I2C data pin
     * @param scl The I2C clock pin
     * @param address The I2C address for this AD5258
     */
    AD5258(PinName sda, PinName scl, int address);
 
    /** Read the RDAC value
     *
     * @return The 6-bit value read
     */
    int read();
    
    /** Write to the RDAC
     * 
     * @param data The 6-bits value: 0x00 to 0x3F to write to the pots RDAC
     */
    void write(int data);
    
    // READ and WRITE EEPROM
    
        /** Read the EEPROM value
     *
     * @return The 6-bit value read
     */
    int readEE();
    
      /** Write to the RDAC
     * 
     * @param data The 6-bits value: 0x00 to 0x3F to write to the pots RDAC
     */
    void writeEE(int data); 
    
    
    
    
    // STORE and RESTORE:
    
    /** store the RDAC value into the EEPROM, for nonvolatile keeping of the value
    *
    */
    void store(void);
 
    /** restore to the RDAC the value from the EEPROM. NOP issued afterward, to put back into low-power idle mode
    *
    */
    void restore(void);
    
    
    /** update write protect bit
    *
    * @param enable: TRUE to SET WP, FALSE to lift WP
    */
 
    void writeProtect(bool enable);
 
    //  TODO: tolerance register access
 
 
 
private:
    I2C _i2c;
    int _address;
};
 
#endif