Interface to Analog devices AD5258 digital I2C potentiometer
AD5258.h
- Committer:
- RodColeman
- Date:
- 2013-11-12
- Revision:
- 3:f5b60d166896
- Parent:
- 2:8a71db02417b
File content as of revision 3:f5b60d166896:
/* Copyright 2013 Rod Coleman
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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