Фьюз бит доктор avr своими руками

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

Принципиальная схема самодельного устройства, которое поможет оживить МК и восстановить значения FUSE-битов после последовательного программирования.

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

В радиолюбительской практике наибольшее распространение получили последовательные (SPI - Serial Peripheral Interface) программаторы, имеющие ряд достоинств:

  • Их схемы, как правило, проще, чем у параллельных программаторов (в крайнем случае, можно обойтись даже пятью проводниками и двумя резисторами);
  • Имеется множество вариантов как самих программаторов, так и управляющих программ под различные ОС;
  • Для подключения программатора можно выбрать практически любой порт компьютера -существуют схемы как LPT и СОМ, так и USB-программаторов.

К тому же, такой программатор позволяет "прошить" МК, не выпаивая его из устройства (ISP - In System Programmable).

Тем не менее, SPI-режим программирования является, все-таки, урезанным; и некоторые возможности полноценного параллельного программирования в нем не доступны.

Наиболее распространенной проблемой последовательного программирования считается невозможность произвести какие-либо действия с МК, если определенные fuse-ячейки этого МК были изменены относительно значений по умолчанию, - в таком случае чип "объявляет забастовку", и не выходит на связь с компьютером: его уже нельзя ни прочитать, ни "прошить" последовательным программатором.

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

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

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

Тем не менее, вовсе не обязательно делать или приобретать новый параллельный программатор (или, тем более, отладочный комплект) только для того, чтобы "вылечить" пару "коматозных" МК, тем более, если старый SPI-программатор вполне устраивает - для этого удобнее воспользоваться простым устройством, схема которого приведена на рис.1.

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

Прибор предназначен для "лечения" МК ATtiny2313, но может быть переделан и для любой другой модели AVR - как Tiny, так и Mega - для чего прилагается хорошо закомментированный "исходник" микропрограммы, что дает возможность переписать ее применительно к тому МК, которому в данный момент требуется "скорая помощь".

Суть работы такого устройства заключается в том, чтобы ввести "пациента" в режим параллельного программирования, и эмулировать на его линиях те сигналы "настоящего" программатора, которые отвечают за изменение состояния fuse-ячеек; а затем записать в этот МК значения fuse-ячеек по умолчанию.

Данное устройство выставляет заводские значения для всех fuse-байтов: старшего, младшего и дополнительного; а вдобавок еще и стирает у "пациента" память программ и данных - в результате чего он приобретает состояние "чистой" микросхемы.

Рис. 1. Принципиальная схема устройства для лечения FUSE битов в AVR микроконтроллере.

В радиолюбительской литературе и интернете уже описывались подобные устройства (под названиями Fuse Doctor, AVR Doctor, AVR Reanimator, AVR Айболит и т.п.), но данное обладает несколькими особенностями, делающими работу с ним немного приятнее.

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

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

Здесь же микросхемы расположены как бы "бок об бок", "валетом", что делает разводку печатной платы очень простой. В авторском варианте, который приведен на рис.2, она во многом повторяет принципиальную схему, и содержит всего три небольшие перемычки. Размер платы - 60x60 мм.

Во-вторых, некоторые устройства требовали двух напряжений: 5 В -для питания МК, и 12 В - на линию reset "пациента", для ввода в режим программирования.

Этой схеме требуется только одно напряжение, которое может иметь разброс в достаточно широких пределах -главное, чтобы оно было не менее 12 В. В-третьих, большинство описанных устройств не допускают "горячей" замены "пациентов" в случае, если нужно "вылечить" несколько МК подряд - после каждого "прошивания" у них нужно отключить питание, заменить "больного", затем включить питание вновь и т.д.

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

Ну и, в-четвертых, часто в подобных устройствах отсутствует верификация записанных fuse-битов и индикация результата "лечения" (по типу "удачно/неудачно"). В данной конструкции верификация предусмотрена, а для индикации ее результатов служит светодиод HL1, который может иметь три состояния:

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

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

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

Переходник представляет собой панельку DIP-20, которая вставляется своими "ножками" в панель для "пациента" на плате устройства.

Сверху к такой панельке (к контактам для выводов микросхемы) подпаивают (или просто вставляют) проводники в тех местах, в которых подходят линии питания и управления к "пациенту" на плате.

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

Получается своеобразный разъем, штекер (просто панелька DIP-20) которого вставляется в панельку DIP-20 для "пациента" на плате, а уже в его гнездо (еще одна панелька) вставляется новый "пациент".

Что же касается программы, то ей может потребоваться коррекция, т.к. разные модели МК AVR часто требуют различных действий как для входа в режим программирования, так и для изменения fuse-байтов.

К тому же и сами fuse-байты (в т.ч. и их количество) у разных моделей МК различны - более подробную информацию можно получить в [Л.1,2,3], или в фирменной документации. А чтобы было проще разобраться в исходной программе, я снабдил ее подробными комментариями.

В качестве "доктора" в данном устройстве используется такой же, как и "пациент”, микроконтроллер ATtiny2313 -он так же устанавливается на панельке, чтобы после восстановления всех "заболевших" микросхем его можно было бы снять и использовать в других проектах.

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

Детали

Микросхему DA1 (78L05) можно заменить отечественным аналогом КР1157ЕН502, либо более мощной 7805 - но она гораздо дороже, а ее мощность для данной схемы не требуется.

Транзистор VT1 здесь работает в ключевом режиме, и может быть любым, структуры NPN - например, КТ315, 2SC1815, 2SC9014, 2SC1749S и др.; но для некоторых моделей придется изменить разводку платы.

Рис. 2. Печатная плата устройства для восстановления фьюзов.

Предохранительный диод VD1 может быть любым, на ток не менее 150 мА, его задача - защитить схему от случайной переполюсовки питания.

Все резисторы в схеме - малогабаритные, 0,125 Вт - их номинал может отличаться от указанного в довольно широких пределах. Светодиод HL1 -любой, индикаторный.

В заключение

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

По видимому, дело здесь в том, что некоторые экземпляры МК не генерирует корректное подтверждение в ответ на запрос программатора, в результате чего PonyProg делает вывод об их неисправности; при этом остальные команды программатора эти МК воспринимают нормально и выполнят корректно.

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

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

А вот в игрушках, елочных гирляндах, дверных звонках и других вспомогательных устройствах они вполне проработают много лет - и притом без каких-либо проблем.

Если вы читаете эту статью, то со 100% вероятностью можно считать, у вас заблокировался AVR микроконтроллер из за неправильно выставленных фьюз и вы не знаете что делать, выкинуть или каким то образом реанимировать, восстановить фьюзы.

Выкинуть всегда успеете, а вот восстановить работоспособность заблокированного микроконтроллера можно с помощью Atmega fusebit doctor, доктор фьюзов.

Схема доктора фьюзов, Atmega fusebit doctor

Собственно ниже приведена сама схема Atmega fusebit doctor, с помощью которой можно восстановить фьюзы.

1 часть. Открыть схему в большом разрешении.

Схема Atmega fusebit doctor

2 часть. Открыть схему в большом разрешении.

Схема Atmega fusebit doctor

Печатная плата Atmega fusebit doctor

Выглядит печатная плата доктора фьюзов следующим образом.

Печатная плата Atmega fusebit doctor

Процесс изготовления печатной платы в домашних условиях (некоторые моменты изготовления).

Читайте статьи на сайте первоисточнике, не поддерживайте воров.

Фото печатной платы после металлизации отверстий.

Atmega fusebit doctor

Atmega fusebit doctor

На следующих фото можно посмотреть готовую печатную плату данного устройства.

Atmega fusebit doctor

Atmega fusebit doctor

Atmega fusebit doctor

Atmega fusebit doctor

Сброс микроконтроллера с помощью доктора фьюзов

В этом видео можно посмотреть работу данной схемы по восстановлению фьюзов. Разблокировка, сброс фьюз до заводских, Atmega8 с помощью Atmega fusebit doctor (имитация).

Заключение

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

Если все же возникнут какие вопросы по данной схеме, вы всегда можете задать их в комментариях.

При наличии схемы, печатную плату можно всегда переделать под себя. Если вы не собираетесь разблокировать какие то определенные микроконтроллеры, то со схемы (2 часть) достаточно удалить не нужные и потом переразвести плату под свои нужды и размеры, например меньше 100х100 мм, для производства в Китае.

По этой ссылке вы можете скачать архив схемы и печатной платы Atmega fusebit doctor - Доктор фьюзов 824

Всем не заблокированный МК.

Если вам понравилась статья, нажмите на кнопку нужной социальной сети расположенной ниже. Этим действием вы добавите анонс статьи к себе на страницу. Это очень поможет в развитии сайта.

Такими фьюзами могут быть:- CKSEL фьюзы выбора задающего генератора (выбран внешний генератор при его отсутствии или выбрана очень маленькая частота внутреннего);
- SPIEN запрет последовательного программирования;
- RSTDISBL использование ножки сброса как дополнительной линии ввода-вывода;
– установленные LOCK биты;
– другие, мешающие последовательному программированию.

Информация о процессе лечения


059-atmega_fusebit_doctor_V2e_schematic.pdf - Схема "ATmega FuseBit Doctor"
Плата устройства разведена хорошо, но есть один нюанс, о котором важно не забыть при сборке устройства. Ножки 40-ка пиновой панельки с 29 по 37 необходимо откусить (лучше в плате вообще не сверлить отверстия под эти ножки).

Внешний вид платы

Еще есть картинка для нанесения на плату со стороны деталей (монтажная картинка). Я впервые попробовал нанести такую картинку. Получилось очень удобно – монтаж превращается в простую процедуру установку деталек по картинкам. Наноситься рисунок методом ЛУТ. Вскройте рисунок лаком, иначе он быстро сотрется.

Монтажный рисунок на плату

Готовое устройство


Hryam сделал рисунок платы версии V2d в Спринте. Вышло даже лучше чем у автора (размеры площадок, например).
059-atmega_doctor_plate_Sprint v2d - Рисунок печатной платы "ATmega FuseBit Doctor" в Спринте

Теперь осталось только прошить микроконтроллер ATmega8 и устройство готово!
059-atmega_fusebit_doctor_2.09.hex - Прошивка "ATmega FuseBit Doctor" для ATmega8
059-FuseBits-M8 v2.09 - FuseBits для ATmega8 "ATmega FuseBit Doctor"
Фьюз байты: Lock Bits = 0x 3F; High Fuse = 0x D1; Low Fuse = 0x E1; Ext. Fuse = 0x 00
Напоминаю:Для Algorithm Builder и UniProf галочки ставятся как на картинке.
Для PonyProg, AVR Studio, SinaProg галочки ставятся инверсно.
Как программировать микроконтроллеры читаем в FAQ.


059-adapter_soic20-soic8 - Адаптеры для программирования 8 и 20 пиновых микроконтроллеров в SOIC корпусах

Работа с адаптером

Вставляем адаптер


atmega-hvpp-fusebit-doctor_archive.zip - Архив старых версий "Доктора"

ПЛАТЫ ДОКТОРА ЧИТАТЕЛЕЙ БЛОГА.
Здесь находятся устройства собранные читателями – хорошо когда есть выбор.


Fusebit Doctor.lay - Разводка "Доктора" от Machiman

Плата в спринте, разводил под детали, которые были в наличии, так что там симбиоз SMD с выводными элементами, от перемычек уйти не удалось, как ни крутил. Транзистор T3 перевернул в нужную сторону (по началу запутался с эмиттером-коллектором). Да, с питанием не стал особо заморачиваться и вывел все на разъем molex. Ну и разумеется выход на платы расширения. Удачи!


hvpp fusebit doctor v2h.lay - Вариант "Доктора" от TaseG.




Atmega fuse doctor.zip - Разводка от Sailanser (Eagle 5.10)


Сам себе делал это устройство по выложенной оригинальной схеме. Плату сделал двухстороннюю дабы была маленькой и компактной. Делал на SMD плюс управляющий контроллер в DIP. Контроллеры для излечивания если необходимо подключаю с помощью внешней макетки.


Такими фьюзами могут быть:
- CKSEL фьюзы выбора задающего генератора (выбран внешний генератор при его отсутствии или выбрана очень маленькая частота внутреннего);
- SPIEN запрет последовательного программирования;
- RSTDISBL использование ножки сброса как дополнительной линии ввода-вывода;
– установленные LOCK биты;
– другие, мешающие последовательному программированию.

ПРИНЦИП РАБОТЫ УСТРОЙСТВА

Установки для терминала:
baudrate: 4800
parity: none
databits: 8
stopbits: 1
handshake: none


С лестными отзывами закончили, теперь давайте собирать устройство.

СБОРКА УСТРОЙСТВА.

Схема устройства довольно простая. Номиналы резисторов можно варьировать в небольших пределах

Кликните на схеме для увеличения размера.


059-atmega_fusebit_doctor_V2e_schematic.pdf - Схема "ATmega FuseBit Doctor"

Плата устройства разведена хорошо, но есть один нюанс, о котором важно не забыть при сборке устройства. Ножки 40-ка пиновой панельки с 29 по 37 необходимо откусить (лучше в плате вообще не сверлить отверстия под эти ножки).

Внешний вид платы

Еще есть картинка для нанесения на плату со стороны деталей (монтажная картинка). Я впервые попробовал нанести такую картинку. Получилось очень удобно – монтаж превращается в простую процедуру установку деталек по картинкам. Наноситься рисунок методом ЛУТ. Вскройте рисунок лаком, иначе он быстро сотрется.

Монтажный рисунок на плату

Готовое устройство

ПЛАТА ДЛЯ SMD КОМПОНЕНТОВ.

ПРОШИВАЕМ МИКРОКОНТРОЛЛЕР.

Теперь осталось только прошить микроконтроллер ATmega8 и устройство готово!
059-atmega_fusebit_doctor_2.09.hex - Прошивка "ATmega FuseBit Doctor" для ATmega8
059-FuseBits-M8 v2.09 - FuseBits для ATmega8 "ATmega FuseBit Doctor"
Фьюз байты: Lock Bits = 0x 3F; High Fuse = 0x D1; Low Fuse = 0x E1; Ext. Fuse = 0x 00

АДАПТЕРЫ ДЛЯ МИКРОКОНТРОЛЛЕРОВ.


059-adapter_soic20-soic8 - Адаптеры для программирования 8 и 20 пиновых микроконтроллеров в SOIC корпусах

Пользоваться адаптерами для SOIC корпусов очень просто:

Работа с адаптером

Вставляем адаптер

АРХИВ ВСЕХ ПРЕДЫДУЩИХ ВЕРСИЙ ДОКТОРА.


atmega-hvpp-fusebit-doctor_archive.zip - Архив старых версий "Доктора"


ПЛАТЫ ДОКТОРА ЧИТАТЕЛЕЙ БЛОГА.
Здесь буду выкладывать устройства собранные читателями – всегда полезно разнообразие выбора.
ATmega Fusebit Doctor PCB.zip - Печатка Доктора от Paul (в Сплинте)
zloynik нашел некоторые ошибки:

Учтите при изготовлении.

ЗАКЛЮЧЕНИЕ.

Ниже я прилагаю архив для скачивания, если вдруг внешние ссылки не работают, все файлы одним архивом.

Читайте также: