Привет! Сам только сегодня раскурил и получил данные от датчика.
В даташите есть диаграммы. Вот согласно им и дергаешь пином. Есть такое понятие как time slot. Все времена приведены на диаграмме и в таблице.
Что бы прочитать температуру, сначала нужно сказать датчику "эй ты, измерь температуру!", а потом "эй, ты, покажи, что измерил!"
Примерно так!
Код: Выделить всё
test = u8Presence ();
vOWWriteBiyte (SKIP_ROM); // отправили 0хСС
vOWWriteBiyte (CONVERT_T); // отправили 0х44 (сказали измерять)
test = u8Presence ();
vOWWriteBit (SKIP_ROM); // отправили 0хСС
vOWWriteBit (READ_SCRATCHPAD); // отправили 0хBE (сказали что сча будем читать решистры
// чтение данных
temp = u8OWReadBytes (); // ну а тут таймслот чтения регистров.
Если интересует только температура (2 байта), то вычитываешь их и в конце отправляешь Presence. Первым лезет младший бит.
Как можешь заметить, любое обращение к датчику начинается с Presence ();
Это вот эта фиговина.

Проваливаешь шину от 480 мкс до 960 мкс, переводишь работу пина на "вход" (про паузу между таймслотами не забудь) и читаешь. Если пришел нуль, то на шине кто-то висит и можешь работать дальше, иначе будет единица. Тоды пиши ошибку, мол датчик не исправен или не подключен.
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн