18 #include <util/delay.h>
19 #include <avr/interrupt.h>
20 #include <util/atomic.h>
31 if (parasitic_power) {
33 uint8_t sreg_tmp=SREG; cli();
47 uint8_t scratchpad[9];
53 return ONEWIRE_CRC_ERROR;
56 temp = ((int16_t)scratchpad[1] << 8) | scratchpad[0];
59 temp = (temp * 10) >> 4;
66 uint8_t scratchpad[9];
72 return ONEWIRE_CRC_ERROR;
75 temp = ((int16_t)scratchpad[1] << 8) | scratchpad[0];
80 temp = temp - 4 + (16-scratchpad[6]);
83 temp = (temp * 10) >> 4;
114 if (parasitic_power) {
116 uint8_t sreg_tmp=SREG; cli();
125 ONEWIRE_STRONG_PU_OFF
uint8_t onewire_reset(void)
OneWire reset.
uint8_t ds18S20_read_temp(int16_t *temperature)
Read temperature from DS18S20 (9 bit + enhanced resolution, effective 12 bits)
void onewire_write_byte(uint8_t data)
write one byte
uint8_t onewire_crc(const uint8_t *data, uint8_t cnt)
calculate CRC over data array, fast version, 0.3ms for 8 bytes @1MHz
void ds18B20_write_scratchpad(int8_t th, int8_t tl, uint8_t config)
write th, tl and configuration of DS18B20
uint8_t ds18x20_convert_t(uint8_t parasitic_power)
start temperature conversion
uint8_t onewire_read_bit(void)
read one bit from bus
uint8_t onewire_read_byte(void)
read one byte
void ds18x20_copy_scratchpad(uint8_t parasitic_power)
copy scratchpad to EEPROM, busy waiting (10ms),
void ds18S20_write_scratchpad(int8_t th, int8_t tl)
write th and tl of DS18S20
uint8_t ds18B20_read_temp(int16_t *temperature)
Read temperature from DS18B20 (12 bit resolution)
uint8_t ds18x20_read_power_supply(void)
read power supply
void ds18x20_recall_E2(void)
copy EEPROM to scratchpad, busy waiting (1ms)
void ds18x20_read_scratchpad(uint8_t *buffer)
Read complete scratchpad of DS18x20 (9 bytes)