I agree with PaulS.
Could you try this and see how far you get?
volatile int16_t data[16];
void loop()
{
for( int i = 0; i<16; i++)
{
data[i] = analogRead( A0 + i);
}
}
void sendAnalogReading()
{
Wire.write( (uint8_t *) data, sizeof( data));
}
Or perhaps this:
volatile int16_t data[16];
void loop()
{
int16_t temporary[16];
for( int i=0; i<16; i++)
{
temporary[i] = analogRead( A0 + i);
}
noInterrupts();
memcpy( (void *) data, temporary, sizeof( data));
interrupts();
}
void sendAnalogReading()
{
Wire.write( (uint8_t *) data, sizeof( data));
}