Hi!
Ich hab auch so meine Probleme mit dem SRF02, ich hab ihn per I2C an einen modifizierten Asuro gehängt. Und ich arbeite wie bad_american mit dem I2C Lib von Peter Fleury. Doch bei mir will er auch nicht richtig.
Ich schaffe es, die Messung zu starten (leuchtet kurz rot), doch er bockt beim abfragen der Werte herum.
Ich hab die Anschlüße jetzt nicht von dem "bösen" Flussmittel befreit, da ich mir beim besten Willen nicht vorstellen kann, dass das Flussmittel die übertragung stört.
Ich vermute eher, dass es an der Software, aber ich finde den Fehler nicht:
Wäre schön wenn ihr mir helfen könntet.Code:#define I2C_ADDRESS_SONAR 0xE0 unsigned int get_distance(void) { unsigned int cdistance = 0; if(!start_i2c(I2C_ADDRESS_SONAR+I2C_WRITE)) { i2c_write(0); //Set register i2c_write(0x51); //Execute ranging command (in cm) i2c_stop(); // set stop conditon = release bus Msleep(70); //Wait for ranging to be completed start_i2c(I2C_ADDRESS_SONAR+I2C_WRITE); i2c_write(2); //Set register to high ranging byte i2c_stop(); start_i2c(I2C_ADDRESS_SONAR+I2C_READ); cdistance += i2c_readAck(); cdistance <<= 8; i2c_stop(); start_i2c(I2C_ADDRESS_SONAR+I2C_WRITE); i2c_write(3); //Set register to high ranging byte i2c_stop(); start_i2c(I2C_ADDRESS_SONAR+I2C_READ); cdistance += i2c_readAck(); i2c_stop(); } return cdistance; } unsigned char start_i2c(unsigned char addr) { unsigned char ret = i2c_start(addr); if ( ret ) { i2c_stop(); errorMessage(2, "I2C Device not found", 15); } return ret; }
MFG
BWA







Zitieren
Lesezeichen