update
This commit is contained in:
23
temp.c
23
temp.c
@@ -12,33 +12,26 @@ uint8_t ds18b20_reset() {
|
||||
uint8_t error;
|
||||
REG_SETDOWN_BIT(DS18B20_PORT, DS18B20_PB);
|
||||
REG_SETUP_BIT(DS18B20_DDR, DS18B20_PB);
|
||||
_delay_us(480);
|
||||
cli();
|
||||
_delay_us(340);
|
||||
REG_SETDOWN_BIT(DS18B20_DDR, DS18B20_PB);
|
||||
_delay_us(60);
|
||||
sei();
|
||||
_delay_us(64);
|
||||
error = REG_BIT_VALUE(DS18B20_PIN, DS18B20_PB);
|
||||
_delay_us(420);
|
||||
|
||||
|
||||
_delay_us(320);
|
||||
return error;
|
||||
}
|
||||
|
||||
void ds18b20_write_bit(uint8_t bit) {
|
||||
cli();
|
||||
REG_SETDOWN_BIT(DS18B20_PORT, DS18B20_PB);
|
||||
REG_SETUP_BIT(DS18B20_DDR, DS18B20_PB);
|
||||
_delay_us(1);
|
||||
if (bit) {
|
||||
REG_SETDOWN_BIT(DS18B20_DDR, DS18B20_PB);
|
||||
}
|
||||
_delay_us(60);
|
||||
_delay_us(40);
|
||||
REG_SETDOWN_BIT(DS18B20_DDR, DS18B20_PB);
|
||||
sei();
|
||||
}
|
||||
|
||||
uint8_t ds18b20_read_bit(void) {
|
||||
cli();
|
||||
uint8_t bit = 0x00;
|
||||
REG_SETDOWN_BIT(DS18B20_PORT, DS18B20_PB);
|
||||
REG_SETUP_BIT(DS18B20_DDR, DS18B20_PB);
|
||||
@@ -49,7 +42,6 @@ uint8_t ds18b20_read_bit(void) {
|
||||
bit = 0x01;
|
||||
}
|
||||
_delay_us(45);
|
||||
sei();
|
||||
return bit;
|
||||
}
|
||||
|
||||
@@ -70,10 +62,11 @@ uint8_t ds18b20_read_byte(void) {
|
||||
return byte;
|
||||
}
|
||||
|
||||
float ds18b20_get_temp() {
|
||||
#define TEMP_MEASURE_SCALE 63
|
||||
uint16_t ds18b20_get_temp() {
|
||||
uint8_t ltemp;
|
||||
uint8_t htemp;
|
||||
float temp = 0.0F;
|
||||
uint16_t temp = 0;
|
||||
|
||||
ds18b20_reset();
|
||||
ds18b20_write_byte(DS18B20_CMD_SKIPROM);
|
||||
@@ -88,6 +81,6 @@ float ds18b20_get_temp() {
|
||||
ltemp = ds18b20_read_byte();
|
||||
htemp = ds18b20_read_byte();
|
||||
|
||||
temp = ((htemp << 8) + ltemp) * 0.0625F;
|
||||
temp = (((htemp << 8) | ltemp) * TEMP_MEASURE_SCALE) / 10;
|
||||
return temp;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user