Ja, der Bus wird blockiert ich denke beim lesen der Messdaten. Da warscheinlich keine Messdaten auf dem bus liegen.
Es gibt ja zwei möglichkeiten den Bus zu aktivieren
1. i2c_start(Adresse) liefert 0 oder 1 zurück (ok oder nicht OK)
2. i2c_start_wait(Adresse) versucht den Teilnehmer solange anzusprechen bis er antwortet.

Falls ich 2. verwende hängt bleibt er sofort stehen da er den SRF02 nicht adressieren kann und läuft endlos in der Schleife (Blockiert)
Falls ich 1. verwende läuft er alle Befehle ab und bleibt beim lesen (messung = i2c_readNak()) der Messdaten stehen. Sobald ich diese zwei Lesebefehle auskommentiere läuft er wieder durch und meine I2C Display ausgabe aktualisiert sich wieder.

Hier ein Ausschnitt

while(1)
{
wait_10ms(80);
i2c_init();
i2c_start(SRF02+I2C_WRITE);
i2c_write(0x00); // command register 0
i2c_write(0x51); // read in cm
i2c_stop(); // set stop conditon = release bus

i2c_start(SRF02+I2C_WRITE); // set device address and write mode
i2c_write(0x02);

i2c_rep_start(SRF02+I2C_READ); // set device address and read mode
//ret = i2c_readNak(); // read one byte from SRF02
//ret1 = i2c_readAck(); // read second byte from SRF02
i2c_stop();

Cursor_x_y(1,4);
char message[10];
sprintf (message,"%i %i", ret1, ret);
lprint(message);
}