Электронный замок и ключи на attiny2313

Электронный замок и ключи на attiny2313

Устройство собрано на микроконтроллере ATtiny2313, к которому подключена внешняя энергонезависимая память EEPROM – 24C16. Доступны исходники, проверена работа “на железе”. Контроллер доступа работает с ключами типа DS1990, поддерживает до 500 шт. Программирование контроллера доступа через мастер ключ или через джамперы на плате.
Контроллер доступа кроме кнопки открытия замка имеет концевик, отслеживающий время незакрытой двери. Время сработки сигнала программируется перемычкой JP2 (от 10 сек до 127сек).

Контроллер на электронных ключах DS1990A.

Поддерживает до 500 ключей. Устройство выполнено на микроконтроллере AVR: ATtiny2313.

Принципиальная схема считывателя ключей i-Button DS1990 (кликните по схеме для увеличения):

Инструкция по программированию

Рабочий режим – при подачи 12В на контроллер светодиод мигает 1Гц.
Режим программирования – светодиод мигает 2 Гц.
При нажатии на кнопку “OPEN” серия коротких звуковых сигналов на время открытия замка.
Концевой датчик двери (NC) отслеживает несанкционированный проход без ключа.

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

Внимание. Запрограммировать время ожидания закрытой двери МОЖНО ТОЛЬКО ПЕРЕМЫЧКОЙ JP2.

Звуковые сигналы

1 короткий сигнал – ключ записан в память контроллера.
2 коротких сигнала – ключ уже записан в памяти контроллера.
5 коротких сигнала – выход из режима программирования.
1 длинный сигнал – память ключей стерта из контроллера.
короткие сигналы 20сек. – память ключей заполнена.

Запись МАСТЕР Ключа и времени открывания замка

1 – Выключить питание контроллера.
2 – Нажать кнопку “OPEN”
3 – Удерживая кнопку подключить питание к контроллеру, через 5 сек. контроллер “ПИСКНЕТ”,
светодиод будет мигать с частотой 2 Гц.
4 – Отпустить кнопку.
5 – Поднесите ключ к считывателю, раздастся одиночный звуковой сигнал,
Мастер ключ ЗАПИСАН, при этом запишется время открытия замка 1 сек.

6 – Удерживая ключ на считывателе – считаем звуковые сигналы,
кол-во определяет требуемое время отрывания замка, приращение 1 сек. Но не более 32сек.
7 – Отключаем питание контроллера или выдерживаем паузу 20 сек.

Стирание всей памяти ключей.

1 – Рабочий режим.
2 – Нажимаем кнопку “OPEN” и удерживая подносим к считывателю МАСТЕР ключ и держим, через 10 сек. раздастся продолжительный звуковой сигнал – память ключей стёрта.
3 – Отпускаем кнопку убираем ключ.

Добавление новых ключей

1 – Подносим Мастер-ключ к считывателю удерживаем 5 сек, раздастся 2 коротких звуковых сигнала, светодиод будет мигать с частотой 2 Гц.
2 – Поднеся поочерёдно к считывателю дополнительные ключи – раздастся короткий звуковой сигнал, – ключ ЗАПИСАН, если раздастся 2 коротких звуковых сигнала – ПОПЫТКА ЗАПИСАТЬ ДУБЛИКАТ КЛЮЧА.
3 – Записываем требуемое кол-во (до 500) ключей. Пауза между записываемыми ключами не более 20 сек.
4 – Отключаем питание контроллера или выдерживаем паузу 20 сек.

Программирование контроллера доступа через ДЖАМПЕРЫ JP1,JP2,JP3,JP4

JP1 – Время работы РЕЛЕ, приращение 1 сек.
JP2 – Время ожидания закрытия двери , приращение 1 сек.
JP3 – Добавление новых ключей (максимум – 500).
JP4 – Стирание всех ключей из памяти контроллера.

Джампер выполняют свою функцию при постоянном замыкании на время использования.

Внешний вид собранного устройства:

«Время работы РЕЛЕ» – JP1 на всём протяжении замыкании джампера мигает красный светодиод с частотой 1 Гц. и звучит короткий звуковой сигнал бипера. С каждым звуковым и световым сигналом (зелёный светодиод) к переменной ‘Время работы РЕЛЕ’ прибавляется по 1 секунде. Всего может быть от 1 сек до 32. Отсчитав нужное количество секунд снимите перемычку.

«Время ожидания закрытой двери» – JP2 на всём протяжении замыкании джампера мигает красный светодиод с частотой 1 гц. и звучит короткий звуковой сигнал Бипера. С каждым звуковым и световым зелёным сигналом переменная ‘Время ожидания закрытой двери’ прибавляется по 1 секунде, всего может быть от 5 сек до 126. Отсчитав нужное количество секунд снимите джампер.

«Добавление новых ключей» – JP3 на всём протяжении замыкания джампера красный светодиод мигает с частотой 2 Гц. Поднося ключ к считывателю при удачном считывании прозвучит короткий звуковой сигнал бипера и светодиод мигнёт зелёным цветом — ключ записан. Если ключ уже записан в памяти, то при попытки записать его снова раздаётся 2 коротких сигнала бипера. При попытки записать в память больше 500 ключей постоянно мигает красный светодиод с частотой 2 Гц. и периодически звучит короткий звуковой сигнал бипера. Снимите джампер.

«Стирание всех ключей из памяти контроллера» – JP4 через 3 сек после замыкания издаётся 5 коротких сигнала бипера, пауза, затем непрерывно звучит бипер на время стирания (примерно 10сек) — память ключей стёрта. Уберите джампер.

Проверить контроллер доступа на электронных таблетках i-Button DS1990 удалось на 35 ключах, больше нету.
Ток потребления контроллера доступа на микроконтроллере ATtiny2313 около 50мА.
На выходе сильноточное реле с контактной группой на 10А.

Контроллер доступа на электронных ключах i-button (ds1990)

Устройство собрано на микроконтроллере ATtiny2313, к которому подключена внешняя энергонезависимая память EEPROM – 24C16. Доступны исходники, проверена работа “на железе”. Контроллер доступа работает с ключами типа DS1990, поддерживает до 500 шт. Программирование контроллера доступа через мастер ключ или через джамперы на плате.
Контроллер доступа кроме кнопки открытия замка имеет концевик, отслеживающий время незакрытой двери. Время сработки сигнала программируется перемычкой JP2 (от 10 сек до 127сек). Контроллер на электронных ключах DS1990A. Поддерживает до 500 ключей. Устройство выполнено на микроконтроллере AVR: ATtiny2313. Принципиальная схема считывателя ключей i-Button DS1990 (кликните по схеме для увеличения): Инструкция по программированию Рабочий режим – при подачи 12В на контроллер светодиод мигает 1Гц.
Режим программирования – светодиод мигает 2 Гц.
При нажатии на кнопку “OPEN” серия коротких звуковых сигналов на время открытия замка.
Концевой датчик двери (NC) отслеживает несанкционированный проход без ключа.
Контроллер подаёт звуковые сигналы если:
1 – После открытия двери, дверь осталась открытой больше запрограммированного времени прохода.
2 – Открытие двери без запрограммированного ключа или кнопкой “OPEN” , контроллер начинает издавать короткие двойные звуковые сигналы до момента закрытия двери.

Внимание. Запрограммировать время ожидания закрытой двери МОЖНО ТОЛЬКО ПЕРЕМЫЧКОЙ JP2. Звуковые сигналы 1 короткий сигнал – ключ записан в память контроллера.
2 коротких сигнала – ключ уже записан в памяти контроллера.
5 коротких сигнала – выход из режима программирования.
1 длинный сигнал – память ключей стерта из контроллера.
короткие сигналы 20сек. – память ключей заполнена. Запись МАСТЕР Ключа и времени открывания замка 1 – Выключить питание контроллера.
2 – Нажать кнопку “OPEN”
3 – Удерживая кнопку подключить питание к контроллеру, через 5 сек. контроллер “ПИСКНЕТ”,
светодиод будет мигать с частотой 2 Гц.
4 – Отпустить кнопку.
5 – Поднесите ключ к считывателю, раздастся одиночный звуковой сигнал,
Мастер ключ ЗАПИСАН, при этом запишется время открытия замка 1 сек. 6 – Удерживая ключ на считывателе – считаем звуковые сигналы,
кол-во определяет требуемое время отрывания замка, приращение 1 сек. Но не более 32сек.
7 – Отключаем питание контроллера или выдерживаем паузу 20 сек. Стирание всей памяти ключей. 1 – Рабочий режим.
2 – Нажимаем кнопку “OPEN” и удерживая подносим к считывателю МАСТЕР ключ и держим, через 10 сек. раздастся продолжительный звуковой сигнал – память ключей стёрта.
3 – Отпускаем кнопку убираем ключ. Добавление новых ключей 1 – Подносим Мастер-ключ к считывателю удерживаем 5 сек, раздастся 2 коротких звуковых сигнала, светодиод будет мигать с частотой 2 Гц.
2 – Поднеся поочерёдно к считывателю дополнительные ключи – раздастся короткий звуковой сигнал, – ключ ЗАПИСАН, если раздастся 2 коротких звуковых сигнала – ПОПЫТКА ЗАПИСАТЬ ДУБЛИКАТ КЛЮЧА.
3 – Записываем требуемое кол-во (до 500) ключей. Пауза между записываемыми ключами не более 20 сек.
4 – Отключаем питание контроллера или выдерживаем паузу 20 сек. Программирование контроллера доступа через ДЖАМПЕРЫ JP1,JP2,JP3,JP4 JP1 – Время работы РЕЛЕ, приращение 1 сек.
JP2 – Время ожидания закрытия двери , приращение 1 сек.
JP3 – Добавление новых ключей (максимум – 500).
JP4 – Стирание всех ключей из памяти контроллера.
Джампер выполняют свою функцию при постоянном замыкании на время использования. Печатная плата: Внешний вид собранного устройства: «Время работы РЕЛЕ» – JP1 на всём протяжении замыкании джампера мигает красный светодиод с частотой 1 Гц. и звучит короткий звуковой сигнал бипера. С каждым звуковым и световым сигналом (зелёный светодиод) к переменной ‘Время работы РЕЛЕ’ прибавляется по 1 секунде. Всего может быть от 1 сек до 32. Отсчитав нужное количество секунд снимите перемычку.

«Время ожидания закрытой двери» – JP2 на всём протяжении замыкании джампера мигает красный светодиод с частотой 1 гц. и звучит короткий звуковой сигнал Бипера. С каждым звуковым и световым зелёным сигналом переменная ‘Время ожидания закрытой двери’ прибавляется по 1 секунде, всего может быть от 5 сек до 126. Отсчитав нужное количество секунд снимите джампер.

«Добавление новых ключей» – JP3 на всём протяжении замыкания джампера красный светодиод мигает с частотой 2 Гц. Поднося ключ к считывателю при удачном считывании прозвучит короткий звуковой сигнал бипера и светодиод мигнёт зелёным цветом — ключ записан. Если ключ уже записан в памяти, то при попытки записать его снова раздаётся 2 коротких сигнала бипера. При попытки записать в память больше 500 ключей постоянно мигает красный светодиод с частотой 2 Гц. и периодически звучит короткий звуковой сигнал бипера. Снимите джампер.

Читайте также:  Защита сооружений от природного электричества

Подключаем кнопку к микроконтроллеру ATtiny2313, простая программа

Описан простой эксперимент с подключением кнопки к AVR микроконтроллеру, разобрана не сложная программа на языке Си для обработки нажатий кнопки. Разберемся с особенностями подключения кнопки к портам МК, а также с методами считывания состояний кнопки на языке Си.

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

В этой статье мы подключим к микроконтроллеру кнопку, контакты которой при нажатии замыкаются, а при отжатии – размыкаются (замыкающая кнопка).

Принципиальная схема эксперимента

Для того чтобы можно было хоть как-то наблюдать и управлять чем-то с помощью кнопки мы подключим к микроконтроллеру еще два светодиода. Схемка очень простая, вот она:

Рис. 1. Принципиальная схема эксперимента с микроконтроллером ATtiny2313 и кнопкой.

Как видим, к двум портам PB0 и PB1 через ограничивающие резисторы подключены два светодиода, а к порту PD2 – кнопка и она также с ограничивающим резистором. Для подключения программатора к МК используется разъем Conn 1 (AVR-ISP), а для подключения схемы к отдельному источнику питания +5В предназначены два контакта – P1 и P2.

Рис. 2. Собранная на беспаечной макетной панели схема эксперимента с микроконтроллером и кнопкой.

Важно заметить что для безопасного использования порта с кнопкой, последовательно ей подключен резистор с сопротивлением на 1 КОм (можно подключить и на другое сопротивление 600 Ом – 2 КОм). Примите это как правило хорошего тона в работе с пинами, которое обережет порт МК от выхода из строя в случае ошибочной подачи на пин высокого уровня и при замкнутой кнопке.

Структура портов ввода-вывода в AVR микроконтроллерах

Пины микроконтроллера являются универсальными GPIO (General Purpose Input Output), к ним можно подключать как исполнительные устройства (индикаторы, силовые ключи), так и разнообразные цифровые датчики (кнопки, переключатели).

Несколько пинов в МК могут быть подключены к АЦП/ЦАП (Аналогово-Цифровой-Преобразователь и наоборот), с их помощью можно выполнять анализ и генерацию аналоговых сигналов. Обычные GPIO не умеют работать с аналоговыми сигналами, у них на входе/выходе может быть только 0 (0В) или 1 (+5В).

К каждому пину GPIO внутри микроконтроллера подключены несколько блоков и электронных компонентов, о которых полезно знать:

  • Между пином порта и каждой из шин питания (GND и VCC) подключено по диоду. Они используются для “гашения” кратковременных помех, скачков напряжения относительно пина и каждой из шин питания;
  • Также между пином и GND включен конденсатор. Точно не знаю зачем он нужен, возможно для защиты от помех, для предотвращения дребезга контактов при использовании кнопок и переключателей подключенных к пину, или еще для чего-то;
  • К каждому пину подключен электронный ключ с резистором – это подтяжка пина к напряжению источника питания (Pull-UP). Данный электронный ключ включается программно и служит для установки по умолчанию высокого логического уровня 1 (+5В) при работе с пином в режиме ввода (Input);
  • Между пином и каждой из шин питания (GND и VCC) включены еще два электронных ключа (без резисторов), они нужны для установки на пине высокого (+5В) или низкого (0В) логического уровня при работе пина в режиме вывода (Output).

Для программного управления и конфигурирования каждого из портов применяются три специальных регистра, к примеру для порта “B”:

  • DDRB – регистр (8 бит) для установки режимов работы пинов – на ввод или вывод. Осуществляется установкой соответствующих бит в регистре;
  • PORTB – регистр для управление состоянием пинов порта в режиме вывода – высокий или низкий уровень. Также используется в режиме ввода, применяется для включения подтягивающих резисторов (Pull-UP) и установки высокого уровня на входе по умолчанию;
  • PINB – регистр, который содержит логические состояния пинов в порте, используется для чтения значений портов, которые сконфигурированы в режиме ввода.

Более детально узнать об устройстве портов для конкретной модели микроконтроллера можно из его даташита, в разделе “I/O-Ports”, также там могут быть приведены примеры кода на Си и Ассемблере для работы с портами.

Пин RESET в качестве порта ввода-вывода

Полезно знать что пин “RESET” микросхемы (у нас на схеме это пин под номером 1), который предназначен для сброса выполнения программы микроконтроллера (перезагрузки), также можно использовать для подключения кнопок, светодиодов и других устройств ввода-вывода, то есть он может быть превращен в обычный GPIO.

Это может быть полезно если у микросхемы не хватает пинов для вашей конструкции. Например при сборке какого-то устройства на чипе ATtiny13 ( 8 выводов, 2шт – питание, 5шт – порты ввода-вывода, 1шт -для RESET) у вас оказалось что не хватает одного пина для светодиода. Здесь может быть несколько вариантов решения проблемы:

  1. Перепрограммирование пина с RESET под порт ввода-вывода;
  2. Подключение светодиода к одному из соседних уже использованных пинов, применив некоторые хистросты в схемном решении и с учетом возможности его общего использования;
  3. Использование другого МК у которого больше пинов, например ATtiny2313.

Что из этих вариантов проще и дешевле по финансам/времени – судите по своему случаю.

Для превращения пина “RESET” в порт ввода-вывода придется изменить специальный фьюз – RSTDISBL (Reset Disable). Но прежде чем это сделать нужно помнить что после данной операции перепрограммировать микроконтроллер станет возможным только с применением высоковольтного программатора (на 12В), обычный USB ISP или другой программатор с питанием от 5В сделать свою работу уже не сможет.

Программа на Си

Итак, у нас есть одна кнопка и два светодиода которые подключены к микроконтроллеру, что же с ними можно сделать? – а сделаем мы вот что (алгоритм):

  1. После включения питания светодиоды будут мигать попеременно и с задержкой в 300 миллисекунд;
  2. При нажатии и удержании кнопки будет светиться только синий светодиод;
  3. После отжатия кнопки синий светодиод мигнет 3 раза с задержкой 500 миллисекунд, после чего светодиоды снова будут мигать поочередно и с задержкой 300 миллисекунд.

Пример реализации такого алгоритма на языке Си под AVR приведен ниже. Создадим новый файл для нашей программы и откроем его для редактирования:

Поместим следующий код в тело файла:

Первым делом мы задаем константу F_CPU, которая укажет компилятору рабочую частоту ядра микроконтроллера, это нужно чтобы некоторые подпрограммы и функции работали корректно. В нашем примере используется функция задержки по времени – “_delay_ms” из библиотеки “util/delay.h”, которая просчитывает время затраченное на холостые такты, опираясь на значение в константе F_CPU.

Посмотреть код библиотеки “delay” для организации задержки по времени и в котором используется константа F_CPU, можно в GNU Linux при помощи любого текстового редактора, к примеру можно выполнить вот такую команду:

Заводская установленная частота внутреннего RC генератора в микроконтроллере ATtiny2313 равняется 8000000Гц (8МГц), также по умолчанию установлен фьюз деления частоты – CKDIV8 (Clock Div >

Посмотреть какие фьюзы установлены в микроконтроллере можно при помощи avrdude или же графической оболочке к нему под названием AVR8 Burn-O-Mat.

Дальше в программе определены макросы для управления состоянием портов к которым подключены светодиоды: LED_BLUE_ON, LED_BLUE_OFF, LED_RED_ON, LED_RED_OFF. Вызвав подобный макрос в любом месте программы мы очень просто можем зажечь или погасить каждый из светодиодов, не придется повторять его код, что в свою очередь упростит программу и сделает ее более наглядной.

В основной программе “void main(void)” мы начинаем работу с конфигурации портов:

ATtiny2313

8 битный AVR микроконтроллер с 2 КБ программируемой в системе Flash памяти

Характеристики:

  • AVR RISC архитектура
  • AVR – высококачественная и низкопотребляющая RISC архитектура
    120 команд, большинство которых выполняется за один тактовый цикл
    32 8 битных рабочих регистра общего применения
    Полностью статическая архитектура
  • ОЗУ и энергонезависимая память программ и данных
    2 КБ самопрограммируемой в системе Flash памяти программы, способной выдержать 10 000 циклов записи/стирания
    128 Байт программируемой в системе EEPROM памяти данных, способной выдержать 100 000 циклов записи/стирания
    128 Байт встроенной SRAM памяти (статическое ОЗУ)
    Программируемая защита от считывания Flash памяти программы и EEPROM памяти данных
  • Характеристики периферии
    Один 8- разрядный таймер/счетчик с отдельным предделителем
    Один 16-разрядный таймер/счетчик с отдельным предделителем, схемой сравнения, схемой захвата и двумя каналами ШИМ
    Встроенный аналоговый компаратор
    Программируемый сторожевой таймер со встроенным генератором
    USI – универсальный последовательный интерфейс
    Полнодуплексный UART
  • Специальные характеристики микроконтроллера
    Встроенный отладчик debugWIRE
    Внутрисистемное программирование через SPI порт
    Внешние и внутренние источники прерывания
    Режимы пониженного потребления Idle, Power-down и Standby
    Усовершенствованная схема формирования сброса при включении
    Программируемая схема обнаружения кратковременных пропаданий питания
    Встроенный откалиброванный генератор
  • Порты ввода – вывода и корпусное исполнение
    18 программируемых линий ввода – вывода
    20 выводной PDIP, 20 выводной SOIC и 32 контактный MLF корпуса
  • Диапазон напряжения питания
    от 1.8 до 5.5 В
  • Рабочая частота
    0 – 16 МГц
  • Потребление
    Активный режим:
    300 мкА при частоте 1 МГц и напряжении питания 1.8 В
    20 мкА при частоте 32 кГц и напряжении питания 1.8 В
    Режим пониженного потребления
    0.5 мкА при напряжении питания 1.8 В

Блок- схема ATtiny2313:

Расположение выводов ATtiny2313:

ATtiny2313 – низкопотребляющий 8 битный КМОП микроконтроллер с AVR RISC архитектурой. Выполняя команды за один цикл, ATtiny2313 достигает производительности 1 MIPS при частоте задающего генератора 1 МГц, что позволяет разработчику оптимизировать отношение потребления к производительности.

Читайте также:  Расчет триггера шмитта на оу

AVR ядро объединяет богатую систему команд и 32 рабочих регистра общего назначения. Все 32 регистра непосредственно связаны с арифметико-логическим устройством (АЛУ), что позволяет получить доступ к двум независимым регистрам при выполнении одной команды. В результате эта архитектура позволяет обеспечить в десятки раз большую производительность, чем стандартная CISC архитектура.

ATtiny2313 имеет следующие характеристики: 2 КБ программируемой в системе Flash память программы, 128 байтную EEPROM память данных, 128 байтное SRAM (статическое ОЗУ), 18 линий ввода – вывода общего применения, 32 рабочих регистра общего назначения, однопроводный интерфейс для встроенного отладчика, два гибких таймера/счетчика со схемами сравнения, внутренние и внешние источники прерывания, последовательный программируемый USART, универсальный последовательный интерфейс с детектором стартового условия, программируемый сторожевой таймер со встроенным генератором и три программно инициализируемых режима пониженного потребления. В режиме >Прибор изготовлен по высокоплотной энергонезависимой технологии изготовления памяти компании Atmel. Встроенная ISP Flash позволяет перепрограммировать память программы в системе через последовательный SPI интерфейс или обычным программатором энергонезависимой памяти. Объединив в одном кристалле 8- битное RISC ядро с самопрограммирующейся в системе Flash памятью, ATtiny2313 стал мощным микроконтроллером, который дает большую гибкость разработчика микропроцессорных систем.

Восстановление конфигурации Fuse-битов ATtiny13

В радиолюбительской практике наибольшее распространение получили последовательные (SPI – Serial Peripheral Interface) программаторы, имеющие ряд достоинств: их схемы, как правило, проще, чем у параллельных программаторов (в крайнем случае, можно обойтись даже пятью проводниками и двумя резисторами); имеется множество вариантов как самих программаторов, так и управляющих программ под различные ОС; для подключения программатора можно выбрать практически любой порт компьютера – существуют схемы как LPT и СОМ, так и USB-программаторов. К тому же, такой программатор позволяет “прошить” МК, не выпаивая его из устройства (ISP – In System Programmable).

Тем не менее, SPI-режим программирования является, все-таки, урезанным; и некоторые возможности полноценного параллельного программирования в нем не доступны. Наиболее распространенной проблемой последовательного программирования считается невозможность произвести какие-либо действия с МК, если определенные fuse-ячейки этого МК были изменены относительно значений по умолчанию, – в таком случае чип “объявляет забастовку”, и не выходит на связь с компьютером: его уже нельзя ни прочитать, ни “прошить” последовательным программатором. И он кажется вышедшим из строя, при этом программа PonyProg, например, выдает такое вот сообщение об ошибке: “Device missing or unknown device (-24), хотя в конечной схеме этот МК может работать вполне нормально.

Причиной такой “необщительности” может быть, к примеру, установка в ноль (а ноль в fuse-битах у AVR означает, что данный бит запрограммирован) бита RSTDISBL – что приводит к отключению внешнего входа сброса и превращению его в обычную линию ввода-вывода; а без внешнего сброса МК не сможет войти в SPI-режим программирования, и будет недоступен для ПК. Еще одна причина, по которой МК становится “невидимым” для SPI-программатора – отсутствие тактирования: fuse-биты, управляющие тактовым генератором (CKSEL0-3), могут быть установлены таким образом, что МК отключит внутренние цепи тактирования и будет требовать внешнего генератора – источника тактовых импульсов; а без тактирования SPI-программирование невозможно.

Причем, неправильно “зашитые” fuse- байты могут быть следствием не только невнимательности или незнания – вполне вероятны также и аппаратные сбои при “прошивании”, особенно если “шьют” через одну из вариаций на тему “пяти проводков” – поэтому, от “впавших в кому” МК, лежащих на полке и ожидающих чудесного исцеления, не застрахован никто (а если верить интернету, то через это прошел чуть ли не каждый второй любитель AVR – причем, не обязательно из новичков).

Если же такая неприятность все-таки произошла, и МК перестал устанавливать связь с компьютером, то исправить неправильно выставленные fuse-байты с помощью последовательного программатора уже не удастся. Тем не менее, вовсе не обязательно делать или приобретать новый параллельный программатор (или, тем более, отладочный комплект) только для того, чтобы “вылечить” пару “коматозных” МК, тем более, если старый SPI- программатор вполне устраивает – для этого удобнее воспользоваться простым устройством, схема которого приведена на сайте www.radiochipi.ru

Прибор предназначен для “лечения” МК ATtiny2313, но может быть переделан и для любой другой модели AVR – как Tiny, так и Меда – для чего прилагается хорошо закомментированный “исходник” микропрограммы, что дает возможность переписать ее применительно к тому МК, которому в данный момент требуется “скорая помощь”. Суть работы такого устройства заключается в том, “пациента” в режим параллельного программирования, и эмулировать на его линиях те сигналы “настоящего” программатора, которые отвечают за изменение состояния fuse-ячеек; а затем записать в этот МК значения fuse-ячеек по умолчанию.

Данное устройство выставляет заводские значения для всех fuse-байтов: старшего, младшего и дополнительного; а вдобавок еще и стирает у “пациента” память программ и данных – в результате чего он приобретает состояние “чистой” микросхемы. В радиолюбительской литера-туре и интернете уже описывались подобные устройства (под названиями Fuse Doctor, AVR Doctor, AVR Reanimator, AVR Айболит и т.п.), но данное обладает несколькими особенностями, делающими работу с ним немного приятнее. Во-первых, во всех известных автору конструкциях “доктор” и “пациент” подключались друг к другу, практически, “нога к ноге” (за исключением некоторых выводов, которые у “доктора” и “пациента”, согласно схеме, не должны соединяться).

То есть, линии РВ0-РВ7 – к линиям РВ0-РВ7, линия PD6 – к линии PD6 и Т.Д- Что, в случае сборки схемы печатным способом, значительно усложняло монтаж – требовалось множество перемычек, или же двухсторонняя разводка (правда, некоторые авторы предлагали просто устанавливать микросхемы друг на друга, отгибая не соединяемые выводы в сторону и паяя на них резисторы/проводники; но надежность контакта при такой вот “микроконтроллерной камасутре” ставится под сомнение; а к чему приводит отгибание-загибание выводов у микросхем, мы все прекрасно знаем). Здесь же микросхемы расположены как бы “бок об бок”, “валетом”, что делает разводку печатной платы очень простой.

В авторском варианте, который приведен на рис.2, она во многом повторяет принципиальную схему, и содержит всего три небольшие перемычки. Размер платы – 60×60 мм. Во-вторых, некоторые устройства требовали двух напряжений: 5 В – для питания МК, и 12 В – на линию reset “пациента”, для ввода в режим программирования. Этой схеме требуется только одно напряжение, которое может иметь разброс в достаточно широких пределах – главное, чтобы оно было не менее 12 В. В-третьих, большинство описанных устройств не допускают “горячей” замены “пациентов” в случае, если нужно “вылечить” несколько МК подряд – после каждого “прошивания” у них нужно отключить питание, заменить “больного”, затем включить питание вновь и т.д. Данное устройство устанавливает все выходы в лог.

О после каждого “прошивания”, что позволяет “лечить” микросхемы “конвейером” – подключил питание, установил “пациента”, нажал на кнопку “старт”, посмотрел результат “лечения” по HL1, снял, вставил нового “пациента”, нажал, глянул HL1, снял, вставил и т.д. И все это без отключения питания (хоть “палатку” на радиорынке открывай!). Ну и, в-четвертых, часто в подобных устройствах отсутствует верификация записанных fuse- битов и индикация результата “лечения” (по типу “удачно/неудачно”).

В данной конструкции верификация предусмотрена, а для индикации ее результатов служит светодиод HL1, который может иметь три состояния:

  1. Горит непрерывно – программирование “пациента” прошло
    успешно, прочитанные fuse-байты соответствуют записанным;
    устройство ожидает очередного “пациента”;
  2. Мигает с частотой 2Гц – ошибка в
    программировании “пациента”:
    прочитанные fuse-байты не совпадают с записанными; “пациент” не вошел в режим программирования, не установлен или неисправен (в
    программе предусмотрена проверка на наличие “пациента” – исправный AVR устанавливает лог.1 на линии BSV/RDY (вывод 3 для ATtiny2313) при вхождении в режим параллельного программирования); устройство ожидает очередного
    “пациента”;
  3. Не ГОРИТ – идет процесс программирования и верификации. Программирование исправного “пациента” длится менее секунды, и это состояние светодиода в нормальных условиях не должно быть заметно. Если же светодиод находится в погашенном состоянии относительно долго, то, скорее всего, процесс “прошивания” зациклился из-за того, что неисправный “пациент” завис в режиме записи и не выставляет сигнал готовности BSY/RDY, ожидаемый “доктором”.

Как уже было сказано, устройство является достаточно универсальным, и применимо для “лечения” практически любого МК серии AVR. При этом вовсе не обязательно изготавливать по отдельному экземпляру устройства для различных микроконтроллеров, отличающихся числом и расположением выводов – достаточно просто добавлять, по мере необходимости, переходники под цоколевку очередного “заболевшего”, и переписывать соответствующим образом управляющую программу. Переходник представляет собой панельку DIP-20, которая вставляется своими “ножками” в панель для “пациента” на плате устройства. Сверху к такой панельке (к контактам для выводов микросхемы) подпаивают (или просто вставляют) проводники в тех местах, в которых подходят линии питания и управления к “пациенту” на плате.

Другими концами эти проводники припаиваются к выводам второй панельки – под тот МК, которому требуется “лечение” – в соответствии с расположением его управляющих линий, которое можно уточнить в фирменном даташите. Получается своеобразный разъем, штекер (просто панелька DIP-20) которого вставляется в панельку DIP-20 для “пациента” на плате, а уже в его гнездо (еще одна панелька) вставляется новый “пациент”. Что же касается программы, то ей может потребоваться коррекция, т.к. разные модели МК AVR часто требуют различных действий как для входа в режим программирования, так и для изменения fuse-байтов. К тому же и сами fuse-байты (в т.ч. и их количество) у разных моделей МК различны – более подробную информацию можно получить в [Л. 1,2,3], или в фирменной документации.

Читайте также:  Cверлильный станок своими руками

А чтобы было проще разобраться в исходной программе, я снабдил ее подробными комментариями. В качестве “доктора” в данном устройстве используется такой же, как и “пациент”, микроконтроллер ATtiny2313 – он так же устанавливается на панельке, чтобы после восстановления всех “заболевших” микросхем его можно было бы снять и использовать в других проектах. Для работы в этом устройстве все fuse- биты “доктора” должны быть такими, какие установлены в нем по умолчанию (с завода); единственное – для более стабильной работы (особенно при нестабильном напряжении питания), в “докторе” можно включить систему BOD, настроив на уровень 2,7 В (установкой fuse-бита BODLEVEL1 в ноль).

Внешний кварц “доктору” не требуется, он работает от встроенного RC-генератора. Микросхему DA1 (78L05) можно заменить отечественным аналогом КР1157ЕН502, либо более мощной 7805 – но она гораздо дороже, а ее мощность для данной схемы не требуется. Транзистор VT1 здесь работает в ключевом режиме, и может быть любым, структуры NPN – например, КТ315, 2SC1815, 2SC9014, 2SC1749S и др.; но для некоторых моделей придется изменить разводку платы. Предохранительный диод VD1 может быть любым, на ток не менее 150 мА. его задача – защитить схему от случайной переполюсовки питания. Все резисторы в схеме – малогабаритные, 0,125 Вт – их номинал может отличаться от указанного в довольно широких пределах. Светодиод HL1 – любой, индикаторный.

И в заключение, хочется рассказать об интересной особенности поведения некоторых экземпляров МК ATtiny2313 при их SPI-программировании с помощью программы PonyProg2000 (возможно, также ведут себя и другие модели МК, в т.ч. и с другими программами – но автору пока еще не доводилось поэкспериментировать с чем-либо, кроме связки ATtiny2313-PonyProg2000).

Суть проблемы состоит в следующем: иногда, при попытке прочесть или записать МК, программа PonyProg выдает сообщение об ошибке “Device missing or unknown device (-24)” – и это притом, что никакие fuse-биты в данном МК не изменялись – более того, микросхема может быть даже новой, ни разу еще не “прошитой”! “Лечение” при помощи описанного выше устройства никаких результатов не дает – при повторной попытке чтения/записи сообщение об ошибке появляется вновь.

МК кажется вышедшим из строя, причем – ни с того, ни сего. Но если в данном сообщении нажать кнопку “Ignore”, тем самым заставив “Пони” проигнорировать отсутствие ответа МК. и все равно попытаться прочитать/записать микросхему, то этот МК нормально прочитается или “прошьется”. После такой вот принудительной “прошивки” большинство “прикидывающихся мертвыми” МК будут вполне нормально работать, притом без каких- либо сбоев (кроме описанного выше сообщения при попытке установить связь с ПК)!

По видимому, дело здесь в том, что некоторые экземпляры МК не генерирует корректное подтверждение в ответ на запрос программатора, в результате чего PonyProg делает вывод об их неисправности; при этом остальные команды программатора эти МК воспринимают нормально и выполнят корректно. Вполне возможно, что это является особенностью (а точнее сказать, “болезнью”) МК AVR (не просто же так в PonyProg включили такую кнопочку – “Ignore”) – у автора данной статьи три из десяти МК вели себя подобным образом, причем чаще начиналось это не сразу, а спустя несколько “прошивок”.

А может быть, виной всему статическое напряжение, имеющееся на человеческих руках. Но, как бы там ни было, в ответственных конструкциях (вроде устройств зажигания, автоматов отопления, полива, сигнализациях и т.п.) такие ‘подорвавшие доверие” МК использовать, все-таки, не желательно. А вот в игрушках, елочных гирляндах, дверных звонках и других вспомогательных устройствах (вроде описанного выше ©) они вполне проработают много лет – и притом без каких-либо проблем.

Прошивка для микроконтроллера – fuse-reanimator-for-avr (9 КБ).

Кодовый Замок На Attiny2313

Название: Кодовый Замок На Attiny2313

Загрузил: Www ElEnBlog Ru блог об электронике

Длительность: 8 мин и 18 сек

Битрейт: 192 Kbps

10.92 MB и длительностью 8 мин и 18 сек в формате mp3.

Aliexpress Продать Отзыв 8 За Один Отзыв

www.ElEnBlog.ru -блог об электронике

Фотобудка Для Кота Проекты Амперки 1

Дверной Замок Rfid Arduino

Как Прошить Avr Микроконтроллер Attiny2313

Как Отремонтировать Блок Питания Ноутбука

20 Small Cnc Using Attiny2313

Контроллер Шагового Двигателя Униполярного На Attiny2313

Как Сделать Кодовый Замок Своими Руками

Attiny2313 Sd Card Talking Device

3 Самодельный Электро Замок Первая Версия

Микроконтроллеры С Алиэкспресс Attiny2313A

www.ElEnBlog.ru -блог об электронике

Часы На Attiny2313

Ты Не Пройдёшь Кодовый Замок На Логике

Электронный Замок На Калитку С Пультом Joylock

4 Самодельный Электро Замок Готово

Как Запрограммировать Микроконтроллер Attiny 13

Электронный Замок На Rfid Картах Своими Руками

Цифровой Кодовый Замок На Avr Attiny2313

Устройства На Микроконтроллерах Сенсорная Клавиатура

Самодельные Простые Часы На Микроконтроллере Attiny2313

Керамические Конденсаторы 10 Uf 50 V Smd

www.ElEnBlog.ru -блог об электронике

Электронный Кодовый Замок Своими Руками Coded Lock With His Own Hands

Беспроводная Зарядка Samsung Из Китая

www.ElEnBlog.ru -блог об электронике

Программатор Avr За 1 Usbasp

www.ElEnBlog.ru -блог об электронике

Обзор Система Дистанционного Управления Радио

www.ElEnBlog.ru -блог об электронике

Кодовый Замок На Ардуино Как Сделать Кодовый Замок

Подключение И Прошивка Микроконтроллера Avr

Ремонт Мыши Logitech M170

www.ElEnBlog.ru -блог об электронике

Китай Память 32 Gb

www.ElEnBlog.ru -блог об электронике

Как Спаять Провода Наушников

www.ElEnBlog.ru -блог об электронике

Импульсный Источник Питания 5A 30V Dc Dc Xl4005

www.ElEnBlog.ru -блог об электронике

Припой Solder Jinhu B 1 Из Китая

www.ElEnBlog.ru -блог об электронике

Не Заряжается Fly Ff243 Менять Гнездо

www.ElEnBlog.ru -блог об электронике

Arduino Uno R3 Кодовый Замок

Не Заряжается Акб Ремонт

www.ElEnBlog.ru -блог об электронике

Кодовый Замок Своими Руками

www.ElEnBlog.ru -блог об электронике

Как Вскрыть Кодовый Замок Не Зная Пароля

Печатные Платы Своими Руками 8

www.ElEnBlog.ru -блог об электронике

Dds Генератор Mhs 5200A Ложка Дёгтя

www.ElEnBlog.ru -блог об электронике

5 Зарядка Для 10 Шт 18650 За 5 Блок Питания 5 В 2 5 А

www.ElEnBlog.ru -блог об электронике

Новые Транзисторы Из Китая Обман Покупателей

www.ElEnBlog.ru -блог об электронике

00054 Паяем Провод Наушников Apple От Владимира Украина

www.ElEnBlog.ru -блог об электронике

Припой Зелёный Из Китая

www.ElEnBlog.ru -блог об электронике

Работа Кодового Механического Замка

Тест На Смерть Ssd Из Китая Kingdian S200 120 Gb

www.ElEnBlog.ru -блог об электронике

Зарядное Устройство Turnigy Reaktor 300W 20A 6S Тест На 20А

www.ElEnBlog.ru -блог об электронике

Сожги Все Предохранитель Китай 5 А

www.ElEnBlog.ru -блог об электронике

Пустое Интро Гача Лайф

Кодовый Замок На Attiny2313

Minecraft Fnaf Friends Fnaf Animatronics Unite Minecraft Roleplay

When Will We Heal

Thaumcraft And Botania Unite S2 Ep8 Finally The Golem

Ко Дню Защиты Детей Футаж

How To Install Mods On 18 Wos Haulin

Crystal Castles Telepath Purple Bastard Remix

How To Become A Millionaire W Your Friends Tower Unite Casino Funny Moments 2 Gmod

Baby Ice Bear The Rebel We Bare Bears Cartoon

Juice Wrld Until It S Over Official Audio

Crystal Castles Transgender Official

Цыгане Красивая Песня

Футажи Выстрела На Зеленом Фоне

Crystal Castles Femen Reversed

Rus Cover Bendy Chapter 2 Song Gospel Of Dismay На Русском

Wizards Unite Dark Chamber 5 No Potions Proficiency First

Моя Любимая Игра Танки Онлайн

Fan Festival 2 Day Event For Harry Potter Wizards Unite Plus Weekend Event

Unite The Magic Lego Elves Mini Movie

Crystal Castles Leni

Новый Артист Хаз Эшар Кирар Дог Г1Елделла Деттало 2019

How To Set Cm Theme In Micromax Unite 2 A106 And Any Android Device

Теа Тр Г Камала На Вече Ре Т Миннуллина 02

Crystal Castles Baptism Official Video

Сериал Ип Пирогова 2 Сезон 2019 Музыка Ost 10 Nxt Елена Подкаминская

Twin Sisters Separated At Birth Reunite On Gma

Commentary Crew Being Crackheads 2

Unboxing Panini Liga Este 2016 17 X3 Sobres 2

Культиватор Скоростной Комбинированный Кск 11 4 Агропромтехника

Best Of 90 S Club Dance Remixes Bootleg Mashup Retro Megamix 2017 Part 1

Топ 5 Лицемер Meme

Не Предам Не Отдам Lyrics

Scp 096 Vs Scp 173 Просто Бой Рисуем Мультфильмы 2

Русская Зима 2011 Kinder Старты Эстафета И Награждение

Free Smokepurpp Comethazine Ronny J Type Beat Achieve Prod D I R T

Новый Рабочий Промокод Для Мобильной Аватарии Игра Аватария Проверка На Честность

Botir Qodirov Xoji Onam Ботир Кодиров Хожи Онам Music Version

Path Of Exile 3 7 Весь Убер Контент Top Дуэлянт Рубака Ураган Лезвий Blade Storm

Валерия Стебловская Молитва Официальный Видеоклип

Гений Российской Коррупции Профессор

Toon Friends Part 7 Toon Friends Unite 2

Футаж Для Детского Дня Рождения 2 Года Девочке

Мини Рум Тур По Новому Дому Тиктокеров Как Проводят Карантин В Дрим Тим Tiktok Dream Team House

On My Own Meme Piggy Chapter 12 Warning Blood And Some Violence

04 Гоген Разрывы

Информатика 9 Класс Урок 29 Моделирование В Задаче Выбора Положения Жд Станции

Ahliddini Fahriddin Farahnoz Dardi Dil Ахлиддини Фахриддин Ва Фарахноз Дарди Дил

Рейтинг
( Пока оценок нет )
Загрузка ...
Adblock
detector