From: batoub <ba...@gm...> - 2008-04-23 08:08:58
|
Hi everybody, I have a problem with SRF08 sonar, I try to change the address of mine using this code : #define chgtaddresse1 0xA0 #define chgtaddresse2 0xAA #define chgtaddresse3 0xA5 #define chgtaddresse4 0xF2 gI2cAddr = 0x74; if (( i2cDev = open( i2cDevName, O_RDWR )) < 0 ) { LogError( "Error opening '%s': %s\n", i2cDevName, strerror( errno )); exit( 1 ); } I2cSetSlaveAddress( i2cDev, gI2cAddr, I2C_USE_CRC ); I2cTransfer( i2cDev, chgtaddresse1, NULL, 0, NULL, 0, NULL ); close( i2cDev ); if (( i2cDev = open( i2cDevName, O_RDWR )) < 0 ){ LogError( "Error opening '%s': %s\n", i2cDevName, strerror( errno )); exit( 1 ); } I2cSetSlaveAddress( i2cDev, gI2cAddr, I2C_USE_CRC ); I2cTransfer( i2cDev, chgtaddresse2, NULL, 0, NULL, 0, NULL ); close( i2cDev ); if (( i2cDev = open( i2cDevName, O_RDWR )) < 0 ){ LogError( "Error opening '%s': %s\n", i2cDevName, strerror( errno )); exit( 1 ); } I2cSetSlaveAddress( i2cDev, gI2cAddr, I2C_USE_CRC ); I2cTransfer( i2cDev, chgtaddresse3, NULL, 0, NULL, 0, NULL ); close( i2cDev ); if (( i2cDev = open( i2cDevName, O_RDWR )) < 0 ){ LogError( "Error opening '%s': %s\n", i2cDevName, strerror( errno )); exit( 1 ); } I2cSetSlaveAddress( i2cDev, gI2cAddr, I2C_USE_CRC ); I2cTransfer( i2cDev, chgtaddresse4, NULL, 0, NULL, 0, NULL ); close( i2cDev ); Anyone can help me please ? Thank you ! Dave Hylands wrote: > > Hi Shawn, > >> I have a verdex xm4-bt/robostix combo and am trying to add another device >> to >> the i2c bus. This device is a ultrasonic range finder and it's i2c >> address >> can only be specified between 224-254 (0xE0 and 0xFE). After reviewing >> the >> i2c code it appears that only 7-bit address are supported 1-127. I do not >> wish to break compatible with i2c-io running between the gumstix and >> robostix, is there a quick and dirty hack I could do to accomdate this >> device? I've gone through the i2c-api.h, i2c-dev.h and so on but I am >> stuck >> at the i2csetslaveaddress/ioctl functions and trying to modfiy these. > > Many manufacturers incorrectly specify an 8-bit address, when the real > address is the upper 7-bits of the first 8-bit byte that's sent on the > i2c bus. > > So in your case, the correct address is 0x70 - 0x7F or 112 thru 127 > (0xE0 >> 1 = 0x70 and 0xFE >> 1 = 0x7F) > > -- > Dave Hylands > Vancouver, BC, Canada > http://www.DaveHylands.com/ > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users > > -- View this message in context: http://www.nabble.com/I2C-8-Bit-Address-Issue-tp15887840p16833262.html Sent from the Gumstix mailing list archive at Nabble.com. |