0,0 → 1,91 |
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)); |
} |
|