... Du mußt den Returnwert von "i2c_start (Sadd + I2C_WRITE)" auswerten ... if(i2c_start(Adresse und Write) == 0) { ...
Sorry, ja, danke. Zu Beginn dieser Litanei, den ich nicht zitiert hatte, hab ich es ja noch richtig:
Code:
//      Messung starten auf Sensor Sadd
// - - - - - - - - - - - - - - -
  if (!(i2c_start (Sadd + I2C_WRITE)))  // Slave bereit zum schreiben?
  {                                     //   dann Werte schreiben
    i2cdmy  =  i2c_write (  00 );       // Buffer Startadresse setzen     
    i2cdmy  =  i2c_write ( 0x51 );      // Startbefehl SRF02
               i2c_stop();              // Zugriff beenden
  }                                     //
  else                  // Weiter mit if (!(i2c_start( Sadd + I2C_WRITE )))
  {                                     //
    uputs0("\r\t## SRF_rdat\r");
    wms (   10);
    return 9901;                        // Return mit Fehlercode
  }                     // Ende if (!(i2c_start( Sadd + I2C_WRITE )))
Und danach - hat das dauernde Ändern zu Schlamperei geführt. Hast ja Recht.

... Wer schreibt eigentlich den Code, den du da so postest, z.B. den Bascom Code ...
Bascom sind Beispiele aus dem RN Wi ki, das kann ich nicht. Die C-Sequenzen sind von mir - sicher mehr schlecht als recht :-/ . Die I²C-Bibliothek ist von PFleury.