user53320: I am trying to read a specific register from a device. In this case I am trying to read the value stored in register 0X1F from slave device 0x08. On the scope I see writes for 
ADDRESS_SLAVE(Wire.beginTransmission), ADDRESS_TESTCOMP0 (Wire.write)

and 
ADDRESS_TESTCOMP0 (Wire.requestFrom(ADDRESS_TESTCOMP0,8))

but I don't see the register values reading out.  Here is my code:
#include <Wire.h>

int ADDRESS_SLAVE = 0X08;
int ADDRESS_TESTCOMP0 = 0X1F;


void setup() 
{
 Wire.setClock(3400000); 
 Wire.begin();
 Serial.begin(9600);
}

void loop() 
{
   Wire.beginTransmission(byte(ADDRESS_SLAVE));  
   Wire.write(byte(ADDRESS_TESTCOMP0));  
   Wire.endTransmission(byte(ADDRESS_TESTCOMP0)); 

   Wire.requestFrom(ADDRESS_TESTCOMP0,8);    
   char read = Wire.read();
   Serial.println(read);

   delay(1000);
}


user37622: errors corrected
#include <Wire.h>

byte ADDRESS_SLAVE = 0X08; 
byte REGISTER_XY = 0X1F;
byte READ_LENGTH = 8;

void setup() 
{
 Wire.begin();
 Wire.setClock(400000); // set I2C 'full-speed'
 Serial.begin(9600);
}

void loop() 
{
   Wire.beginTransmission(ADDRESS_SLAVE);  
   Wire.write(REGISTER_XY);  // set register for read
   Wire.endTransmission(false); // false to not release the line

   Wire.requestFrom(ADDRESS_SLAVE,READ_LENGTH); // request bytes from register XY
   byte buff[READ_LENGTH];    
   Wire.readBytes(buff, READ_LENGTH);
   for (int i = 0; i < READ_LENGTH; i++) {
     Serial.println(buff[i], HEX);
   }
   Serial.println();
   delay(1000);
}

if you read only one register of the device, you can setup the device in setup() and in loop() only read the data from the register:
#include <Wire.h>

byte ADDRESS_SLAVE = 0X08; 
byte REGISTER_XY = 0X1F;
byte READ_LENGTH = 8;

void setup() {
  Serial.begin(9600);

  Wire.begin();
  Wire.setClock(400000); // set I2C 'full-speed'

  Wire.beginTransmission(ADDRESS_SLAVE);  
  Wire.write(REGISTER_XY);  // set register for read
  Wire.endTransmission();
}

void loop() {
   Wire.requestFrom(ADDRESS_SLAVE,READ_LENGTH); 
   byte buff[READ_LENGTH];    
   Wire.readBytes(buff, READ_LENGTH);
   for (int i = 0; i < READ_LENGTH; i++) {
     Serial.println(buff[i], HEX);
   }
   Serial.println();
   delay(1000);
}


53320: <p>I am trying to read a specific register from a device. In this case I am trying to read the value stored in register 0X1F from slave device 0x08. On the scope I see writes for </p>

<pre><code>ADDRESS_SLAVE(Wire.beginTransmission), ADDRESS_TESTCOMP0 (Wire.write)
</code></pre>

<p>and </p>

<pre><code>ADDRESS_TESTCOMP0 (Wire.requestFrom(ADDRESS_TESTCOMP0,8))
</code></pre>

<p>but I don't see the register values reading out.  Here is my code:</p>

<pre><code>#include &lt;Wire.h&gt;

int ADDRESS_SLAVE = 0X08;
int ADDRESS_TESTCOMP0 = 0X1F;


void setup() 
{
 Wire.setClock(3400000); 
 Wire.begin();
 Serial.begin(9600);
}

void loop() 
{
   Wire.beginTransmission(byte(ADDRESS_SLAVE));  
   Wire.write(byte(ADDRESS_TESTCOMP0));  
   Wire.endTransmission(byte(ADDRESS_TESTCOMP0)); 

   Wire.requestFrom(ADDRESS_TESTCOMP0,8);    
   char read = Wire.read();
   Serial.println(read);

   delay(1000);
}
</code></pre>
 37622: <p>errors corrected</p>

<pre><code>#include &lt;Wire.h&gt;

byte ADDRESS_SLAVE = 0X08; 
byte REGISTER_XY = 0X1F;
byte READ_LENGTH = 8;

void setup() 
{
 Wire.begin();
 Wire.setClock(400000); // set I2C 'full-speed'
 Serial.begin(9600);
}

void loop() 
{
   Wire.beginTransmission(ADDRESS_SLAVE);  
   Wire.write(REGISTER_XY);  // set register for read
   Wire.endTransmission(false); // false to not release the line

   Wire.requestFrom(ADDRESS_SLAVE,READ_LENGTH); // request bytes from register XY
   byte buff[READ_LENGTH];    
   Wire.readBytes(buff, READ_LENGTH);
   for (int i = 0; i &lt; READ_LENGTH; i++) {
     Serial.println(buff[i], HEX);
   }
   Serial.println();
   delay(1000);
}
</code></pre>

<p>if you read only one register of the device, you can setup the device in <code>setup()</code> and in <code>loop()</code> only read the data from the register:</p>

<pre><code>#include &lt;Wire.h&gt;

byte ADDRESS_SLAVE = 0X08; 
byte REGISTER_XY = 0X1F;
byte READ_LENGTH = 8;

void setup() {
  Serial.begin(9600);

  Wire.begin();
  Wire.setClock(400000); // set I2C 'full-speed'

  Wire.beginTransmission(ADDRESS_SLAVE);  
  Wire.write(REGISTER_XY);  // set register for read
  Wire.endTransmission();
}

void loop() {
   Wire.requestFrom(ADDRESS_SLAVE,READ_LENGTH); 
   byte buff[READ_LENGTH];    
   Wire.readBytes(buff, READ_LENGTH);
   for (int i = 0; i &lt; READ_LENGTH; i++) {
     Serial.println(buff[i], HEX);
   }
   Serial.println();
   delay(1000);
}
</code></pre>
