This shows you the differences between two versions of the page.
|
devices:ds18b20 [2014/12/24 16:35] jkx [Default settings:] |
devices:ds18b20 [2014/12/24 16:47] (current) jkx [Debug] |
||
|---|---|---|---|
| Line 10: | Line 10: | ||
| #define OW_DDR DDRD | #define OW_DDR DDRD | ||
| </code> | </code> | ||
| + | |||
| + | The default setting for power supply is parasite. Just power the device through a 4.7k pull-up on pin DQ. You can change this in | ||
| + | __devices/ds18x20.c__ | ||
| + | |||
| + | <code> | ||
| + | int8_t ds18x20_read(struct packet_t *packet) { | ||
| + | uint16_t temperature; | ||
| + | uart_putstr_P(PSTR("ds18x20 read\r\n")); | ||
| + | DS18X20_start_meas(DS18X20_POWER_PARASITE,NULL); | ||
| + | _delay_ms(DS18B20_TCONV_12BIT); | ||
| + | DS18X20_read_decicelsius_single(DS18B20_FAMILY_CODE, &temperature); | ||
| + | |||
| + | return set_data_int16(packet, temperature); | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | ==== Debug ==== | ||
| + | * If you receive dumb values from a sensor, usually mean the bugOne can find this sensor. This can be a wiring error, or a wrong power mode (check parasite mode). | ||
| + | * If you receive 850 (85.0°), usually mean the bugOne found the sensor but was unable to read the value. This usually occurs with bad connexion, for example on a breadboard. I spent some time on this error, but it's always a hardware failure not a software bug. | ||