Wire.requestFrom() hangs when there is an analogRead() after it

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.