Битный идентификационный код.
Этот код, как отмечалось ранее, необходим для идентификации каждого устройства на линии в системах многоточечного измерения температуры.
Формат этой памяти такой:
Младшие 8 бит отводятся для обозначения семейства, и содержат значение 0х28.Следующие 48 бит содержат уникальный серийный номер устройства. Самый старший байт содержит значение контрольной суммы CRC, рассчитываемой для младших 56 бит ROM-памяти.
Организация памяти.
Память датчика состоит из пространства памяти блокнотного типа (Scratchpad) и EEPROM-памяти для хранения данных конфигурации и значений регистров верхнего и нижнего порогов сигнала тревоги. При выключении питания данные байта 2, 3 и 4 сохраняют свое значение в EEPROM. Ну а при включении, значение в них остаются неизменными. Байт 0 и 1 содержат значение преобразованной температуры, байты 5, 6, 7 зарезервированы для внутреннего использования и не могут быть доступны пользователю для его нужд.
Следует отметить, что если функция термостата не используется, то регистры Th и Tl могут использоваться как память общего назначения – в них можно хранить любую информацию.
Данные записываются в байты 2, 3 и 4 начиная с младшего бита байта 2 при помощи команды Write Scratchpad [4Eh]. Для проверки целостности записанных данных, можно их прочитать, для чего необходимо передать датчику команду Read Scratchpad [BEh], после чего ведущее устройство должно принимать данные начиная с младшего бита байта 0.
Для сохранения данных старшего, младшего регистров термостата а так же регистра конфигурации в EEPROM-памяти, ведущее устройство должно передать датчику команду Copy Scratchpad [48h].
Как отмечалось ранее, данные, уже записанные в EEPROM, при выключении питания сохраняются. Но при включении питания из соответствующих EEPROM-ячеек значения автоматически загружаются в соответствующие регистры памяти scratchpad.
Кроме всего, данные, записанные в EEPROM, в любое время могут быть перезаписаны в scratchpad-память. Это необходимо например для того, когда вы изменили конфигурацию в процессе работы, а потом вам надо встать на «штатный режим работы», т.е. вернуть ту конфигурацию работы, которая была до изменения содержимого регистров памяти scratchpad. Вот собственно для этого ведущее устройство должно передать датчику команду Recall E2 [B8h].
Регистр конфигурации.
В регистре конфигурации пользователем могут определяться только 2 бита: R0 и R1. Эти биты определяют разрешение преобразования температуры, и по умолчанию установлены в 0, что и определяет изначальную настройку на 9-битное разрешение преобразования.
Все возможные конфигурации этих битов и соответствующие разрешения представлены в таблице ниже. Следует отметить, что чем больше разрешение преобразования, тем больше время преобразования, например, для 12-битного разрешение время преобразования составляет 750мс (макс.).
Последовательность операций для обмена.
Каждый раз при обращении управляющей системы к датчику должна быть соблюдена следующая последовательность действий:
1) Инициализация;
2) Команда ROM (за которым следует необходимый обмен данными);
3) Функциональная команда датчика (за которой следует необходимый обмен данными).
Если какой либо шаг при обращении к датчику отсутствует – датчик не будет реагировать. Исключение составляют команды Search ROM [F0h] и Alarm Search [ECh], после их выполнения мастер должен вернуться к первому шагу управляющей последовательности.
Итак. Все транзакции начинаются с инициализации. Эта операция сопровождается выработкой ведущим устройством импульса сброса, на который ведомые устройства (в данном случае датчик(-и)) передают ведущему импульс присутствия, которые дают ему знать, что датчики подключены и готовы к работе.
Вообще интерфейсная шина 1-Wire, реализуемая в датчике, определяет несколько типов сигналов на линии данных: импульс сброса, импульс присутствия, запись 0, запись 1, чтение 0, чтение 1. Все эти операции реализует ведущее устройство, за исключением импульса присутствия. Его формирует только датчик(-и).
Итак, для начала ведущее устройство переходит в режим передатчика и устанавливает линию DQ в 0 на время не менее 480мкс (выделено жирным черным цветом). Это сбрасывает датчик. Затем линию необходимо отпустить, и перевести ведущее устройство в режим приемника, при этом подтягивающий резистор установит линию данных в высокий логический уровень (выделено тонким черным цветом). После того, как датчик почует нарастающий фронт, датчик выждет время 15-60мкс и своим аппаратным интерфейсом сбросит линию данных в 0, и будет ее держать в течение 60-240мкс. По истечении этого времени датчик отпустит линию и она установится в уровень логической 1 в течение не менее 480мкс после обнаружения датчиком импульса сброса.
Команды.
ROM-команды.
Эти команды должны следовать за последовательностью инициализации и содержат инструкции поиска соответствующего датчика и т.д. Разрядность каждой команды 8бит. После выполнения соответствующей команды можно передать функциональную команду датчику.
SEARCH ROM [F0h] | Когда система первоначально подключена, она должна распознать все подключенные к шине устройства. Для этого эта команда. Но, поскольку у нас всего лишь один датчик, пользоваться этой командой мы не будем. |
READ ROM [33h] | Эта команда используется только тогда, когда на шине имеется лишь один датчик. Это позволяет ведущему устройству считать содержимое 64 бит ROM-памяти не используя команду ее поиска. А если же вы попробуете использовать эту команду при подключенном количестве датчиков, более 1, все они начнут передавать содержимое этой памяти, что приведет к нежелательным последствиям. |
MATCH ROM [55h] | Это команда соответствия ROM. Мастер выпускает 64 бита соответствующей памяти ROM подключенного к шине датчика, и там уже определяется, что с ним делать (измерить температуру, и т.д.). Другие датчики на шине будут в это время ждать своей очереди. |
SKIP ROM [CCh] | Это команда пропуска ROM. Не принимает в расчет адрес какого-либо конкретного датчика на шине, а обращается сразу ко всем. После этой команды, можно выдать, например, команду преобразования температуры, и все датчики начнут преобразование. Однако вывести команду чтения памяти после вызова этой команды приведет к непредсказуемым результатам (потому что сразу все датчики будут передавать данные). Значит, только при одном подключенном датчике возможна такая ситуация. |
ALARM SEARCH [ECh] | Эта команда идентична первой в этой таблице за исключением того, что осуществляет поиск датчиков на шине с установленным флагом тревоги. |
Функциональные команды.
Эти команды осуществляют функциональные операции каких либо процессов, например, запуск операции преобразования температуры, копирование памяти и т.д. Всего команд 6, разрядность каждой 8бит.
CONVERT T [44h] | Запуск преобразования температуры. После выполнения этой команды 2-байтные данные заносятся в регистр температуры. |
WRITE SCRATCHPAD [4Eh] | Записывает данные в регистры 2-4 начиная со второго, младшим битом вперед. Во время передачи данные в три регистра необходимо следить, чтобы мастер не сбросил датчики, потому что возможна потеря данных. |
READ SCRATCHPAD [BEh] | Инициирует процесс передачи данных всех регистров памяти scratchpad, начиная с младшего бита байта 0 и заканчивая старшим битом байта 8 (CRC). |
COPY SCRATCHPAD [48h] | Эта команда копирует содержимое регистров байта 2, 3 и 4 в соответствующие EEPROM-ячейки. |
RECALL E2 [B8h] | Эта команда копирует данные из EEPROM в соответствующие места в блокнотной памяти scratchpad. Как отмечалось ранее, при включении питания эта операция происходит автоматически. |
READ POWER SUPPLY [B4h] | Эта команда необходима для предоставления ведущему устройству информации о типе источника питания, который используется для питания датчика. При чтении временного слота датчик будет отвечать 0 если он питается паразитным способом, или 1-цей, если от внешнего источника питания. |
Принципиальная схема устройства:
LCD |
Atmega 128 |
В предлженной схеме текстовый дисплей подключается к порту С: вывод порта РС2 - к входу RS дисплея, PC3 – к EN, PC4 - к D4, PC5 - D5, PC6- к D6, PC7- к D7. Вывод датчика температуры подключен к выводу РВ0. Передача данных/команд в дисплей выплолняется потетрадно. Т.К. выводы старших разрядов в данной схеме не используется, к ним подведена земля ( логический ноль). Всвязи с тем, что дисплей работает только на прием информации из микроконтроллера, на входе R|W подает логический ноль (земля). Потенциометр R43 используется для изменения яркости изображения на экране.
Алгоритм
Дата добавления: 2016-12-27; просмотров: 1964;