059-Исправляем AVR фьюзы при помощи «Atmega fusebit doctor».

Автор: | 03.11.2010

Титл

Внимание ! Автор устройства не стоит на месте — постоянно усовершенствует своего «Доктора». За изменениями слежу и я, внося обновления в статью.
В статье описана самая стабильная версия Update №9. от 13.03.2011.
В конце статьи есть последняя версия и  архив со всеми старыми версиями «Доктора».

Хочу спросить у читающих мой блог — много ли у Вас скопилось микроконтроллеров с неправильно прошитыми фьзами и непригодными для дальнейшего использования? Я думаю, если Вы довольно продолжительное время работаете с микроконтроллерами, то у Вас были случаи неправильной прошивки фьюзов. Свои «запорченные» микроконтроллеры я складывал в специальную коробочку с надеждой на то, что когда-то, в будущем, соберу высоковольтный параллельный программатор и верну их к жизни. Но высоковольтный программатор как-то особо не хотелось собирать. Схема довольно наворочена, да и применение такого программатора разовое – оживить ошибочно прошитый микроконтроллер. Короче, всегда проще (и дешевле) было купить новый микроконтроллер. Так и хранились бы и дальше «мертвые» микроконтроллеры если бы не случилась странная штука – при изготовлении нового устройства (скоро выложу) перестали подавать признаки жизни, сразу две тини2313 без особых на то причин. Подозрение пало на то, что при прошивке были неправильно выставлены фьюзы. Новых, в SOIC корпусе, быстро достать не получалось, а схемку закончить чесались руки. Так как, я все равно собирался, когда то делать высоковольтный программатор, решил, что пришло время это сделать. Но высоковольтный программатор я так и не сделал, а сделал устройство специально предназначенное для исправления ошибочно установленных фьюзов.

Некоторое время назад, по ссылке geovas , я поглядел на устройство под названием «Atmega fusebit doctor». Автор — поляк Pawel Kisielewski. Так как схема этого устройства относительно несложная решил вместо высоковольтного программатора собрать «доктора». И не ошибся – устройство оказалось замечательным! Не могу не поделиться своими впечатлениями о «Atmega fusebit doctor», так как в этом проекте есть много вещей, которые я ценю.

Что интересного есть в «Atmega fusebit doctor»?
Как Вы поняли – это не совсем высоковольтный программатор. Это устройство предназначено только для одной цели – вернуть к «жизни» микроконтроллер с неправильно прошитыми фьзами.

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

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

— очень прост – подаем на плату 12 вольт, вставляем в панельку «запорченный» микроконтроллер, нажимаем кнопочку «START» и через доли секунды получаем новенький рабочий микроконтроллер. Очень просто, даже не нужен компьютер (всегда возмущают псевдо навороты, в виде управления при помощи специальной программе на PC, там, где это в принципе не нужно). И если внешне устройство выглядит просто, то внутри все гораздо сложнее. При нажатии кнопки «START» устройство читает сигнатуру микроконтроллера-пациента, при этом, если она не читается, делается несколько попыток прочитать различными способами. После того как сигнатура прочитана по базе определяется тип микроконтроллера и восстанавливаются заводские, для данного микроконтроллера, установки фьюз бит. Если сигнатура неизвестна или микроконтроллер выдает ее неверно устройство установит фьюз биты в такое состояние, при котором станет возможным последовательное программирование. При восстановлении фьюз бит прошивка микроконтроллера остается нетронутой. Еще на плате есть перемычка «ALLOW ERASE«, при замыкании которой устройство полностью «обнулит» микроконтроллер. Это нужно в том случае, если пациент «залочен», т.е. установлены защитные биты которые препятствуют чтению/записи микроконтроллера.

Для индикации работы устройство имеет два светодиодакрасненький и зелененький :). Минималистично? Но этого вполне хватает!
Если горит зеленый – пациент успешно вылечен, фьюз биты восстановлены до заводских. Если микроконтроллер «залочен» (LockBits включены), просто проверяются фьюз биты и если они совпадают с заводскими — загорается зеленый светодиод.
Если горит красный – проблемы с сигнатурой чипа, невозможно прочитать, нет микроконтроллера в панельке или нет такой сигнатуры в базе данных.
Если зеленый мигает — сигнатура в порядке, фьюз биты с ошибкой, но исправить их невозможно, так как микроконтроллер «залочен» (LockBits включены), необходимо полное стирание микроконтроллера (нужно установить перемычку для стирания — «ALLOW ERASE»).
Если мигает красный — сигнатура в порядке, микроконтроллер «не залочен», но, по какой-то причине, невозможно восстановить фьюз биты.

Если Вы хотите получить более подробную информацию о процессе «лечения» на плате есть выход UART. Отправьте этот сигнал на терминал и получите «распечатку» того, что было сделано.

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

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

На плате установлены три панельки для «пациентов» на 20 (Attiny2313 …), 28 (Atmega48/88/168, Atmega8 …), 40 (Atmega16, Atmega8535 …) ножек. Если Вы решили «полечить» другого «пациента», то на плате предусмотрен специальный разъем для подключения адаптеров с панельками под любой, нужный Вам, микроконтроллер. Устройство поддерживает аж 106 типов микроконтроллеров AVR.
Вот полный список:
1kB:
AT90s1200, Attiny11, Attiny12, Attiny13/A, Attiny15
2kB:
Attiny2313/A, Attiny24/A, Attiny26, Attiny261/A, Attiny28, AT90s2333, Attiny22,Attiny25, AT90s2313, AT90s2323, AT90s2343
4kB:
Atmega48/A, Atmega48P/PA, Attiny461/A, Attiny43U, Attiny4313, Attiny44/A, Attiny48, AT90s4433, AT90s4414, AT90s4434, Attiny45
8kB:
Atmega8515, Atmega8535, Atmega8/A, Atmega88/A, Atmega88P/PA, AT90pwm1, AT90pwm2, AT90pwm2B, AT90pwm3, AT90pwm3B, AT90pwm81, AT90usb82, Attiny84, Attiny85, Attiny861/A, Attiny87, Attiny88, AT90s8515, AT90s8535
16kB:
Atmega16/A, Atmega16U2, Atmega16U4, Atmega16M1, Atmega161, Atmega162, Atmega163, Atmega164A, Atmega164P/PA, Atmega165A/P/PA, Atmega168/A, Atmega168P/PA, Atmega169A/PA, Attiny167, AT90pwm216, AT90pwm316, AT90usb162
32kB:
Atmega32/A, Atmega32C1, Atmega323/A, Atmega32U2, Atmega32U4, Atmega32U6, Atmega32M1, Atmega324A, Atmega324P, Atmega324PA, Atmega325, Atmega3250, Atmega325A/PA, Atmega3250A/PA, Atmega328, Atmega328P, Atmega329, Atmega3290, Atmega329A/PA, Atmega3290A/PA, AT90can32
64kB:
Atmega64/A, Atmega64C1, Atmega64M1, Atmega649, Atmega6490, Atmega649A/P, Atmega6490A/P, Atmega640, Atmega644/A, Atmega644P/PA, Atmega645, Atmega645A/P, Atmega6450, Atmega6450A/P, AT90usb646, AT90usb647, AT90can64
128kB:
Atmega103, Atmega128/A, Atmega1280, Atmega1281, Atmega1284, Atmega1284P, AT90usb1286, AT90usb1287, AT90can128
256kB:
Atmega2560, Atmega2561

Зелененьким отмечены кристаллы которые проверялись и удачно полечились пользователями «доктора». Если Вы вылечили кристалл не помеченный зеленым, прошу сообщить об этом автору устройства или мне — я передам.

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

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

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

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

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

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

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

059-atmega_fusebit_doctor_V2e_PCB.zip (36285 Загрузок)
«Набиваем» плату радиодеталями, ставим несколько перемычек, получаем вот такое устройство:

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

ВНИМАНИЕ! Если у Вас собрана предыдущая версия платы «Доктора» (V2d — плата апдейдов по №6 включительно), для новой версии (апдейты  №№7-9) переделывать ее нет необходимости, изменения минимальны. Для апгрейда версии платы V2d до версии V2e необходимо, всего лишь, припаять в нужном месте резистор на 100 Ом. Ниже показано куда его впаивать.

UpGrade

Hryam сделал рисунок платы версии V2d в Спринте. Вышло даже лучше чем у автора (размеры площадок, например).
059-atmega_doctor_plate_v2d_Sprint.zip (Одна Загрузка)

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

Появилась версия платы для SMD компонентов (товарисщь Shuffle постарался) . В этой плате нет панелек под «пациентов» есть только разъем для подключения адаптеров. Все «пациенты» включаются через адаптеры. Добавлен преобразователь UART to USB TF232RL, а значит Доктор будет выдавать информацию о ходе лечения по USB (можно не ставить). В остальном все как в оригинале.
059-shuffle_avrdoc_usb.zip (Одна Загрузка)

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

Теперь осталось только прошить микроконтроллер ATmega8 и устройство готово!
atmega_fusebit_doctor_2.09_m8.zip (Одна Загрузка)
059-FuseBits.png (61683 Загрузки)
Фьюз байты: Lock Bits = 0x 3F; High Fuse = 0x D1; Low Fuse = 0x E1; Ext. Fuse = 0x 00

Напоминаю:Для Algorithm Builder и UniProf галочки ставятся как на картинке.
Для PonyProg, AVR Studio, SinaProg галочки ставятся инверсно.
Как программировать микроконтроллеры читаем в FAQ.

Данный вариант прошивки еще есть для микроконтроллеров:
Atmega88, Atmega88P, Atmega168, Atmega168P, Atmega328, Atmega328P.
Прошивка для микроконтроллеров с 16kB и 32kB памяти, кроме того, выдает названия восстанавливаемых микроконтроллеров.
Прошивки и фьюзы для других микроконтроллеров  смотрите в архиве старых версий «Доктора» в конце статьи.

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

Автором были разработаны два адаптера:
— для HVPP программирования 20-ти пиновых Attiny26 подобных и 40-ка пиновых Atmega8515 подобных контроллеров.
— для HVSP программирования для 8-ми пиновых и 14p-ти пиновых микроконтроллеров с высоковольтным последовательным способом программирования
059-adapter-1HVPP_dip20-dip40.zip (22844 Загрузки)
059-adapter-HVSP-dip8-dip14.zip (21652 Загрузки)

Небольшой бонус от меня – адаптеры для микроконтроллеров 8-ми пиновых (ATtiny13 …) и 20-ти пиновых (ATtiny2313 …) в корпусах SOIC.

Внешний вид адаптеров
059-adapter_soic20-soic8.zip (24465 Загрузок)

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

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

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

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

Это архив со всеми предыдущими версиями «Доктора». Кроме того архив содержит дополнительные материалы, такие как пинауты для различных корпусов AVR, платы-адаптеры и другое.

atmega-hvpp-fusebit-doctor_archive.zip (27835 Загрузок)

ПОСЛЕДНЯЯ, НА ДАННЫЙ МОМЕНТ, ВЕРСИЯ «ДОКТОРА».

Как я уже упоминал выше, главным достоинством «Доктора»  является его автономность. Для восстановления фьюзов нужно лишь само устройство. Это очень хорошо!
Да, «Доктор» по UART выдавал информацию о процессе «лечения». Сообщения по UART, дублируя светодиоды,  давали более полную картину «лечения»,  но многим этого было недостаточно. Хотеться более полного контроля процесса восстановления.  И в новом апдейте автор дает этот полный контроль!

Теперь стало возможным:
— двухстороннее общение с «Доктором» по UART;
— работа с кристаллами у которых неверная сигнатура;
— устанавливать свои fusebits и  lockbits;
— об остальном читайте в описании внутри архива…
atmega-hvpp-fusebit-doctor_update11.zip (57835 Загрузок)

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

Печатка «Доктора» от Paul (в Сплинте)

ATmega-Fusebit-Doctor-PCB.zip (19902 Загрузки)
zloynik нашел некоторые ошибки:
1.Резистор с 23 ноги меги не соединен с панельками.
2.Резистор с 4 ноги меги не соединен с панельками.
3.Резистор с 5 ноги меги не соединен с панельками.
4.Транзистор BC547(Т2) с 13 ноги меги-нет контакта с эмиттера на «землю».
В остальном вроде все впорядке. Собрал-залочил тиньку 2313-восстановило.
Учтите при изготовлении.

Вариант «Доктора» в SMD исполнении от webconn.

ATmega Fusebit Doctor SMD by WebConn V2h.zip (16213 Загрузок)
Хотел бы внести свой вклад в форме ещё одной платы для «доктора» в SMD-исполнении. Всего 5 перемычек и 3 SMD-»пофигистора», питание от Power Jack 5mm (но в архиве есть версия с колодкой) через 78L05 (греется, но пару минут можно работать без отключения питания, а больше обычно и не нужно ) Также греется один из транзисторов, но тоже в меру (мелкота требует жертв). Тем не менее, плата юзабельна. Совместима с последней версией Доктора V2h (то есть полностью растащен UART).

Вариант «Доктора»  от Machineman.

Fusebit-Doctor.zip (9540 Загрузок)

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

Вариант «Доктора»  от TaseG (разводка в сплинте).

hvpp-fusebit-doctor-v2h.zip (11463 Загрузки)

Исправление разводки от Максима Носырева.
Я начинающий, поэтому прошу строго не судить, если я ошибся.
Если сравнить разводку с оригиналом из статьи, то там есть лишняя дорожка, замыкающая 9 и 5 вольт, как я понял на питание меги придет 9 вольт. Может, конечно, я ошибаюсь, но наверно так не должно быть…

Вариант «Доктора»  от Sailanser (разводка в Eagle 5.10)

Atmega-fuse-doctor.zip (9100 Загрузок)

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

Вариант «Доктора»  от MVV
А еще «Доктора» можно сделать и так:

Адаптер для ATtiny26 от Fahivec
Adapter_Tiny26_SMD.zip (6118 Загрузок)
В архиве фотка и файлы .sch/.brd из Eagle 5.7.0

Доктор от dimon24
вариант печатной платы с универсальными ZIF панельками под 5 МК DIP8,14,20,28,40
Atmega-fusebit-doctor-ZIF.zip (6937 Загрузок)

Переходник для ATmega48A/PA/88A/PA/168A/PA/328/P TQFP32 от S@per


TQFP32-for-fuse-bit-doctor.zip (6129 Загрузок)

ЗАКЛЮЧЕНИЕ.

В результате работы «Atmega fusebit doctor» мною были возращены к жизни несколько ATtiny2313, ATmega48, Atmega8535. «Atmega fusebit doctor» зарекомендовал себя с наилучшей стороны. И даже появились планы на нестандартное его использование. Давно руки чешутся заюзать ножку сброса ATtiny13 как еще один порт ввода/вывода, но всегда останавливало то, что микроконтроллер теряется для последующего использования. С «доктором» можно смело использовать ножку по своему усмотрению и при необходимости восстанавливать ее «заводское» назначение.

Еще смотрим:
Что такое фьюз биты?
Как правильно прошить фьюз биты в разных программах?
Страничка ATmega FuseBit Doctor

(Visited 308 280 times, 81 visits today)

059-Исправляем AVR фьюзы при помощи «Atmega fusebit doctor».: 2 164 комментария

  1. GetChiper Автор записи

    Нужно полностью очистить чип. Это процедура включает и сброс фьюзов до заводских настроек.

  2. Алексей

    Добрый день! Пытаюсь себе сделать такой аппарат, есть вариант печатки. Кому интересно, посмотрите пожалуйста — по ссылке схема, медь сверху/снизу и 3D вид платы. Может заметите ошибки — буду благодарен. Если надо — выложу файлы для заказа/изготовления

  3. Алексей

    добавил схему и плату для контроллеров в корпусе tqfp-32

  4. Андрей

    Подскажите как правильно подключить at90usb162 вроде так поправьте если неправильно

  5. Вячеслав

    Все перерыл. И наконец нашел то что надо. Ведь в реальности только этот программатор и нужен. Восстановил чипу и шей дальше чем хочешь например USBasp.

  6. aftansin

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

  7. Игорь

    Здравствуйте. Помогите восановить ардуино на 2560. На разных магах пины подключения разные объясните как подключить может у кого схема есть?

  8. Ilil

    спасибо.крутая весчь.

  9. Михаил

    Подскажите, я ни где не не ошибся?

  10. Александр

    Порядок восстановления заблокированного чипа с платы Arduino Nano c Atmega328p:
    1. Запускаем Arduino IDE выбираем пример Blink, выбираем плату и делаем .hex файл. Смотрим каталог скетча и видим три файла, сам скетч .ino и два .hex один с бутлодером. Он нам и нужен. Копируем его в корень C: чтобы не было проблем с кириллицей в пути к файлу у программатора. Файл с бутлодером получен.
    2. Скидываем чип с платы, используем фольгу для защиты кварца и кнопки. После скидывания чипа чистим посадочное место оплеткой. Микросхема должна сесть обратно ровно без перекосов.
    3. Задуваем феном чип на плату Фьюз-доктора. Корректируем пинцетом, потом пропаиваем все ноги еще раз паяльником. Фен присаживает, чтобы не было перекоса ног, паяльник фиксирует. Лучше паять и потом снять феном чем беспокоиться о неконтакте прищепкой. Так надежнее.
    4. Ставим перемычку ERASE и запускаем доктора, перемычка дает возможность обнулять и менять все на чипе. Подключаемся к UART переходнику, запускаем Putty 4800 скорость без бита четности. Жмем кнопку, видим меню доктора.
    5. Восстанавливать надо так – сначала п4. чистка чипа (он чистит и скидывает лок биты. Чип чист и доступен для изменения). Чисткой мы убираем все лишнее, можно затереть все и в ручную, но оно надо ли. Далее п1. прописываем автоматом фьюзы. Для Atmega328p он пропишет L:62 H:D9 E:FF. Далее п2. меняем на правильные L:EF H:DE E:07 и жмем п5 для выхода. Гасим питание и снимаем чип. ВНИМАНИЕ – фьюз доктор автоматом прописывает дефолтовые фьюзы, поэтому НЕЛЬЗЯ после п2 и п5 нажимать еще что то, иначе он снова затрет ваши записи и чип будет не доступен программатору. После п5 гасим питание и снимаем чип это важно!
    6. Садим чип на плату Ардуино Нано и слегка осаживаем феном без сильного давления, в идеале он должен сам присесть на расплавленный припой. Не забываем защищать кварц и кнопку фольгой. Далее пропаиваем ноги, чистим флюс, просматриваем непропай и кз соседних ног, кз убираем оплеткой. Пробегаемся тестором в режиме прозвонки по двум соседним ногам проверяем кз. В идеале можно еще пройти по ногам чипа и проверить до пинов, мало ли дорожка порвалась или пятак оторвали.
    7. На программаторе ставим перемычку низкой частоты 1Мгц (сброшенный чип работает от внутреннего генератора 8Мгц с делителем частоты на 8, в итоге он откликнется только на частоту 1 Мгц). Подключаем плату по SPI на пины SCK-D13, MOSI-D11, MISO-D12, RST-Reset, VCC-pin(+5v), GND-GND.
    8. Запускаем SinaProg выбираем Atmega328p и переходим в Advanced жмем Read читаем фьюзы. Правим на правильные, нужные нам L:EF, H:DE, E:07. Жмем Write. Отключаем от USB порта программатор, убираем понижающую перемычку и подключаемся снова. Теперь мы на нормальной скрости. Читаем фьюзы, если все ок, то переходим в основное окно, на эконке папки выбираем созданный .hex файл с бутлодером и жмем Program Flash. Программируем только флэш, еепром не нужно. Дожидаемся окончания заливки файла. Отключаем от программатора.
    9. Подключаем стандартно на USB шнурок. При первой загрузке он хаотично пару раз мигнет, это нормально. Далее мы видим стандартный Blink светодиодом.
    10. Для проверки восстановления бутлодера, запускаем Arduino IDE выбираем плату, порт и проверяем (Инструменты -> Программатор — > AVRISP mkII), заливаем Blink с измененным временем мигания (к примеру с текущего в скетче 1000 понижаем до 100) и заливаем в плату. Если все правильно сделали, то скетч скомпилится и зальется стандартно через шнурок напрямую без программаторов.
    11. Чип разблокирован, фьюзы установлены, бутлодер восстановлен, плата в строю.

    PS. За грамматику и пунктуацию строго не судить!

  11. Alex

    Все привет. дорогие знатоки нужна ваша помощь. У меня есть Atmega128-8P. Собрал доктор работает. вылечил 3 Атмега 8. Помогите с адаптером для 128.

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