Here's what I've written:
#include <Wire.h>
#define PWR_I2C_ADDRESS 1
int accessAddress(int regAddress)
{
return (PWR_I2C_ADDRESS<<5)+regAddress;
}
void writeTo(int regAddress, byte data)
{
Wire.beginTransmission(accessAddress(regAddress));
Wire.write(data);
Wire.endTransmission();
}
byte readFrom(int regAddress)
{
Wire.beginTransmission(accessAddress(regAddress));
Wire.endTransmission();
Wire.requestFrom(accessAddress(regAddress),1);
return Wire.read();
}
void setup()
{
Wire.begin();
Serial.begin(9600);
}
void loop()
{
writeTo(0x01,B00010010);
Serial.println(readFrom(0x01));
Serial.println(analogRead(A1));
}
Reading from the registers works fine right up until I add the analogRead(), at which point I start getting 255 back from readFrom(), which is, apparently, the default value, as it is what I get back when I try reading from a non-existent register.