Программирование MCS51 iButton: описание протокола, электронный замок на ключах-таблетках Wed, December 11 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


iButton: описание протокола, электронный замок на ключах-таблетках Печать
Добавил(а) microsin   

Статья была опубликована в журнале "Радио" 2001, № 2,3.

Электронный замок на ключах - "таблетках" iButton

В статье использована документация фирмы Dallas Semiconductor - Книга Стандартов iButton, техническое описание DS1990A (Serial Number iButton) и указания по применению №74 (Application Note 74: Reading and Writing iButtons via Serial Interfaces).

Электронныйзамокнаключах - "таблетках" iButton
Основныепринципыработы iButton фирмы Dallas Semiconductor
Технология
Протокол
Синхронизация
Передача данных
Обзорразновидностей iButton фирмы Dallas Semiconductor
Регистрационный номер, записанный в ПЗУ (ROM)
Типы устройств iButton
Электрические стандарты и характеристики iButton
Интерфейс 1-Wire, временнЫе диаграммы
Интерфейс 1-Wire, электрические параметры
Система команд DS1990A
Генерирование CRC
Электронный замок
Основные особенности
Программирование мастер-ключа, очистка памяти, установка времени удержания соленоида
Программирование ключей
Описание принципиальной схемы
Литература

1. Основные принципы работы iButton фирмы Dallas Semiconductor

1.1. Технология

iButton - это просто микросхема, заключённая в стандартный круглый корпус из нержавеющей стали, диаметром 16.3 мм. Прочный корпус очень устойчив к воздействию ударов, грязи и влажности. iButton MicroCan (название стандарта корпуса) имеет диаметр 16.3 мм. Имеется две стандартные толщины: 3.1 мм (версия F3) и 5.9 мм (версия F5). Устройства, запитываемые от master через линию данных, поставляются в обоих типах корпусов. Все другие устройства поставляются только в корпусах MicroCan толщиной 5.9 мм. На рис. 1-1 показаны чертежи корпусов обоих версий. Поскольку крышки у всех версий одинаковы, то для всех применяется одна и та же считывающая чашка. Кромка корпуса MicroCan позволяет удобно его закреплять в держателях. Более полно размеры, внешний вид и гравировку корпуса MicroCan можно увидеть в Книге Стандартов iButton фирмы Dallas Semiconductor, часть 3.

package1.jpg

package2.jpg

Рис. 1-1: Корпус iButton (размеры указаны в миллиметрах).

Корпус состоит из двух электрически изолированных друг от друга частей, являющихся контактами, через которые микросхема соединяется с внешним миром. Таким образом, образуется очень недорогой (в смысле использования аппаратных ресурсов считывающей аппаратуры) и надёжный интерфейс - один провод данных и один общий провод. Энергия, необходимая для обмена информацией и работы микросхемы в корпусе, берётся от провода данных. На рис. 1-2 показано общее внутреннее устройство iButton.

block-diagram.jpg

Рис. 1-2: Блочная диаграмма iButton.

Внутренняя микросхема изготовлена по технологии CMOS (КМОП), и в состоянии ожидания основной ток потребления - только ток утечки (который для CMOS очень мал), что позволяет использовать для хранения перезаписываемых данных внутри iButton собственный маломощный элемент питания. Для сохранения энергопотребления на предельно низком уровне во время состояний активности (чтение данных, например), а также для совместимости с существующими сериями микросхем логики и микропроцессорами, линия данных в iButton выполнена как в выход с открытым стоком (см. рис. 1-3).

interface1.jpg

Рис. 1-3: Внутренний интерфейс данных iButton.

Для нормальной работы с внешней логикой типа CMOS нужен только нагрузочный резистор 5 кОм, подсоединённый к плюсу питания VDD (5 вольт) и к выходу обычного двунаправленного порта с открытым стоком (см. рис. 1-4).

interface2.jpg

Рис. 1-4: Узел мастера шины (двунаправленный порт с открытым стоком).

Если вход и выход процессора используют разные выводы, то их подключают, как показано на рис. 1-5.  Выход, подключенный на рисунке к базе транзистора, должен быть обычным двухтактным либо с внутренним нагрузочным резистором.

interface3.jpg

Рис. 1-5: Узел мастера шины с раздельными входным и выходным портами.

1.2. Протокол

Для простого аппаратного исполнения iButton, описанного выше, используется специальный, оптимизированный протокол, позволяющий осуществлять двунаправленный обмен данными. Протокол носит название 1-Wire. Последовательная передача осуществляется в полудуплексном режиме (т. е. либо приём, либо передача), внутри дискретно определённых временнЫх интервалов, называемых тайм-слотами. Микроконтроллер (master устройство), подключенный к считывающей чашке, всегда инициирует передачу с помощью посылки командного слова на прикладываемый к чашке iButton (он играет роль подчинённого, или slave устройства). К шине может быть подключено несколько slave-устройств. Подобно электрическим вилке и розетке, которые определяют потребитель и источник электричества, контактное считывающее устройство в виде чашки является атрибутом master-устройства (которое, кстати, во многих случаях служит источником энергии для iButton), а круглая металлическая "таблетка" iButton является признаком slave-устройства. Такое точное разделение позволяет автоматически избежать конфликтов типа соединения двух master-устройств.

Команды и данные посылаются бит за битом и собираются в байты, причём вначале передаётся наименее значащий бит LSB (Least Significant Bit). Синхронизация master и slave происходит по спадающему срезу сигнала, когда master замыкает стоком выходного транзистора порта линию данных на провод земли. Через определённое время после среза сигнала происходит анализ (выборка) состояния данных на линии (лог. 0 или лог. 1) для получения одного бита информации. В зависимости от направления передачи информации в данный момент эту выборку делает либо устройство master, либо устройство slave. Этот метод обмена информацией называют передачей данных в тайм-слотах. Каждый тайм-слот отсчитывается независимо от другого, и в обмене данными могут иметь место паузы без возникновения ошибок. Рис. 1-6 показывает основные характеристики такого обмена данными.

protocol1.jpg

Рис. 1-6: Передача данных в тайм-слотах.

1.3. Синхронизация

Почти сразу после присоединения к считывающему устройству (через несколько микросекунд) slave-устройство iButton выдаёт на линию импульс низкого уровня, чтобы сказать устройству master, что оно на линии и ожидаёт получения команды. Этот сигнал называется presence pulse (импульс присутствия, далее просто presence). Master может также давать запрос на iButton с целью получения presence, путём выдачи на iButton специального импульса, называемого импульсом сброса (reset pulse, далее просто reset). Если iButton принял reset или если он был отсоединён от считывающего устройства, он будет анализировать линию данных, и как только линия снова достигнет высокого уровня, iButton сгенерирует presence. Полная последовательность импульсов reset и presence показана на рис. 1-7.

protocol2.jpg

Рис. 1-7: Импульсы RESET и PRESENCE.

1.4. Передача данных

После выдачи presence iButton ожидает получения команды. Любая команда записывается в iButton с помощью последовательности тайм-слотов, записывающих в iButton биты 1 и 0. Такая последовательность создаёт полный байт команды.

Передача данных в обратном направлении (чтение iButton) использует те же самые временнЫе правила для представления 0 или 1. Поскольку iButton разработано как slave-устройство, то оно оставляет устройству master определять начало каждого тайм-слота. Чтобы произвести чтение iButton, master для чтения одного бита данных просто генерирует тайм-слот записи лог. 1 (именно тайм-слот записи, а не чтения). Если бит, который посылает iButton, равен 1, то iButton просто ожидает появления следующего тайм-слота, пропуская текущий. При этом с линии данных master считывает 1. Если бит, который посылает iButton, равен 0, то iButton удерживает линию данных в состоянии лог. 0 определённое время, и master считывает с линии данных 0. Пример полной последовательности выполнения команды показан на рис. 1-8. Активность устройства master нарисована толстыми линиями. Серой линией показан ответ iButton. Тонкая линия показывает, что не активно ни одно из устройств. Линия, через которую происходит обмен данными, подключена к положительному полюсу источника питания (обычно +5 в) через специальный нагрузочный резистор.

protocol3.jpg

Рис. 1-8: Пример чтения ROM (одна из разновидностей iButton, например - носитель уникального кода DS1990A. Он и используется в качестве ключа для электронного замка).

2. Обзор разновидностей iButton фирмы Dallas Semiconductor

2.1. Регистрационный номер, записанный в ПЗУ (ROM)

Запрограммированная лазерным лучом ROM-секция содержит 6-байтное, уникальное для каждого устройства iButton число - серийный номер. Кроме того, во всех iButton записан в одном байте код типа устройства (family code), а также проверочный байт CRC. Младшие 7 бит family code указывают на тип устройства. Старший бит family code используется в качестве флага для версий, предназначенных для особых покупателей. Таким образом, можно закодировать 128 стандартных разновидностей устройств. 48-битный (6-байтный) серийный номер может представить любое десятичное число до 2.81 * 1014. Если выпускать в год 1000 миллиардов (1012) устройств одного и того же типа, то этого числа хватит на 281 год. Кроме того, можно выпускать 128 типов различных устройств. Если старший бит family code установлен в 1, то устройство функционирует так же, как и стандартное, однако серийный номер устанавливается по специальным правилам - часть серийного номера резервируется для обозначения конкретного покупателя (заказчика).

2.2. Типы устройств iButton

В таблице 2-1 показан полный обзор разновидностей iButton.

Тип устройства Family Code Серийный номер Количество бит, тип памяти Защищённые биты NV RAM Часы реального времени Таймер интервалов времени Счётчик циклов

DS1990A

01H

есть

-

-

-

-

-

DS1991

02H

есть

512, NVRAM

3*384

-

-

-

DS1992

08H

есть

1K, NVRAM

-

-

-

-

DS1993

06H

есть

4K, NVRAM

-

-

-

-

DS1994

04H

есть

4K, NVRAM

-

есть

Есть

есть

DS1995

0AH

есть

16K, NVRAM

-

-

-

-

DS1996

0CH

есть

64K, NVRAM

-

-

-

-

DS1982

09H

есть

1K, EEPROM

-

-

-

-

DS1985

0BH

есть

16K, EEPROM

-

-

-

-

DS1986

0FH

есть

64K, EEPROM

-

-

-

-

DS1920

10H

есть

16, EEPROM

температурный iButton

Таблица 2-1: Типы устройств iButton, поставляемых в корпусе MicroCan.

ПРИМЕЧАНИЕ:

NVRAM - NonVolatile Random Access Memory - память с произвольным доступом на чтение и запись, с энергонезависимым хранением информации.

EEPROM - Electrically Erasable, Programmable Read Only Memory - электрически стираемая (не всегда) память с произвольным доступом на чтение.

Остановимся на кратком описании каждого из устройств.

DS1990A

Этот iButton является устройством - серийным номером, который может служить уникальным электронным идентификатором чего-либо или кого-либо. Это самый простейший из всех типов iButton, и как раз он используется в качестве ключа для электронного замка. DS1990A содержит только ROM, запрограммированное на заводе. Поскольку информация сохранена на перерезаемых лазером связях в полисиликоне (нет зарядных элементов памяти или статических триггеров), DS1990A не нуждается в энергии для сохранения данных. Кроме того, для функционирования также почти не требуется энергии. DS1990A использует напряжение на линии данных для работы и сохраняет минимальный внутренний заряд для обеспечения работоспособности во время генерирования presence и в течение небольшого времени в любом из тайм-слотов, когда происходит операция чтения. На рисунке 2-2 показано, как организованы данные внутри DS1990A.

data-struct1.jpg

Рис. 2-2: Структура данных DS1990A.

Первый байт, передаваемый из ROM, является кодом типа устройства - family code. После него идёт гарантированно уникальный серийный номер (6 байт), у которого наименее значащий байт передаётся первым. Последний байт несёт информацию Cyclic Redundancy Check (CRC), что означает проверочный циклический избыточный код. CRC специальным образом вычисляется от первых семи байт. Это позволяет быстро проверить правильность передачи информации - если CRC, вычисленный устройством master от первых 7 байт, совпадает с принятым от iButton, то чтение было полностью верным. Этот метод - одна из причин, по которой iButton не требует стабильного электрического контакта со считывающим устройством.

В Книге Стандартов от фирмы Dallas Semiconductor говорится, что "из-за особенностей разработки iButton и строгого заводского контроля DS1990A является уникальным электронным идентификатором, который невозможно подделать".

Примечание 1. На мой взгляд, это верно, но с небольшими оговорками. Само собой, не существует двух совершенно одинаковых электронных ключа DS1990A, один из которых подойдёт вместо другого (откроет замок). Однако ничто не мешает злоумышленнику разработать прибор, который будет считывать ключ DS1990A и затем воспроизводить его последовательный код, полностью имитируя поведение slave-устройства DS1990A. Имея такой прибор, злоумышленник может считать оригинал ключа и потом просто использовать его код, чтобы открыть замок (кстати, на корпусе MicroCan нанесена гравировка, полностью воспроизводящая family code, serial number и даже CRC). Правда, не надо забывать, что для этого владелец ключа должен передать ключ злоумышленнику во временное пользование, а в этом казусе владелец, пожалуй, и сам в некоторой степени виновен. Снятие кода с электронного ключа очень похоже, таким образом, на снятие слепка с ключа механического. Разница только в технологиях, а также в том, что двух одинаковых электронных ключей не бывает.

DS1991, MultiKey iButton

Так же, как и DS1990A, DS1991 содержит серийный номер, family code и CRC. Кроме того, DS1991 содержит 64 байта энергонезависимой памяти scratchpad (необходимой для корректной операции записи в условиях ненадёжного контакта со считывающим устройством) и три независимые защищённые паролем области памяти по 48 байт каждая, которые называются субключами (отсюда, похоже, и пошло название DS1991 - MultiKey iButton). Для каждой защищённой области имеется поле пароля из 8 байт и открытое для свободного чтения поле из 8 байт. Таким образом, каждая защищённая область занимает 64 байта.

DS1991 разработан как электронный ключ с высокой степенью защиты, который позволяет получать доступ к различным защищённым областям с помощью только одного устройства. Каждый из трёх ключей можно рассматривать как защищённый файл, для доступа к которому надо знать пароль. Открытое поле такого ключа содержит имя защищённого файла. Таким образом, разные люди могут использовать даже один и тот же пароль, хотя они и пользуются разными экземплярами DS1991.

DS1991 имеет защиту от взлома. Если для чтения данных используется неверный пароль, то устройство будет выдавать случайные числа. Если запрограммирован новый пароль, то все данные субключа будут автоматически стёрты. Несмотря на то, что возможна прямая запись в защищённые субключи, незащищённая область памяти scratchpad должна использоваться как временное хранилище для проверки данных перед тем, как они будут скопированы в свое положенное место (субключ). Это даёт гарантию, что будут записаны неискажённые данные, даже если во время соединения прервётся контакт. В зависимости от применения, незащищённая область памяти scratchpad может альтернативно использоваться как простая память общего назначения, работающая на чтение и запись.

DS1992, iButton с энергонезависимой памятью на 1 Кбит

Как и все iButton, DS1992 содержит уникальный серийный номер. Внутренние 128 байт энергонезависимой памяти организованы как 4 области памяти (страницы) по 32 байта. Имеется также память scratchpad размером 32 байта (её назначение то же самое, что и у DS1991). Начать чтение RAM можно с любой байтовой позиции и на любой странице. Запись возможна только через scratchpad. После того, как записанные в scratchpad данные проверены на соответствие оригиналу, выполняется команда копирования данных из scratchpad в конечное место назначения данных, чем предотвращаются ошибки записи из-за возможного непостоянного контакта со считывающим устройством.

DS1993, iButton с энергонезависимой памятью на 4 Кбит

DS1993 является версией DS1992 с увеличенным объёмом памяти - в четыре раза больше. Вместо 4-х имеется 16 страниц памяти по 32 байта. Конечно, DS1993 имеет собственный family code, размещённый в ROM.

DS1992 и DS1993 разработаны как уникальное идентификационное устройство и мобильный носитель данных. С использованием специальных структур данных эти устройства могут сохранять многочисленные независимые файлы разного назначения. Кроме того, для защищённого доступа легко доступный серийный номер может использоваться как исходная величина совместно с секретным ключевым словом для кодирования приватных файлов данных. Несмотря на то, что закодированные данные можно прочитать, невозможно их продублировать из-за того, что два серийных номера не могут быть одинаковыми (см. примечание 1).

DS1994, iButton с таймером и энергонезависимой памятью на 4 Кбит

DS1994 добавляет к DS1993 часы реального времени, таймер временнЫх интервалов и счётчик циклов. За исключением family code, DS1994 полностью совместим с DS1993. Дополнительные регистры для часов и управляющие регистры размещены в верхней, последней странице памяти.

Что касается представления времени, часы DS1994 имеют отличительные особенности по сравнению с обычными часами реального времени на рынке. Часы в DS1994 - это двоичный счётчик с дискретностью 1/256 секунды. Минута, час, день, месяц и год вычисляются от количества секунд, прошедших относительно произвольно выбранной "нулевой даты" (обычно 1-е января 1970 года, 00 часов, 00 минут, 00 секунд). Таким образом, любое изменение в правилах отображения времени, зависящее от страны перелагается на внешнее программное обеспечение, с которым работает DS1994. Кроме того, это представление времени упрощает вычисление интервалов времени между событиями и увеличивают точность настройки часов.

Таймер интервалов времени можно использовать как секундомер с остановом для подсчёта времени между некоторыми событиями, или как инструмент для контроля времени использования приборов, поскольку DS1994 включает в себя свойство для генерирования прерываний. Для получения статистики работы счётчик циклов запоминает, как часто прибор (например, машина или компьютер) был включен. Таймер интервалов добавляет в память время функционирования прибора. Для этого применения, однако, DS1994 должен быть встроен в контролируемый прибор. К тому же, когда устройство DS1994 используется в процедурах касания со считывающим устройством, оно даёт полную информацию о частоте использования и среднее время каждого касания. RTC (Real Time Clock - часы реального времени) с регистрами тревоги обеспечивают функцию доступа с ограничением по времени. При достижении определённого времени доступ к устройству будет запрещён с помощью управляющего компьютера.

Возможность защиты от записи счётчиков и закрытие доступа к внутренним регистрам тревоги переводят устройство DS1994 на уровень не сбрасываемого контроллера истекающего времени. Все эти дополнительные особенности и связанные с ними регистры и управляющие флаги размещены на последней странице памяти (с номером 16). Доступ к содержимому этой страницы тот же самый, как и к обычным страницам памяти. Несмотря на то, что для операции записи обычно используют scratchpad, структура команд позволяет записать один или несколько байт.

DS1995, iButton с энергонезависимой памятью на 16 Кбит

Для применений, требующих сохранения нескольких файлов различного размера, ёмкость DS1993 может оказаться недостаточной. DS1995 учетверяет доступную ёмкость предыдущих версий iButton до 16 Кбит (до 64 страниц по 32 байта каждая). Поскольку DS1995 имеет ту же самую логическую структуру и понимает тот же самый набор команд, что и другие версии iButton с энергонезависимой памятью, устройство DS1995 полностью совместимо с существующим прикладным программным обеспечением. Новое уникальное значение family code указывает на наличие дополнительной ёмкости памяти.

DS1996, iButton с энергонезависимой памятью на 64 Кбит

DS1996 учетверяет ёмкость DS1995 до 64 Кбит (до 256 страниц по 32 байта каждая). С теми же самыми командами, как и у других iButton с энергонезависимой памятью, DS1996 позволяет легко провести апгрейд существующих систем. Как и все iButton, это устройство имеет уникальное значение family code.

DS1995 и DS1996 значительно превосходят по ёмкости существующие мобильные носители данных, как, например, серийные чип-карты или магнитные полосы. Использование серийного номера как исходной величины совместно с секретным ключевым словом позволяет сохранять как закодированные, так и незащищённые файлы данных в одном устройстве. Из-за недостатка места в статье мы не будем рассматривать методы использования большой ёмкости памяти этих устройств (см. Книгу Стандартов iButton фирмы Dallas Semiconductor, часть 7).

DS1982, Add-Only iButton с однократно программируемой памятью на 1 Кбит

Серии DS198x используют технологию EEPROM, которая не требует встроенного источника энергии для поддержания сохранности данных. Так же как и у DS1990A, энергия для работы берётся непосредственно с линии данных. Как и все iButton, DS1982 содержит секцию ROM с серийным номером и family code. Память организована как 4 страницы по 32 байта каждая.

Чтение DS1982 происходит так же, как и чтение других iButton со встроенной памятью, однако запись происходит по-другому. Перед тем как байт данных попадёт на своё место назначения в памяти, он сначала записывается в scratchpad размером в 1 байт. Далее происходит самопроверка команды записи - адреса назначения и записываемых данных - с помощью 8-битного CRC. Если проверка прошла успешно, импульс длительностью 1 мс и напряжением 12 В сделает копию байта scratchpad в место назначения байта. Эта процедура предотвращает некорректную запись в случае пропадания контакта с устройством.

Такая изощрённая проверка перед записью необходима для устройств, основанных на технологии EEPROM, поскольку однажды записанные неверные данные уже невозможно исправить. Когда данные нуждаются в обновлении, старые данные "переназначаются" и добавляется новый набор данных. Этот режим функционирования объясняет имя Add-Only iButton (iButton только для добавления данных) для этой группы. Устройства Add-Only iButton  невозможно стереть. Каждая страница памяти аппаратно защищена от последующих попыток записи. Таким образом, каждое обновление будет оставлять для контроля постоянный след. Такое свойство памяти используется, например, в кассовых аппаратах (фискальная память).

Флаги, показывающие состояние страницы данных (запрещена она для записи и т. п.), помещены в 8-ми байтах статуса памяти устройства. Запись в данные статуса применяет ту же самую интегрированную процедуру, как и для страниц данных. Когда читаются информация статуса или просто данные, встроенный генератор CRC защищает поток данных от потенциальных ошибок.

DS1985, Add-Only iButton с однократно программируемой памятью на 16 Кбит

С 16-кратной ёмкостью по сравнению с DS1982, DS1985 является наименьшим устройством типа Add-Only, полностью поддерживающим сохранение и обновление нескольких файлов приложений. За подробностями обращайтесь в Книгу Стандартов iButton фирмы Dallas Semiconductor, часть 7. Память приложений организована как 64 страницы по 32 байта каждая. В дополнение к памяти приложений, имеется 88 байт памяти статуса, выделенной для байт переназначения, флагов и бит защиты от записи. Специальная команда сигнализирует о перенаправлении данных для предотвращения потерь времени и чтения неверных данных. Другие функции у DS1985 те же самые, что и у DS1982.

DS1986, Add-Only iButton с однократно программируемой памятью на 64 Кбит

DS1986 является 64 Кбитным апгрейдом DS1985. Память организована как 256 страниц по 32 байта каждая. Расширенная область памяти потребовала увеличения памяти статуса до 352 байт. Все другие особенности DS1986 те же, что и у DS1985.

Выдающаяся особенность iButton типа Add-Only - невозможность удаления данных. Если данные нуждаются в обновлении, то это происходит путём изменения пути на другую страницу, что оставляет постоянный след изменений. Это позволяет реконструировать оригинальные и промежуточные версии данных. Благодаря аппаратной защите от записи такие устройства устойчивы к вмешательству в содержимое данных. Если запрограммирован бит защиты от записи, нет никаких шансов изменить хотя бы один бит соответствующей страницы или перенаправить байт.

DS1920, Temperature iButton

Как показывает название, это устройство содержит термометр в корпусе MicroCan. Вместо памяти пользователь получает доступ к 9-битному преобразователю (дающему точность 0.5 градуса по Цельсию), как если бы это была бы память, и к управляющим регистрам. Уникальная секция ROM тоже является стандартной для этих устройств, что позволяет создать цепочку из термометров и считывать их значения из одного места. Точность измерения температуры составляет 0.5 градуса Цельсия в диапазоне температур от 0 до +70 градусов. В диапазонах от -40 до 0 градусов и от +70 до +85 градусов по Цельсию точность ухудшается до 1 градуса. Время определения температуры составляет около одной секунды. Подробности см. в Книге Стандартов iButton фирмы Dallas Semiconductor, часть 6.

Описанные выше устройства поставляются в корпусе MicroCan. Кроме того, имеются некоторые другие устройства в других корпусах, имеющие некоторые общие особенности вышеописанных iButton. Например, продукты, предназначенные для пайки - адресуемый электронный ключ DS2407 и двухинтерфейсная память с таймером DS2404S-C01. Более подробно про эти устройства написано в Книге Стандартов iButton фирмы Dallas Semiconductor, часть 6.

3. Электрические стандарты и характеристики iButton

3.1. Интерфейс 1-Wire, временнЫе диаграммы

Введение

iButton являются устройствами, требующими для функционирования электрического контакта. ВременнАя логика обеспечивает методы измерения и генерирования цифровых импульсов различной длительности. Передача данных является асинхронной по отношению к битам (не используется внешний синхросигнал для их генерации) и полудуплексной (в определённый момент времени может идти передача только в одном направлении). Данные, передаваемые в iButton, могут интерпретироваться ими как команды (в соответствии с предопределённым форматом, зависящим от family code), которые сравниваются с информацией, заранее сохранённой в iButton для принятия решения (о предназначении команды), либо просто сохраняться внутри iButton для дальнейшего использования. Поскольку именно спад сигнала на линии данных является наименее чувствительным к ёмкостной нагрузке (для генерации спада используется транзистор с открытым стоком), iButton использует этот спад для синхронизации своих внутренних временнЫх узлов. Устройства iButton считаются подчинёнными устройствами (slave), а считывающее либо записывающее их устройство - главным устройством (master).

Тайм-слоты записи

ВременнЫе соотношения в iButton задаются соотносительно тайм-слота (специально сформированной порции цифрового сигнала). Для определения максимальной границы всех типов погрешностей формирования временнЫх диаграмм, iButton делает выборку значения данных на линии посередине тайм-слота. По определению активная часть 1-Wire тайм-слота (tSLOT) составляет 60 мкс. В нормальном состоянии iButton будет делать выборку сигнала с линии после 30 мкс относительно спада сигнала.

Внутренняя величина базового времени iButton может отличаться от стандартной, следовательно, может меняться время выборки сигнала. Допустимый диапазон изменения составляет от 15 до 60 мкс. Это означает, что реальное чтение линии slave-устройством может произойти в любом месте относительно старта тайм-слота между 15 и 60 мкс, т. е. может изменяться в соотношении 1 к 4. Во время этого окна времени напряжение на линии должно оставаться либо ниже VILMAX (максимально допустимое входное напряжение для лог. 0), либо больше VIHMIN (минимально допустимое входное напряжение для лог. 1). Основная форма тайм-слотов записи 1 и записи 0 показана на рисунках 3-1 и 3-2 соответственно. Эти тайм-слоты необходимы для записи команд и данных в iButton.

timeslot-write1.jpg

Рис. 3-1: Тайм-слот записи 1.

timeslot-write2.jpg

Рис. 3-2: Тайм-слот записи 0.

Длительность импульса низкого уровня для записи 1 (tLOW1) должна быть короче 15 мкс; для записи 0 длительность импульса низкого уровня должна быть не менее 60 мкс для удовлетворения условиям самого худшего случая допуска.

Длительность активной части тайм-слота можно увеличить и сделать намного больше 60 мкс. Максимальное увеличение ограничено фактом, что импульс низкого уровня как минимум в 8 тайм-слотов (480 мкс) определён как Reset Pulse (импульс сброса). Если принять во внимание наихудший допуск, то импульс низкого уровня в 120 мкс уже может быть воспринят как reset. Это ограничивает увеличение активной части тайм-слота до максимума в 120 мкс для предотвращения ошибочной интерпретации импульса низкого уровня как reset.

По окончании активной части каждого тайм-слота iButton нуждается во времени восстановления tREC (с минимальной величиной в 1 мкс) для подготовки следующего бита. Это время восстановления можно рассматривать как неактивную часть тайм-слота, оно должно быть добавлено к длительности активной части тайм-слота для получения времени, затрачиваемого на передачу бита. Широкий допуск на тайм-слот и некритичное время восстановления позволяют медленным микропроцессорам легко выполнять временнЫе требования для соединения 1-Wire.

Тайм-слоты чтения

Команды  и данные посылаются в iButton путём комбинирования тайм-слотов, записывающих 0 и 1. Для чтения данных master генерирует тайм-слоты чтения для определения момента начала каждого бита. С точки зрения master, тайм-слоты чтения выглядят так же, как и тайм-слоты записи 1. Начиная с момента изменения уровня сигнала с высокого на низкий, iButton посылает один бит своего адресованного содержимого. Если передаваемый устройством iButton бит равен 1, то iButton оставляет импульс (линию данных) без изменения. Если бит равен 0, iButton будет притягивать линию данных на низкий уровень (открывая канал своего выходного транзистора) в течение времени tRDV, или 15 мкс (см. рис. 3-3). В течение этого окна времени данные доступны для чтения устройством master.

timeslot-read1.jpg

Рис. 3-3: Тайм-слот чтения данных.

Длительность tLOWR определяет время импульса низкого уровня, посылаемого устройством master. Оно должно быть как минимум 1 мкс, но в тоже время как можно меньше, чтобы увеличить окно выборки сигнала для master. В целях компенсации ёмкости линии интерфейса 1-Wire, master должен делать выборку сигнала как можно точнее через 15 мкс после начала синхронизирующего среза сигнала. Следующий за интервалом tRDV интервал tRELEASE является дополнительным, в течение которого iButton отпускает линию 1-Wire и сигнал возвращается к значению VPULLUP. Длительность tRELEASE может меняться в пределах от 0 до 45 мкс. Номинальная величина 15 мкс.

Детектирование presence (присутствия на шине)

Как упомянуто выше, интерфейс 1-Wire использует импульс reset. Этот импульс определён как импульс низкого уровня с минимальной длительностью 8 тайм-слотов или 480 мкс, за которым следует время reset с высоким уровнем на линии tRTSH и длительностью тоже 480 мкс (см. рис. 3-4). Это время нужно для того, чтобы iButton мог выдать импульс presence.

pulses1.jpg

Рис 3-4: Импульсы reset и presence.

* Чтобы не маскировать сигналы прерываний от других устройств на шине 1-Wire, время tRSTL+tR должно быть всегда меньше 960 мкс.

Во время tRSTH на линии 1-Wire не разрешены никакие другие соединения. Импульс reset предназначен для обеспечения чистого старта, который прерывает любую синхронизацию других тайм-слотов. В окружении с неуверенным контактом необходимо снова запустить старт, если контакт прерывался. Если master послал импульс reset, iButton будет ожидать время tPDH, а затем сгенерирует импульс presence длительностью tPDL. Это позволяет устройству master легко определить, присутствует или нет iButton на линии. Кроме того, если несколько iButton соединены параллельно (см. Книгу Стандартов, часть 5, "Логические стандарты и характеристики"), master может измерить оба времени (tPDH и tPDL) и таким способом получить информацию о реальных временнЫх допусках для всех устройств на линии.

Нормальные величины 30 мкс для tPDH и 120 мкс для tPDL. Измеренное время tPDH показывает внутреннее базовое время для самого быстрого устройства на шине. Сумма измеренного времени tPDH и tPDL в 5 раз больше внутреннего базового времени самого медленного устройства на шине. Если на линии присутствует только одно устройство, обе величины tPDH и tPDL будут пропорциональны и будут изменяться в одну и ту же сторону. Это соотношение может быть использовано для построения адаптивной системы. Специальные вычисления этой системы должны быть приложены для корректировки временнЫх характеристик каждый раз после reset, поскольку индивидуальные временнЫе характеристики устройств iButton могут меняться в зависимости от температуры и нагрузки.

Точность измерений времени, требуемая для адаптивной подстройки временнЫх диаграмм, ограничена характеристиками входной логики master, постоянной времени линии 1-Wire (сопротивление нагрузочного резистора помножить на ёмкость кабеля) и прикладываемой частотой выборок состояния линии 1-Wire. Если видимое время нарастания или спада сигнала превышает 1 мкс, или если возможная наивысшая частота выборок не превышает 1 МГц, то адаптивную подстройку применить не получится.

Если iButton отключен от считывающего устройства, то он притягивает свою линию данных на низкий уровень через внутренний источник тока 5 мкА. Это симулирует импульс reset неограниченной длины. Как только iButton определит высокий уровень на своей линии данных, он сгенерирует импульс presence. Эта особенность может быть использована для автоматического включения устройства master с целью сохранения энергии между чтениями или записями. Это также удобно использовать для включения аппаратного прерывания последовательного порта, когда используется PC и адаптер COM-порта.

Устройства iButton специально разработаны для работы в условиях плохих электрических соединений. Однако требуется некоторое минимальное время контакта, требуемое для пересылки команд и пакета данных. Оно зависит от вида выполняемой операции. Для DS1990A, используемого в качестве электронного ключа, это время может не превышать 5 мс.

Повышенная скорость

Устройство iButton можно ввести в состояние ожидания, в котором iButton больше не отвечает ни на какие события на шине 1-Wire, пока не поступит импульс reset. С этой особенностью может сосуществовать возможность высокоскоростного соединения на шине 1-Wire без конфликтов с существующим протоколом. Линия данных при этом не может быть в состоянии низкого уровня более чем 120 мкс.

Фактически повышенная скорость реализуется изменением внутренней временнОй базы iButton в 10 раз. Это относится ко всем коммуникационным формам сигнала, включая импульсы reset и presence, но не включая длительность программирующих импульсов для устройств EEPROM (детали см. на рис. 3-1…3-4). Все iButton, которые могут работать с повышенной скоростью, будут работать со скоростью нормальной, если их специально не переключить на повышенную скорость. Устройства, реализующие повышенную скорость, можно идентифицировать по их family code, или с помощью специальных команд, которые не распознаются "не высокоскоростными" устройствами. Более подробно о протоколе, вводе iButton в состояние ожидания и о повышенной скорости обмена можно прочитать в Книге Стандартов iButton фирмы Dallas Semiconductor, часть 5.

3.2. Интерфейс 1-Wire, электрические параметры

Паразитное питание

Обычно в цифровых системах переменные величины напряжения относятся к цифровым сигналам, которые таким способом представляют высокие и низкие уровни семейства логики. ВременнЫе диаграммы 1-Wire отличаются от этой хорошо известной схемы из-за паразитного питания систем iButton, которые поддерживают ROM и высокотехнологичную логику большей части устройств. DS1991 использует не паразитное питание, а внутренний источник энергии, который обеспечивает работу защищённой памяти. DS1990A, DS198x и DS1920 разработаны только для использования паразитного питания. Логика ROM устройств от DS1992 до DS1996 питается либо от внутреннего литиевого источника напряжения 3 B, либо от напряжения на линии 1-Wire, в зависимости от того, какое из них больше. Эта возможность позволяет получить доступ к записанной лазером ROM-секции, даже если внутренний литиевый элемент истощился после истечения 10 лет или более.

Системы с паразитным питанием нуждаются в конденсаторе для сохранения энергии и диоды для предотвращения нежелательного разряда от линии данных (когда на ней появляются низкие логические уровни). Здесь применяется точно такая же схема, как у однополупериодного выпрямителя. После того, как конденсатор зарядится до нормального рабочего уровня, на нём будут кое-какие незначительные провалы и возрастания напряжения из-за импульсов перезаряда, возникающих при изменении сигнала на линии данных 1-Wire. Ёмкость энергосберегающего конденсатора iButton равна примерно 800 пФ. Эта ёмкость видна короткое время, когда iButton подсоединяется к считывающему устройству. После того, как конденсатор зарядился, на шине данных будет видна только малая часть от ёмкости конденсатора, соответствующая требуемой полной подзарядке конденсатора. Полная постоянная времени для зарядки конденсатора определяется самим конденсатором, внутренним сопротивлением около 1 кОм, сопротивлением кабеля и контактов, ёмкостью кабеля и внешним нагрузочным резистором. Добавочное падение напряжения на диоде и минимальное внутреннее рабочее напряжение кристалла дают минимально возможное напряжение на линии данных 1-Wire. В таблице 3-1 более подробно даны параметры, справедливые для всех видов iButton. Минимально возможное напряжение питания линии важно для выбора времени восстановления tREC времени высокого уровня reset tRSTH.

Величина

DS1990A - DS1996

DS1982 – DS1986

DS1920

VPULLUP min

2.8 В

VIH min

2.2 В

VIL max

0.8 В

VOL max

0.4 В при 4 мА

tSLOT min

60 мкс

tSLOT max

120 мкс

tRDV

15 мкс

Спец. питающее напряжение

Нет

Импульс прогр. Vpp

1 мА от 5В

Табл. 3-1: Общие электрические параметры iButton.

Из-за применяемой в устройствах Add-Only технологии EEPROM, эти iButton требуют для программирования импульсов определённой длительности, напряжения и тока. Например, для DS1982 применяют импульс длительностью минимум 500 мкс, номинальное напряжение 11.5 В с пиковым максимальным током 10 мА. Для предотвращения повреждений других iButton, во время программирования к сети MicroLAN должны быть подключены только DS198x. Температурный iButton DS1920 требует усиленного питания 5 В от сети MicroLAN во время измерения температуры и записи внутренних ячеек памяти. Это не критично для работы других устройств на шине, поскольку iButton не будут начинать самостоятельно любой обмен данными. Не могут также в этой ситуации происходить прерывания от DS1994, поскольку их работа автоматически запрещается (см. Книгу Стандартов iButton фирмы Dallas Semiconductor, часть 6).

Нагрузочный резистор

Рекомендуемый номинал нагрузочного резистора для линии 1-Wire составляет 5 кОм. Эта величина была выбрана для обеспечения работы с контактами высокого сопротивления и для обеспечения хороших логических уровней на обоих концах короткого соединительного кабеля. Обычно считывающий узел master воспринимает напряжения до 0.8 В как логический 0. Поскольку на линию между master и iButton оказывает влияние постоянная времени шины 1-Wire, иногда может потребоваться использовать нагрузочный резистор с номиналом меньшим, чем 5 кОм.

Оптимизация при повышении длины соединительного кабеля

Идеальным соединением между iButton и мастер является короткий кабель с малой паразитной ёмкостью. В случае применения длинных кабелей появляется гораздо больше забот для обеспечения необходимых требований по постоянному и, в особенности, по переменному току. Появляются критические моменты для времени восстановления tREC и для чтения или записи бита 1. Время восстановления становится критичным, если для обмена данными необходимы два следующих друг за другом тайм-слота записи нуля. Если передача данных идёт на максимально возможной скорости, должен быть сформирован импульс tREC лог. уровня 1 с минимальной длительностью 1 мкс между двумя тайм-слотами записи нуля с длительностью 60 мкс. Возможность распространения такого короткого импульса по длинному кабелю значительно ухудшается пропорционально длине кабеля. Случается так, что короткий импульс полностью отфильтровывается и связь с iButton на дальнем конце кабеля становится невозможным. Можно легко увеличить расстояние передачи, просто увеличив величину tREC. Например, если tREC увеличить с 1 мкс до 15 мкс, максимальная скорость передачи данных упадёт с 16.3 Кбит/с до 13.3 Кбит/с, однако импульс tREC длительностью 15 мкс позволяет значительно повысить надёжность передачи на длинном кабеле. Запись бита 1 можно также улучшить путём уменьшения длительности tLOW1 тайм-слота записи 1, однако при этом не превышая нижнюю минимальную величину (см. рис. 3-1). Это также улучшает вероятность верного чтения 1 на длинном кабеле. Кроме того, на длинном кабеле нужно уменьшить номинал нагрузочного резистора линии.

Тесты показывают, что нагрузочный резистор номиналом 1 кОм позволяет работать с кабелем максимально возможной длины. Если применить резистор номиналом менее 1 кОм, то ухудшается качество логических уровней, и в сочетании с большой ёмкостью кабеля не получается достичь правильной формы сигналов. Маленький резистор повышает зависимость работы системы от качества контактов (зависимость от сопротивления контакта). Для увеличения длины кабеля рекомендуется использовать кабели с малой погонной ёмкостью – около 15 пФ/м.

Тесты также показывают, что витая пара проводов работает лучше, чем просто два параллельные провода. Простой нагрузочный резистор на стороне master показал лучшие результаты, чем усиленная активная импульсная нагрузка, поскольку резистор больше подходит к сопротивлению линии. В порядке улучшения работы можно применить на стороне master выходной ключ (драйвер) с улучшенными характеристиками включения. В особых случаях может потребоваться использовать компаратор на приёмном входе master для оптимизации порогов чтения лог. 0 и лог. 1 на длинных линиях.

Например, корректная работа iButton была достигнута на линии до 300 м с использованием простого витого телефонного кабеля. Нагрузочный резистор был уменьшен до 1 кОм; 30 экземпляров iButton были подключены параллельно в конце кабеля. Шина 1-Wire управлялась выводом порта 0 микроконтроллера DS5000 (совместимый с Intel 8051). Адаптеры для COM-порта PC работают на расстояниях до 200 м на большинстве PC (см. указания по применению №74 “Чтение и запись iButton через последовательный интерфейс”). Более подробную информацию можно получить из указаний по применению №55 “Расширение зоны контактирования устройств iButton” и №108 “MicroLAN – длинные дистанции”.

4. Система команд DS1990A

Как только мастер определил на шине наличие импульса presence, он может послать одну из четырёх команд, работающих с ПЗУ (ROM) DS1990A. Каждая команда состоит из 8 бит. Перечень этих команд следующий (в квадратных скобках указан hex-код команды):

Read ROM [33h] или [0Fh] (прочитать ПЗУ)

Эта команда позволяет мастеру шины прочитать из DS1990A код устройства (family code), уникальный 48-битный серийный номер и 8-битный CRC. Эта команда может быть использована только в том случае, если на шине присутствует только одно устройство DS1990A (для электронного замка это условие выполняется). Если на шине присутствует более одного подчинённого устройства, произойдёт коллизия данных, когда все slave-устройства начнут передавать одновременно (параллельно соединённые открытые стоки будут работать как логический элемент И). DS1990A будет одинаково реагировать как на код команды 33h, так и на код 0Fh для обеспечения совместимости с более ранней версией электронного серийного номера DS1990, который реагирует только на команду 0Fh.

Math ROM [55h], Skip ROM [CCh], Searсh ROM [F0h]

Не будем останавливаться на этих командах, поскольку для электронного замка они не нужны (подробности по ним см. в Книге Стандартов iButton фирмы Dallas Semiconductor).

5. Генерирование CRC

Для проверки правильности данных, переданных из DS1990A (как, впрочем, и из других устройств iButton) master может генерировать значение CRC из принятых данных. Эта сгенерированная величина затем сравнивается с величиной, сохранённой в последних 8 битах DS1990A. Master вычисляет CRC от 8-битового family code и всех 48 бит серийного номера, но не от самой сохранённой в iButton величины CRC (от первых 7 байт содержимого DS1990A). Если две величины, вычисленная и считанная напрямую, совпадают, то передача была безошибочной. Для генерации CRC используется полином вида:

CRC = x8 + x5 + x4 + 1

Ниже приведён код из технического описания DS1990A фирмы Dallas Semiconductor для процессора с системой команд Intel 8051, реализующий алгоритм вычисления CRC. Этот код без изменений был использован в программе электронного замка.

DO_CRC:
;Процедура DO_CRC считает КУМУЛЯТИВНО CRC от всех данных, передаваемых в acc.
; Перед началом подсчёта в CRC надо поместить 0. Затем каждый байт помещается
; в acc, вызывается процедура DO_CRC, и величина CRC в ней обновляется.
; После того, как все данные прошли через DO_CRC, переменная CRC будет
; содержать результат (контрольную сумму). Эквивалентная полиномная; функция 
; этой подпрограммы:
; CRC = X^8 + X^5 + X^4 + 1
                mov         a, r7         ;параметр в C-функции передаётся через r7
                push       acc
                push       b
                push       acc            ;сохраним сдвигаемые биты
                mov        b, #8          ;установить сдвиг = 8 бит
CRC_LOOP:
                xrl        a, CRC         ;вычисляем CRC
                rrc        a              ;двигаем её в перенос
                mov        a, CRC         ;получаем последнюю величину CRC
                jnc        ZERO           ;пропускаем, если data=0
                xrl        a, #18h        ;обновляем CRC
ZERO:
                rrc        a              ;позиционируем новую CRC
                mov        CRC, a         ;запомним новую CRC
                pop        acc            ;получим оставшиеся биты
                rr         a              ;позиционируемся на следующий бит
                push       acc            ;сохраним оставшиеся биты
                djnz       b, CRC_LOOP    ;повторим для восьми бит
                pop        acc            ;очистим стек
                pop        b
                pop        acc
                ret

Более подробно принцип вычисления CRC описан в Книге Стандартов iButton фирмы Dallas Semiconductor.

6. Электронный замок

6.1. Основные особенности

Описываемый электронный замок предназначен для установки в квартирах, подъездах жилых домов. Очень хорошо он подходит для входных дверей офиса, куда должен иметь доступ ограниченный круг лиц. Основные достоинства такого замка:

-          быстрое, удобное открытие двери простым прикладыванием металлической “таблетки” – электронного серийного номера DS1990A (далее по тексту просто “ключа”);

-          увеличенная защищённость – отсутствие замочной скважины или клавиатуры, которую легко повредить, подбор ключа полностью исключён;

-          очень простая процедура смены или добавления ключа – они записываются в память электронного замка, и так же легко оттуда удаляются;

-          при утере одного ключа нет необходимости покупать новый замок или менять вставку – можно просто стереть память замка и “обучить” замок заново (занести в память ключи);

-          большое количество (до 510) пользователей.

Недостатком, которым страдают все электронные замки, можно считать тот факт, что электронному замку и исполнительному механизму (соленоиду задвижки или электромотору) нужно резервированное питание, например, от аккумулятора, чтобы всегда можно было открыть дверь (в случае пропадания питания от сети).

Для постоянной работы с замком используется только чашка считывающего устройства и кнопка открывания двери, которая монтируется внутри запираемого помещения. Нажатие на эту кнопку точно так же открывает дверь, как прикладывание ключа. Для программирования замка служит перемычка, звуковой сигнализатор, два светодиода – зелёный и красный, а также специальный мастер-ключ. Мастер-ключ необходим для доступа к программированию замка. Кроме своих специальных функций, он может работать как обыкновенный ключ, если его занести в память электронного замка.

В таблице 6-1 приведены основные параметры, а на рисунке 6-1 – принципиальная схема электронного замка.

Напряжение питания (без учёта силовой части), В

4.5 … 5.5

Максимальный ток потребления (питание 5В), мА

30

Максимальное количество ключей (не считая мастер-ключа)

510

Время удержания соленоида, сек

1 … 25

Шаг регулирования времени удержания соленоида, сек

1

Табл. 6-1: Рабочие параметры электронного замка на ключах DS1990A.

lock-sch1.jpg

Рис. 6-1: Принципиальная электрическая схема электронного замка.

Алгоритм работы замка прост – когда пользователь прикладывает ключ к считывающей чашке, микропроцессор считывает его код и пытается найти этот код в своей памяти. Если такой код в памяти существует, то микропроцессор на заданное время (по умолчанию 1 сек) выставляет на выводе порта P3.5 логический уровень 0, что соответствует включению соленоида замка и отпиранию двери. Если код прикладываемого ключа отсутствует в памяти, то ничего не происходит, и дверь остаётся закрытой.

Память замка является энергонезависимой; это значит, что короткие пропадания напряжения замку не страшны – коды ключей всё равно останутся в памяти. Кроме кодов отпирающих ключей, в памяти отдельно хранится код мастер-ключа, с помощью которого можно войти в режим программирования ключей, а также дополнительные параметры – флажок наличия в памяти мастер ключа, время запитки соленоида и количество находящихся в памяти ключей. Организацию памяти замка можно наглядно представить из таблиц 6-2 и 6-3.

hex-адрес памяти

ДАННЫЕ

0000h

4 байта ключа 0

4 байта ключа 1

4 байта ключа 2

4 байта ключа 3

0010h

4 байта ключа 4

07F0h

4 байта ключа 508

4 байта ключа 509

Дополнительные параметры (8 байт)

Табл. 6-2: Общая организация памяти замка.

hex-адрес памяти

ДАННЫЕ

07F8h

Код мастер-ключа (4 байта)

07FCh

Флажок наличия в памяти мастер-ключа (1 байт)

07FDh

Время удержания соленоида в секундах (1 байт)

07FEh

Количество ключей в памяти, не считая мастер-ключа (2 байта)

Табл. 6-3: Размещение в памяти дополнительных параметров.

Как видно из таблиц, на каждый ключ отводится 4 байта, несмотря на то, что серийный номер DS1990A содержит уникальный 48-битный код (6 байт) – 2 старших байта кода не используется. Это сделано в целях экономии памяти, что позволило разместить в памяти 510 ключей вместо 340 без каких-либо заметных ухудшений параметров секретности.

6.2. Программирование мастер-ключа, очистка памяти, установка времени удержания соленоида

В обычном, рабочем состоянии красный светодиод замка часто мигает (50 мс включен, 50 мс выключен). Если установить перемычку JP1, то красный светодиод начинает мигать медленно (500 мс включен, 500 мс выключен). Это индицирует вход в специальный в режим, в котором есть несколько возможностей:

1.        Если присоединить и удерживать любой ключ к считывающей чашке, то этот ключ станет мастер-ключом и с его помощью можно будет зайти в режим программирования ключей. При этом по адресу 07F8h запишется код мастер-ключа, а флажок наличия мастер-ключа в ячейке 07FCh станет равным 01h (мастер ключ в памяти присутствует).

2.        Если удерживать ключ более 30 секунд, то произойдёт полная очистка памяти. При этом код каждого ключа станет равным FFFFFFFFh, код мастер ключа станет FFFFFFFFh, флажок наличия мастер-ключа станет равным 00h (мастер-ключ в памяти отсутствует), время удержания соленоида в секундах станет равным 01h, а количество ключей в памяти станет равным 0000h.

3.        Если коротко нажимать на кнопку открывания двери, то каждое нажатие будет увеличивать время удержания соленоида на 1 сек (будет на 1 увеличиваться значение ячейки памяти 07FDh) до достижения значения 25 сек, после чего оно снова станет 1 сек, и т. д. Каждое нажатие на кнопку открывания двери при этом индицируется коротким звуковым сигналом.

6.3. Программирование ключей

Если в обычном, рабочем режиме (когда перемычка JP1 не установлена) нажать на кнопку открывания двери и одновременно приложить к считывающей чашке мастер-ключ, то произойдёт вход в режим программирования ключей. При этом красный светодиод не горит. Если в этом режиме снова нажать кнопку открывания двери и считать ключ, которого нет в памяти ключей, открывающих дверь (это может быть и мастер ключ!), то прозвучит короткий звуковой сигнал, мигнёт красный светодиод, и приложенный ключ занесётся в память, а количество ключей в ячейке 07FEh увеличивается на 1. Если такой ключ уже есть в памяти, то он оттуда удаляется, при этом также прозвучит короткий звуковой сигнал, но красный светодиод не вспыхнет. Количество ключей в ячейке 07FEh уменьшится на 1, а данные всех ключей, находящихся после удалённого ключа, сдвинутся на 4 байта в сторону младших адресов (так происходит удаление кода ключа из памяти). Так можно занести в память 510 ключей, пока не заполнится вся память замка. Выйти из режима программирования ключей можно, если приложить ключ, но не удерживать при этом кнопку открывания двери – красный светодиод снова начнёт часто мигать, показывая вход в рабочий режим. При этом приложенный ключ точно так же запишется в память (если его там нет) или удалится из неё (в обратном случае).

6.4. Описание принципиальной схемы

Основные узлами электронного замка являются микроконтроллер типа AT89C2051 и энергонезависимая Flash-память с последовательным интерфейсом I2C от фирмы Atmel. Вместо микроконтроллера подойдёт любой другой с системой команд MCS51, даже с внешней памятью программ типа Intel 8031. Память может быть подобрана из аналогов других фирм (24C16B от Microchip, X24C16 от Xicor), однако надо обратить внимание на вывод 7 микросхемы – у других производителей его назначение может отличаться от Write Protect (защита от записи). Цепочка R1C2 служит для формирования сигнала “сброс” микроконтроллера при подаче питания, а диод D1 нужен для быстрой разрядки конденсатора C2 при пропадании питания. Конденсаторы C1 и C3 нужны для фильтрации помех в питающем напряжении. Кварцевый резонатор может быть любой в диапазоне 10…12 МГц - такое изменение незаметно сказывается на работе замка. Применение кварца со значительным отклонением частоты (например, 6 МГц или 24 МГц) может потребовать коррекцию констант или кода программы. Важно, чтобы провода к кнопке S1 были как можно короче. Если кнопку надо вынести на большое расстояние от схемы замка, или если работа замка ожидается в условиях сильных электромагнитных помех, то необходима защита порта P3.2 (см. рис. 6-2).

lock-sch2.jpg

Рис. 6-2: Защищённое подключение кнопки S1.

Выбор звукового сигнализатора BP1 не критичен, лишь бы он генерировал непрерывный звук при подаче на него постоянного напряжения. Цепочка D3D5R7 нужна для защиты порта P1.0 от помех (чтобы, например, замок не испортили электрошокером), стабилитрон D5 можно заменить на КС156. Резистор R6 служит стандартной нагрузкой для шины данных iButton. Подключение считывающей чашки лучше всего делать витой парой проводов, или, на худой конец, простым телефонным кабелем (см. п. 3.2 статьи, “Интерфейс 1-Wire, электрические параметры”). Перемычку JP1 лучше всего установить в непосредственной близости от микроконтроллера (на печатной плате). Резисторы R2 и R3 являются нагрузочными для интерфейса I2C.

Схема замка должна питаться от стабилизированного источника (на схеме не показан). Для него подойдут маломощный трансформатор с выпрямителем, конденсатором и трёхвыводным интегральным стабилизатором без радиатора (например, КРЕН5В или 78L05). На выходе диодного моста напряжение должно быть 10…15 В.

На принципиальной схеме также не показаны узлы, непосредственно запитывающие исполнительное устройство замка, поскольку конкретная реализация зависит от параметров соленоида. В качестве силового ключа можно использовать как транзисторную, так и релейную схему, которую читатель легко сможет изготовить самостоятельно.

Исходный код и прошивку для микроконтроллера можно бесплатно скачать с ftp-сервера журнала “Радио”, или тут: http://microsin.net/Download.cnt/touchmem/iblock2/iblock.zip .

“Правильно собранная схема в наладке не нуждается и начинает работать сразу при включении питания” – это верно и для нашего замка. Однако на практике всё получается с точностью до наоборот. Поэтому, если схему всю проверили-перепроверили, питание везде есть, а замок всё-таки не заработал, не отчаивайтесь – всё нормально – и обратите внимание на следующие моменты:

a)       Самая ненадёжная часть схемы – это кварцевый резонатор. Иногда его качество оставляет желать, и внутренний тактовый генератор микропроцессора U2 не запускается. Это можно проконтролировать осциллографом на выв. 4, XTAL2 (выход генератора. При его работе на XTAL2 должен присутствовать сигнал размахом около 1 В с частотой кварцевого резонатора). Если у Вас нет кварцевого резонатора на замену, можно попробовать подключить между GND и XTAL1, а также между CND и XTAL2 по конденсатору, каждый около 30 пФ.

b)       Проверьте, как работает узел сброса C2R1D1. При включении питания на выводе RST микропроцессора U2 должен формироваться импульс напряжением не менее 0.7 от напряжения питания. Иногда амплитуда этого импульса недостаточна, если питающее напряжение нарастает слишком плавно. В этом случае можно увеличить постоянную времени C2R1 (увеличить или конденсатор, или резистор) в 2 … 4 раза. Из-за неисправности диода D1 конденсатор C2 может разряжаться слишком долго, это также может вызывать неустойчивый сброс микропроцессора.

c)       Если замок подаёт признаки жизни (красный светодиод часто мигает, на считывающей чашке формируются импульсы опроса), но ключи не заносятся в память, то проверьте работу AT24C16 – качество формирования логических уровней интерфейса I2C (выв. 18 и 19 U2 или выв. 6 и 5 U1).

7. Литература

1.        Dallas Semiconductor Data Book, Fall 1997
2.        Dallas Semiconductor Book of iButton Standarts
3.        Dallas Semiconductor User Manual, “DS1990A, Serial Number iButtonTM
4.        Dallas Semiconductor Application Note 74, “Reading and Writing iButtons via Serial Interfaces”
5.        iButton Devices site:maximintegrated.com.
6.        Atmel Corporation, Microcontroller Data Book, October 1995
7.        Atmel Corporation, Nonvolatile Memory Data Book, May 1996
8.        AT89C2051 site:atmel.com

 

Комментарии  

 
-2 #1 Константин 05.03.2014 00:22
Вот очень бы хотелось, чтоб был не один выход управления замком (открытие), а два порта выдавали команды открытия и закрытия замка поочередно. Эта функция будет удобна для электромеханиче ских задвижек, с использованием приводов от авто-сигнализации, или системы "краб" на электродвигател е от стеклоподъемник а, но в таком случае, нужно использовать два порта для концевиков.
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page