Академический Документы
Профессиональный Документы
Культура Документы
1
После того, как с “языком” поработают “особисты”, можно будет “вычислить дыры и
щели”, через которые можно “просочиться”.
А вот и он, легок на помине.
Кто таков? Откуда родом?
“Микросхема цифрового термометра DS1820. Мать - интерфейс 1-Wire. Отец - фирма
Dallas”.
Опять буржуй. Опять перевоспитывать (русифицировать)…
У тебя с мозгами-то как? Амнезия (что за напасть такая …) имеет место быть?
“Так точно, имеет. Страдаю врожденным скудоумием, но в труде я неукротим как
торнадо. Только покажите место и задайте размеры – моментом траншею вырою”.
Ты, случайно, не ехидный?
“Что это такое? Не понимаю”.
Зато мне понятно: и в самом деле, у курицы мозгов больше.
А ну-ка открой черепную коробку, я гляну.
Да … 9 байтов оперативной памяти, 8 байтов ПЗУ и 2 байта EEPROM памяти это
далеко не гроссмейстер.
Ну ничего, доцента из тебя не получится, но на работягу (гегемона) вполне потянешь.
Дай мышцу пощупать.
Фантастишь!
Такие кадры нам очень нужны, а то шибко умных развелось выше нормы.
Так и норовят в белые воротнички залезть.
А кочегарить, траншеи рыть, двор мести, у горна стоять и т.д. кто будет?
Короче, хоть с мозгами у тебя и проблемы, но мускулатура и природная
“стахановость” уважение внушают.
С учетом рабоче – крестьянского происхождения, бормашину и выкручивание
конечностей применять не буду, но, на всякий случай, выпорю.
Это, по-любому, не помешает.
Баста. Партполитработа закончена и пора браться за настоящую работу.
Знакомлю широкую общественность с предметом детективного расследования.
5
Для начала, я буду ориентироваться именно на эту, простейшую последовательность
действий, причем, в случае применения всего одного датчика, соединенного с ПИКом
короткой (помехоустойчивой) линией.
Итак, “упираюсь” в систему команд.
Кстати, процедуру инициализации можно рассматривать как результат исполнения
“помощником” некой “технологической” команды, сформированной “мастером”.
Первым пунктом идет адресация к датчику (выбор датчика).
Для того чтобы стало понятным, какого именно рода должна быть первая, после
инициализации, команда, нужно “сходить на экскурсию” в “начинку” DS1820 и кое-что
прояснить.
К одной линии DQ может быть подключено до нескольких десятков датчиков DS1820.
Возникает вопрос: “Как активировать тот или иной датчик (адресоваться к тому или
иному датчику), ведь активным может быть только один”?
И в самом деле, если активными будут несколько датчиков, то ничего хорошего из
этого не выйдет.
Вопрос очень принципиальный, и его нужно решать в первую очередь (после
завершения процедуры инициализации).
Вывод: после завершения процедуры инициализации, должна начаться процедура
выбора конкретного датчика (какого именно, определяет конструктор).
Процедура выбора конкретного датчика достаточно “хитрая”, и в ее основе лежит
принцип (пока, в общем виде) сравнения результата соответствующих вычислений, с
контрольной суммой.
Если результат вычисления и контрольная сумма совпадают, то считается, что “связка
мастер-помощник” готова к дальнейшей работе, и ее можно продолжить.
Если имеет место быть несовпадение, то цикл сравнения либо повторяется до
получения совпадения, либо происходит блокировка устройства, либо выдается сигнал
тревоги, либо … (понапридумать можно много всякого).
Далее, в случае совпадения, “мастер”, после использования специальной команды,
передает в линию адрес устройства (код), после чего, до следующего импульса
сброса, на команды “мастера” будет “откликаться” только тот датчик, который имеет
такой адрес.
Так вот, в каждый DS1820, на заводе изготовителе, “намертво зашивается” байт кода
семейства (10h), 6 байтов серийного номера и байт контрольной суммы, причем, все
это “добро”, для каждого DS1820, строго “индивидуально” (повторений нет).
Куда зашивается?
В ПЗУ (постоянное запоминающее устройство).
После заводской прошивки ПЗУ, перепрограммировать его уже нельзя, и поэтому
указанные выше байты, как бы, “клеймят на веки вечные” конкретный DS1820,
вследствие чего он приобретает свой признак, по которому “мастер” сможет его
идентифицировать (выбрать из кучи).
Такой способ идентификации, хотя и достаточно хлопотен, но позволяет адресно
обратиться к любому датчику из числа подключенных к сигнальной линии DQ.
А если датчик один?
В этом случае, нужно применить специальную команду пропуска процедуры адресации
Skip ROM (см. ниже), но, фактически, речь идет не о пропуске процедуры адресации,
а о запуске простейшей процедуры адресации. Имейте это ввиду.
Обращаю Ваше внимание на то, что, в части касающейся ПЗУ, я не стал углубляться
в детали. Это произойдет позднее, по принципу “от простого к сложному”.
На данном этапе “въезда”, достаточно и общего представления.
Предположим, что процедура адресации благополучно завершилась.
Что дальше?
А дальше, “мастер” должен выдать команду на запуск процесса преобразования
температуры, подождать некоторое время, чтобы этот процесс завершился и (без учета
некоторых “формальностей”) считать этот результат из оперативной памяти DS1820.
Таким образом, DS1820, кроме ПЗУ, имеет в своем составе еще и некую область
оперативной памяти (по аналогии с ПИКами), в 8-битные регистры которой (9 штук)
либо записываются, либо из них считываются некие байты различной функциональности.
6
Кроме того, имеется “слабосильная” область EEPROM памяти (2 ячейки), в ячейки
которой можно либо записать байты из соответствующих регистров области оперативной
памяти, либо считать байты из ячеек в эти регистры (на рис. 4 показано стрелками).
Изначально, эта картинка может навести на грустные мысли, но спешу снова Вам
напомнить, а заодно и обрадовать: на первых порах, я буду работать только с одним
датчиком, подключенным к ПИКу при помощи короткой линии.
На практике, это означает то, что процедуру адресации можно упростить до уровня
примитива.
Для обеспечения этого, имеется специальная команда, о которой я упоминал выше.
Кроме того, я не буду задавать пределов температуры и не буду вычислять значение
температуры с точностью до 0,1 градуса Цельсия.
А раз это так, то речь идет о задействовании в программе всего 2-х регистров,
названия которых на рис. 4 выделены синим цветом.
С остальной памятью буду разбираться позже.
Что из себя представляют регистры старшего и младшего байтов температуры?
Это обычные 8-битные регистры оперативной памяти, в которые, после окончания
процедуры замера температуры, записываются байты (результаты) этого замера, и из
которых, впоследствии, их можно считать, например, с целью их дальнейшей
обработки и вывода на индикацию.
7
Старший байт температуры содержит в себе знак температуры (“+” или “-“).
Для того чтобы “извлечь” из младшего байта температуры число, отражающее
значение температуры, нужно:
1. Проанализировать состояние младшего бита байта.
Если бит №0=0, то этому соответствует ноль после запятой (… ,0), а если бит №0=1,
то этому соответствует пятерка после запятой (… ,5).
2. Разделить число, “лежащее” в регистре младшего байта температуры, на 2.
Например, для самой верхней строки таблицы: FAh = .250 : 2 = 125.
В конечном итоге, получается 125,0 градусов Цельсия.
Итак, первый “вираж” закончен.
Конечно, не густо, но “контуры” обозначились.
Захожу на второй, причем, с поправкой на упрощенный вариант разрабатываемого
устройства.
Теперь нужно, в общем виде, разобраться с командами.
Их достаточно много (11 штук), но, в соответствии с техническим заданием на
разработку, требуются не все, а только три.
Отдельная команда представляет собой один байт со строго заданным числовым
значением.
Приняв такого рода байт, DS1820 “конфигурирует” свою электронную “начинку” под
выполнение того действия, которое определяется числовым значением команды.
Итак, требуются следующие команды:
***********************************************************************************************************************************************************
Skip ROM (CCh). Эта команда позволяет пропустить процедуру адресации и тем самым
сэкономить время, в случае наличия только одного датчика.
***********************************************************************************************************************************************************
Convert T (44h). Эта команда запускает процесс преобразования температуры.
***********************************************************************************************************************************************************
Read Scratchpad (BEh). Эта команда позволяет считать, из области оперативной памяти,
результат замера температуры .
***********************************************************************************************************************************************************
Темно – красным цветом выделены общепринятые (стандартные) названия команд, а
синим цветом – их числовые значения (они “фигурируют” в тексте программы).
Ну и ладненько. Уже легче (и еще как! 3 это не 11).
С остальными командами целесообразно разобраться по мере приобретения
“матерости”.
Что дальше?
Дальше нужно разобраться, как передается бит и как принимается бит, причем, без
“привязки” к какой-то функциональности передаваемых или принимаемых байтов, в
состав которых они входят (в данном случае, биту не присуща функциональность).
При чтении “мастером” битов, вырабатываемых DS1820, циклы чтения битов формирует
“мастер”.
Цикл чтения бита “мастер” начинает импульсом низкого уровня длительностью
1…15 мкс.
Затем “мастер” должен освободить (отпустить) линию, чтобы уровень бита,
передаваемого DS1820, установился на линии.
По переходу из 1 в 0, DS1820 выдает на линию бит и запускает схему временной
задержки, которая определяет, как долго этот бит будет присутствовать на линии.
Это время находится в пределах 15…60 мкс.
Здесь кое-что нужно пояснить.
Если вывод бита (со стороны DS1820) происходит по стробу (переход от 1 к 0), то
при выводе, на линию DQ, бита с уровнем 1, уровень этого бита сможет установиться
на линии DQ только после прохождения импульса низкого уровня, вырабатываемого
“мастером” (низкий уровень “шунтирует” высокий).
Есть ли в этом признаки электрического конфликта (объединение выходов “мастера” и
“помощника”)?
Формально, есть, но фактически, нет, так как транзистор каскада с открытым стоком
(на рисунке обозначено как ОС) DS1820 закрыт, да и подтягивающий резистор
достаточно высокоомен.
9
Так что, этот так называемый “конфликт”, по факту, конфликтом не является (это как
слону дробинка).
И еще одно пояснение.
В части касающейся цикла приема “мастером” бита с нулевым уровнем, на рис. 7
разрисован случай наличия максимального интервала времени установки “помощником”
уровня нулевого бита на линии DQ (60 мкс.).
Реально же, этот интервал времени меньше.
Соответственно, интервал времени отпуска линии (1 за счет подтягивающего резистора)
будет больше того, который Вы видите в правой части нижней эпюры.
И последнее.
Для того чтобы на линии, которая всегда обладает некоторой емкостью,
гарантированно установился уровень бита, требуется некоторое время.
Поэтому, момент считывания уровня бита “мастером” должен отстоять как можно
дальше, но не более чем на 15 мкс., от строба (имеет место быть ориентировка на
минимальную продолжительность интервала времени установки уровня бита на линии).
Особенно это актуально для длинных линий, обладающих значительной емкостью.
10