Beispiel #1
0
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;
}
Beispiel #2
0
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;

}
Beispiel #3
0
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;

}