This commit is contained in:
Олег Бородин
2024-08-27 11:22:00 +02:00
parent bcc15559c2
commit 4f3d8cfda4
4 changed files with 318 additions and 234 deletions

23
temp.c
View File

@@ -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;
}