Dallas 1-Wire® devices are unique in that only one wire in addition to ground is needed to communicate with a device. Power supply and communications are handled through only one connection. To communicate with a Dallas 1-Wire device, only one general purpose I/O pin is needed.

Code Beispiel

Timing ist noch nicht getestet.


#define BUS_PORT PORTD
#define BUS_PIN PD0

/* Send one Byte */

bus_write(unsigned char data) {
  int mask = 0x80;
  do {
    if (mask&data) {
      // "1"
      BUS_PORT = 0x00;
      _delay_us(15);
      BUS_PORT = 0xff;
      _delay_us(45);
    } else {
      // "0"
      BUS_PORT = 0x00;
      _delay_us(60);
      BUS_PORT = 0xff;
    }
    mask >>= 1;
  } while (mask);
}

/* Read one Byte */

bus_read() {
  int i;
  for (i=0;i<8;i++) {
    BUS_PORT &= ~(1<<BUS_PIN);
    _delay_us(15);
    BUS_PORT |= (1<<BUS_PIN);

    DDRD &=
    if ()
  }
}

Links

http://www.atmel.com/dyn/resources/prod\_documents/doc2579.pdf
https://prof.hti.bfh.ch/uploads/media/Studienarbeit_1-Wire.pdf