uint8_t distco_startMeasure() { i2c_size = 2; i2c_buf[0] = I2C_TX(DISTCO_I2C_ID); i2c_buf[1] = 0x01; return distco_transmit(); }
uint8_t distco_stop() { i2c_size = 2; i2c_buf[0] = I2C_TX(DISTCO_I2C_ID); i2c_buf[1] = 0x00; return distco_transmit(); }
uint8_t distco_transmitRC5(uint16_t rc5) { i2c_size = 4; i2c_buf[0] = I2C_TX(DISTCO_I2C_ID); i2c_buf[1] = 0x02; i2c_buf[2] = HIBYTE(rc5); i2c_buf[3] = LOBYTE(rc5); return distco_transmit(); }
char DS1672_Zero(void) { char t; char s; I2C_Init(90,1000000); I2C_Start(); t=I2C_TX(0xD0); if(t!=0) { if(t==1) Log_Error((FARROM*)"DS1672: Zero Address NACK\r\n"); if(t==2) Log_Error((FARROM*)"DS1672: Zero Address Timeout\r\n"); return t; } t=I2C_TX(1); if(t!=0) { if(t==1) Log_Error((FARROM*)"DS1672: Zero Postion NACK\r\n"); if(t==2) Log_Error((FARROM*)"DS1672: Zero Position Position Timeout\r\n"); } for(s=0;s<6;s++) { t=I2C_TX(0); if(t!=0) { if(t==1) Log_Error((FARROM*)"DS1672: TX NACK\r\n"); if(t==2) Log_Error((FARROM*)"DS1672: TX Timeout\r\n"); } } I2C_Stop(); }
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; }
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; }