uint8_t distco_update() { i2c_buf[1]=0xaf; i2c_buf[2]=0xfe; i2c_buf[3]=0xaf; i2c_buf[4]=0xfe; i2c_buf[5]=0xaf; i2c_buf[6]=0xfe; i2c_buf[7]=0xaf; i2c_buf[8]=0xfe; i2c_size = 9; i2c_buf[0] = I2C_RX(DISTCO_I2C_ID); if (!distco_transmit()) return 0; distco_distance[0] = i2c_buf[1]; distco_distance[1] = i2c_buf[2]; distco_distance[2] = i2c_buf[3]; distco_distance[3] = i2c_buf[4]; distco_distance[4] = i2c_buf[5]; distco_rc5_count = i2c_buf[6]; uint16_t cmd = MAKE_WORD(i2c_buf[7], i2c_buf[8]); if (cmd) distco_rc5_cmd=cmd; return 1; }
unsigned long DS1672_Value(void) { unsigned long value; int t; unsigned long v; I2C_Init(100,1000000); I2C_Start(); t=I2C_TX(0xD1); if(t!=0) return 0xffffffff; t=I2C_RX(); if(t==-1) return 0xffffffff; value=t; I2C_ACK(); t=I2C_RX(); if(t==-1) return 0xffffffff; v = t; value+=v<<8; I2C_ACK(); t=I2C_RX(); if(t==-1) return 0xffffffff; v = t; value+=v<<16; I2C_ACK(); t=I2C_RX(); if(t==-1) return 0xffffffff; v = t; value+=v<<24; I2C_NACK(); I2C_Stop(); return value; }
int DS1672_GetNextByte(void) { int t; I2C_Init(100,1000000); I2C_Start(); t=I2C_TX(DS1672_READ_ADDRESS); if(t!=0) { Log_Error((FARROM*)"DS1672: GetNextByte Error sending Address\r\n"); return -1; } t=I2C_RX(); if(t==-1) { Log_Error((FARROM*)"DS1672: GetNextByte Error receiving byte\r\n"); return -1; } I2C_NACK(); I2C_Stop(); return t; }