void SHT25_soft_reset()
{
i2c_start(); // Start condition
i2c_write(0x80); // Device address
i2c_write(0xFE); // Device command
i2c_stop(); // Stop condition
}
unsigned int8 SHT25_setup(unsigned int8 setup_reg ) // writes to status register and returns its value
{
unsigned int8 reg;
i2c_start(); // Start condition
i2c_write(SHT25_ADDR); // Device address
i2c_write(0xE7); // Device command
i2c_start(); // Start condition
i2c_write(SHT25_ADDR+1); // Device address
reg=i2c_read(0); // Read status actual status register
reg = (reg & 0x3A) | setup_reg;
i2c_start(); // Start condition
i2c_write(SHT25_ADDR); // Device address
i2c_write(0xE6); // Write to status register
i2c_write(reg); // Device command
i2c_stop(); // Stop condition
delay_ms(10);
i2c_start(); // Start condition
i2c_write(SHT25_ADDR); // Device address
i2c_write(0xE7); // Device command
i2c_start(); // Start condition
i2c_write(SHT25_ADDR+1); // Device address
reg=i2c_read(0); // Read status actual status register
return (reg);
}
float SHT25_get_temp()
{
unsigned int8 MSB, LSB, Check;
unsigned int16 data;
i2c_start();
i2c_write(SHT25_ADDR);
i2c_write(0xE3);
i2c_stop();
delay_ms(100);
i2c_start();
i2c_write(SHT25_ADDR+1);
MSB=i2c_read(1);
LSB=i2c_read(1);
Check=i2c_read(0);
i2c_stop();
LSB = LSB >> 2; // trow out status bits
data = (((unsigned int16) MSB << 8) + (LSB << 4));
return(-46.85 + 175.72*((float)data/0xFFFF));
}
float SHT25_get_hum()
{
unsigned int8 MSB, LSB, Check;
unsigned int16 data;
i2c_start(); //RH
i2c_write(SHT25_ADDR);
i2c_write(0xE5);
delay_ms(100);
i2c_start();
i2c_write(SHT25_ADDR+1);
MSB=i2c_read(1);
LSB=i2c_read(1);
Check=i2c_read(0);
i2c_stop();
LSB = LSB >> 2; // trow out status bits
data = (((unsigned int16) MSB << 8) + (LSB << 4) );
return( -6.0 + 125.0*((float)data/0xFFFF));
}