OneWire Library
The OneWire library provides routines for communication via the Dallas OneWire protocol, e.g. with DS18x20 digital thermometer. OneWire is a Master/Slave protocol, and all communication cabling required is a single wire. OneWire enabled devices should have open collector drivers (with single pull-up resistor) on the shared data line.
Slave devices on the OneWire bus can even get their power supply from data line. For detailed schematic see device datasheet.
Some basic characteristics of this protocol are:
- single master system,
- low cost,
- low transfer rates (up to 16 kbps),
- fairly long distances (up to 300 meters),
- small data transfer packages.
Each OneWire device also has a unique 64-bit registration number (8-bit device type, 48-bit serial number and 8-bit CRC), so multiple slaves can co-exist on the same bus.

- Oscillator frequency Fosc needs to be at least 4MHz in order to use the routines with Dallas digital thermometers.
- This library implements time-based activities, so interrupts need to be disabled when using OneWire library.
Library Routines
Ow_Reset
Prototype |
unsigned int Ow_Reset(unsigned int *port, unsigned int pin); |
---|---|
Description |
Issues OneWire reset signal for DS18x20. |
Parameters |
|
Returns |
|
Requires |
Devices compliant with the Dallas OneWire protocol. |
Example |
// Issue Reset signal on One-Wire Bus connected to pin RF6 Ow_Reset(&PORTF,6); |
Notes |
None. |
Ow_Read
Prototype |
unsigned short Ow_Read(unsigned int *port, unsigned int pin); |
---|---|
Description |
Reads one byte of data via the OneWire bus. |
Parameters |
|
Returns |
Data read from an external device over the OneWire bus. |
Requires |
Devices compliant with the Dallas OneWire protocol. |
Example |
// Read a byte from the One-Wire Bus connected to pin RF6 unsigned short read_data; ... read_data = Ow_Read(&PORTF, 6); |
Notes |
None. |
Ow_Write
Prototype |
void Ow_Write(unsigned int *port, unsigned int pin, unsigned short data_); |
---|---|
Description |
Writes one byte of data via the OneWire bus. |
Parameters |
|
Returns |
Nothing. |
Requires |
Devices compliant with the Dallas OneWire protocol. |
Example |
// Send a byte to the One-Wire Bus connected to pin RF6 Ow_Write(&PORTF, 6, 0xCC); |
Notes |
None. |
What do you think about this topic ? Send us feedback!