Микроконтроллер имеет 64 байта энергонезависимой памяти (EEPROM), которая используется для записи происходящих событий. Есть 3 типа событий: включение питания, правильный набор кода и неправильный набор кода. Одновременно с событием записывается время, прошедшее после предыдущей записи. Точность записи времени около 8 минут. Если время между записями превысило 50 суток, дальнейший счет времени останавливается. Естественно, что для точного счета времени надо использовать кварцевый, а не встроенный RC-генератор.
Содержимое энергонезависимой памяти постоянно побитно, с частотой 3815 Гц выводится на один из выводов микроконтроллера и может быть считано для контроля внешним компьютером. Объем памяти позволяет хранить 30 записей по 2 байта. Число циклов записи в EEPROM ограничено, поэтому для увеличения срока службы используется специальный формат записи, разобраться в нем можно по исходному коду программы. После включения питания секретный код равен числу 23232. Для его изменения надо: 1) набрать старый код, при этом сработает соленоид, открывающий замок; 2) в момент отключения соленоида должна быть нажата кнопка 2 — это переведет устройство в режим ввода нового пароля; 3) ввести новый пароль, при ошибке можно пользоваться клавишей сброса.
Все нажатия на клавиши и некоторые другие действия озвучиваются короткими звуковыми сигналами.
2. Схема
Рис. 6.12.
3. Комментарии к схеме
Питание на микроконтроллер подается постоянно, поэтому желательно использовать сетевой блок питания, а не батарейки.
В качестве исполнительного устройства проще всего использовать подходящий электромагнит. Но можно и электродвигатель, тогда надо добавить небольшую схему на основе выключателей, которая должна обеспечивать открытие замка при единице на соответствующем выводе микроконтроллера и закрытие при нуле.
4. План
Управляющую программу для чтения информации из EEPROM автор не написал, но возможность чтения заложена в программе микроконтроллера, так что, если найдутся желающие, автор будет только рад.
5. Программа
Программа относительно сложная, и автор не рекомендовал бы использовать ее для изучения ассемблера AVR, но тем не менее разобраться можно.
Текст программы: