44 result = !OW_GET_PIN_STATE();
51 result = OW_GET_PIN_STATE();
59 write_bit(uint8_t bit)
112 bit = OW_GET_PIN_STATE();
138 for(i = 0; i < 8; i++) {
140 result += (bit << i);
149 write_byte(uint8_t byte)
153 for(i = 0; i < 8; i++) {
154 write_bit((byte >> i) & 1);
164 ds18b20_get_temp(
float *temp)
169 if(ds18b20_probe()) {
171 write_byte(DS18B20_COMMAND_SKIP_ROM);
174 write_byte(DS18B20_COMMAND_START_CONVERSION);
183 while(!OW_GET_PIN_STATE()) {
197 (void)ds18b20_probe();
198 write_byte(DS18B20_COMMAND_SKIP_ROM);
199 write_byte(DS18B20_COMMAND_READ_SCRATCH_PAD);
200 uint8_t i, sp_arr[9];
201 for(i = 0; i < 9; i++) {
202 sp_arr[i] = read_byte();
206 uint8_t crc_cal = crc8_ds18b20(sp_arr, 8);
208 if(crc_cal != sp_arr[8]) {
215 uint8_t temp_lsb = sp_arr[0];
216 uint8_t temp_msb = sp_arr[1];
218 temp_res = (int16_t)temp_msb << 8 | temp_lsb;
219 *temp = (float)temp_res * 0.0625;
231 crc8_ds18b20(uint8_t *buf, uint8_t buf_len)
236 for(i = 0; i < buf_len; i++) {
237 result = result ^ buf[i];
238 for(b = 1; b < 9; b++) {
240 result = (result >> 1) ^ 0x8C;
242 result = result >> 1;
void clock_delay_msec(uint16_t howlong)
Delay up to 65535 milliseconds.
static volatile clock_time_t count
These routines define the AVR-specific calls declared in /core/sys/clock.h CLOCK_SECOND is the number...
void clock_delay_usec(uint16_t dt)
Delay a given number of microseconds.