Problem reading I2C

	do
	{
  }while(true);

A complete misuse of the do/while statement. A while statement would be better.

		/*
		analogWrite(E1, 255);	//PWM Speed Control
		analogWrite(E2, 255);	//PWM Speed Control
		delay(30);
		digitalWrite(M1, HIGH);
		digitalWrite(M2, HIGH);
		*/

Is this part of your problem? No? Why did you post it, then?

Where is the rest of your code? What is a MySonar?

But it seems that using these together. interferes with reading the i2c bus.

Some proof would be useful. What does "seems to interfere" mean? What pins is the motor shield using? PWM output on digital pins should have no impact on any analog pins, where I2C occurs.