уються ключі, АЦП, термометри, годинник реального часу, цифрові потенціометри. До речі, такий же протокол обміну мають і цифрові ключі IButton (або Touch Memory), які зараз широко використовуються в системах обмеження доступу. p> Протокол, який використовується 1-провідним інтерфейсом, досить простий. У будь-який момент часу на 1-провідний шині можна виділити пристрій-майстер, яким може бути мікропроцесор або комп'ютер, і підлеглий пристрій, в нашому випадку це мікросхема термометра. Так як у нас на шині присутні тільки майстер і всього одне підлеглий пристрій, можна опустити все те, що пов'язано з адресацією пристроїв. У результаті потрібно знати лише протокол передачі байтів, які можуть бути командами або даними. p> Спочатку розглянемо апаратну конфігурацію. 1-провідна шина є двобічної. На рис. 4 показана апаратна конфігурація інтерфейсної частини DS18S20 і майстри шини. У кожного 1-провідного пристрою до шини підключений вхід приймача і вихід передавача з відкритим стоком. Відкритий сток дозволяє підключати до шини безліч пристроїв, забезпечуючи логіку В«монтажне абоВ». Генератор струму 5мкА забезпечує на вході 1-провідного пристрою низький логічний рівень, коли шина не підключена. Так як лінія тактового сигналу відсутня, обмін є синхронним. Це означає, що в процесі обміну потрібно досить точно витримувати необхідні тимчасові співвідношення.
В
1-провідна шина оперує з TTL-рівнями, тобто логічна одиниця представлена ​​рівнем напруги близько 5В, а логічний нуль - напругою поблизу 0В. У початковому стані на лінії присутній рівень логічної одиниці, який забезпечується підтягуючим резистором номіналом близько 5ком. p> Ініціатором обміну по 1-провідний шині завжди виступає майстер. Всі пересилання починаються з процесу ініціалізації. Ініціалізація проводиться в такій послідовності
В
Майстер посилає імпульс скидання (reset pulse) - сигнал низького рівня тривалістю не менше 480 мкс.
За імпульсом скидання слід відповідь підлеглого пристрою (presence pulse) - сигнал низького рівня тривалістю 60 - 240 мкс, який генерується через 15 - 60 мкс після завершення імпульсу скидання.
Відповідь підлеглого пристрою дає майстру зрозуміти, що на шині присутній термометр і він готовий до обміну. Після того, як майстер виявив відповідь, він може передати термометру одну з команд. Передача ведеться шляхом формування майстром спеціальних тимчасових інтервалів (time slots). Кожен часовий інтервал служить для передачі одного біта. Першим передається молодший біт. Інтервал починається імпульсом низького рівня, тривалість якого лежить в межах 1 - 15 мкс. Оскільки перехід з одиниці в нуль менш чутливий до ємності шини (він формується відкритим транзистором, в той час як перехід з нуля в одиницю формується підтягуючим резистором), саме цей перехід використовують 1-провідні пристрої для синхронізації з майстром. У підлеглому пристрої запускається схема тимчасової затримки, яка визначає момент зчитування даних. Номінальне значення затримки дорівнює 30 мкс, однак, воно може коливатися в межах 15 - 60 мкс. За імпульсом низького рівня слід переданий біт. Він повинен утримуватися майстром на шині протягом 60 - 120 мкс від початку інтервалу. Часовий інтервал завершується переведенням шини в стан високого рівня на час не менше 1 мкс. Потрібно відзначити, що обмеження на цей час зверху не накладається. Аналогічним чином формуються часові інтервали для всіх переданих бітів
В
Першою командою, яку повинен передати майстер для DS18S20 після ініціалізації, є одна з команд функцій ПЗУ. Всього DS18S20 має 5 команд функцій ПЗУ:
Read ROM [33h]. Ця команда дозволяє прочитати вміст ПЗУ. У відповідь на цю команду DS18S20 передає 8-бітний код сімейства (10h), потім 48-бітний серійний номер, а потім 8-бітну CRC для перевірки правильності прийнятої інформації.
Match ROM [55h]. Ця команда дозволяє адресувати на шині конкретний термометр. Після цієї команди майстер повинен передати потрібний 64-бітний код, і лише той термометр, який має такий код, буде В«відгукуватисяВ» до наступного імпульсу скидання.
Skip ROM [CCh]. Ця команда дозволяє пропустити процедуру порівняння серійного номера і тим самим заощадити час у системах, де на шині є всього один пристрій.
Search ROM [F0h]. Ця досить складна у використанні команда дозволяє визначити серійні номери всіх термометрів, присутніх на шині.
Alarm Search [ECh]. Ця команда аналогічна попередньої, але В«відгукуватисяВ» будуть тільки ті термометри, у яких результат останнього вимірювання температури виходить за встановлені межі TH і TL.
Оскільки у нас всього один пристрій, найбільш придатною для нас функцією є функція Skip ROM. Крім неї ще може бути корисною функція Read ROM, яка дозволяє ідентифікувати підключене на шину пристрій за його кодом сімейства і серійним номером. p> Прийнявши команду Read ROM, DS18S20 буде готовий передати 64-бі...