#include #include #include #include #include #include #include //#include #include //FIXME #ifndef I2C_SLAVE #define I2C_SLAVE 0x0703 #endif int main () { int file; if ((file = open("/dev/i2c-0", O_RDWR)) < 0) { printf("Error, could not open i2c device\n"); exit(-1); } /* slave addres is 0b100101 */ int addr = 0x4d; /* set this to the I2C address */ /* set the I2C slave address */ if (ioctl(file, I2C_SLAVE, addr) < 0) { printf("Error, I2C_SLAVE ioctl error\n"); exit(-1); } printf ("Made it past setting slave address\n"); #if 0 char write_data[] = "\x23\x53\x23\x23"; if ((count = write(file, write_data, sizeof(write_data))) != sizeof(write_data)) { printf("Error, only wrote %i bytes, expected %i bytes\n", count, sizeof(write_data)); exit(-1); } #endif unsigned char read_data[2]; unsigned short read_value; float read_value_v; int count; count = read(file, read_data, 2); printf("read %i bytes, 0 = 0x%x, 1 = 0x%x\n", count, read_data[0], read_data[1]); read_value = read_data[0] << 8 | read_data[1]; read_value_v = (((float)read_value)/4096) * 3.3; printf("read_value = 0x%x\n", read_value); printf("read_value_v = %f volts\n", read_value_v); return 0; }