Більш висока роздільна здатність може бути отримана, якщо виконати додаткові обчислення на основі значень COUNT_REMAІN (значення, що залишилося в лічильнику наприкінці виміру) і COUNT_PER_C (кількість імпульсів на один градус для даної температури), що доступні. Для обчислень потрібно взяти лічене значення температури і відкинути молодший біт. Отримане значення назвемо TEMP_READ. Тепер дійсне значення температури може бути обчислене по формулі:
TEMPERATURE=TEMP_READ-0.25+(COUNT_PER_C - COUNT_REMAIN)/COUNT_PER_C
У нашому випадку такий розрахунок дозволяє одержати дискретність представлення температури 0.1°C.
Особливості пам’яті пристрою Кожен екземпляр датчика має унікальний 48-бітний номер, записаний за допомогою лазера в ПЗП в процесі виробництва. Цей номер використовується для адресації пристроїв. Крім серійного номера в ПЗП утримується код сімейства і контрольна сума. Крім ПЗП датчик має проміжне ОЗП обсягом 8 байт, плюс два байти енергонезалежної пам'яті. Байти TH і TL являють собою температурні пороги, з якими порівнюються 8 біт кожного обмірюваного значення температури (молодший біт відкидається). За допомогою спеціальної команди можна організувати сигналізацію виходу температури за межі цих порогів. Якщо така функція не потрібна, байти TH і TL можна використовувати для збереження будь-яких даних користувача.
Особливості 1-провідного інтерфейсу Зчитування значення вимірюваної температури, а також передача команди початку перетворення й інших команд виробляється за допомогою 1-провідного інтерфейсу (1-WіreTM) Протокол, що використовується 1-провідним інтерфейсом, досить простий. У будь-який момент часу на 1-провідній шині можна виділити майстер, яким може бути мікропроцесор або комп'ютер, і підлеглий пристрій, у нашому випадку це мікросхема термометра. Оскільки в нас на шині присутні тільки майстер і всього один підлеглий пристрій, можна опустити все те, що зв'язано з адресацією пристроїв. У результаті потрібно знати лише протокол передачі байтів, що можуть бути командами або даними. 1-провідна шина є двонапрямленою. У кожного 1-провідного пристрою до шини підключений вхід приймача і вихід передавача з відкритим стоком. Відкритий стік дозволяє підключати до шини безліч пристроїв, забезпечуючи логіку "монтажне або". Генератор струму 5мкА забезпечує на вході 1-провідного пристрою низький логічний рівень, коли шина не підключенаОскільки лінія тактового сигналу відсутня, обмін є синхронним. Це означає, що в процесі обміну потрібно досить точно витримувати необхідні тимчасові співвідношення. 1-провідна шина оперує з TTL-рівнями, тобто логічна одиниця представлена рівнем напруги близько 5В, а логічний нуль - напругою біля 0В. У вихідному стані на лінії присутній рівень логічної одиниці, що забезпечується резисторомноміналом близько 5кОм. Ініціатором обміну по 1-провідній шині завжди виступає майстер. Усі пересилання починаються з процесу ініціалізації.
Ініціалізація виконується в наступній послідовності:
§ майстер посилає імпульс скидання (reset pulse) - сигнал низького рівня тривалістю не менш 480 мкс.
§ за імпульсом скидання випливає відповідь підлеглого пристрою (presence pulse) - сигнал низького рівня тривалістю 60 - 240 мкс, що генерується через 15 - 60 мкс після завершення імпульсу скидання.
Передача команди до термодатчика Відповідь підлеглого пристрою дає майстрові зрозуміти, що на шині присутній термометр і він готовий до обміну. Після того, як майстер знайшов відповідь, вона може передати термометру одну з команд. Передача ведеться шляхом формування майстром спеціальних тимчасових інтервалів (tіme slots). Кожен часовий інтервал служить для передачі одного біта. Першим передається молодший біт. Інтервал починається імпульсом низького рівня, тривалість якого лежить у межах 1 - 15 мкс. Оскільки перехід з одиниці в нуль менш чуттєвий до ємності шини (він формується відкритим транзистором, у той час як перехід з нуля в одиницю формується резистором), саме цей перехід використовують 1-провідні пристрої для синхронізації з майстром. У підлеглому пристрої запускається схема тимчасової затримки, що визначає момент зчитування даних. Номінальне значення затримки дорівнює 30 мкс, однак, воно може коливатися в межах 15 - 60 мкс. За імпульсом низького рівня випливає переданий біт. Він повинний утримуватися майстром на шині протягом 60 - 120 мкс від початку інтервалу. Часовий інтервал завершується переведенням шини в стан високого рівня на час не менш 1 мкс. Потрібно відзначити, що обмеження на цей час зверху не накладається. Аналогічним образом формуються тимчасові інтервали для всіх переданих бітів.
Основні команди, прийом даних Першою командою, що повинен передати майстер для датчика після ініціалізації, є одна з команд функцій ПЗП. Усього датчик має 5 команд функцій ПЗП:
- Read ROM [33h]. Ця команда дозволяє прочитати вміст ПЗП. У відповідь на цю команду датчик передає 8-бітний код сімейства (10h), потім 48-бітний серійний номер, а потім 8-бітну CRC для перевірки правильності прийнятої інформації.
- Match ROM [55h]. Ця команда дозволяє адресувати на шині конкретний термометр. Після цієї команди майстер повинний передати потрібний 64-бітний код, і тільки той термометр, що має такий код, буде "відгукуватися" до наступного імпульсу скидання.
- Skіp ROM [CCh]. Ця команда дозволяє пропустити процедуру порівняння серійного номера і тим самим заощадити час у системах, де на шині є один пристрій.
- Search ROM [F0h]. Ця досить складна у використанні команда дозволяє визначити серійні номери всіх термометрів, що є присутнім на шині.
- Alarm Search [ECh]. Ця команда аналогічна попередійї, але "відгукуватися" будуть тільки ті термометри, у яких результат останнього виміру температури виходить за встановлені межі TH і TL.
При прийомі даних від підлеглого пристрою тимчасові інтервали для прийнятих бітів формує майстер. Інтервал починається імпульсом низького рівня тривалістю 1 - 15 мкс. Потім майстер повинний звільнити шину, щоб дати можливість термометрові вивести біт даних. По переходу з одиниці в нуль датчик виводить на шину біт даних і запускає схему тимчасової затримки, що визначає, як довго біт даних буде присутній на шині. Цей час лежить у межах 15 - 60 мкс. Для того щоб дані на шині, що завжди має деяку ємність, гарантовано установилися, потрібен певний час (не більше ніж на 15 мкс від початку тимчасового інтервалу)
Перевірка результату прийому даних на помилки Прийом байта починається з молодшого біта. Спочатку йде байт коду сімейства. За кодом сімейства йде 6 байт серійного номера, починаючи з молодшого. Потім йде байт контрольної суми (CRC). В обчисленні байта контрольної суми беруть участь перші 7 байт, або 56 переданих біт. Для обчислення використовується наступний поліном: CRC = X8+X5+X4+1 Після прийому даних майстер повинний обчислити контрольну суму і порівняти значення, що вийшло, з переданою CRC. Якщо ці значення збігаються, то прийом даних пройшов без помилок.