Программирование AVR Atmega fusebit doctor Thu, March 28 2024  

Поделиться

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

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

Atmega fusebit doctor Печать
Добавил(а) microsin   

Многие радиолюбители знают (иногда на собственном печальном опыте), что микроконтроллер AVR можно вывести из строя неосторожным программированием настроечных бит (так называемых фьюзов). Будучи запрограммированными неправильно, эти биты сохраняются в энергонезависимой памяти, и могут привести к невозможности дальнейшего программирования микроконтроллера или выбору фьюзами его тактовой частоты. По крайней мере невозможно восстановить микроконтроллер обычными средствами, без наличия специального высоковольтного HVPP/HVSP программатора.

Высоковольтный параллельный (HVPP) или последовательный (HVSP) программатор относится к профессиональным инструментальным средствам разработчика, и поэтому его купить непросто - из-за высокой цены и малой доступности. Польский радиолюбитель Pawel Kisielewski разработал несложное устройство, позволяющее восстанавливать состояние фьюзов микроконтроллера в состояние по умолчанию - Atmega fusebit doctor [1].

ATmega fusebit doctor assembled

Примечание: к сожалению, разработчик не предоставил исходный код для Atmega fusebit doctor. Но даже несмотря на это, проект все равно обрел популярность. Также есть старый вариант такого же fuse-доктора, который предназначен только для лечения микроконтроллеров ATtiny [4], к нему исходники выложены.

Чаще всего причина проблем с фьюзами, из-за которых микроконтроллеры AVR приходят в негодность - неправильный выбор источника тактирования (биты фьюзов CKSEL), запрет программирования через SPI (бит фьюзов SPIEN), или запрет вывода сброса (фьюз RSTDISBL). Если в первом случае Вы можете помочь себе сами, подключив внешний источник тактов (некоторые программаторы AVR имеют для этого специальный выход), то 2-й и 3-й случаи ошибочной манипуляции с фьюзами нельзя вылечить стандартным последовательным программатором. Большинство радиолюбителей не знают, как собрать параллельный программатор, потому что это довольно сложно и дорого, и проще и быстрее купить новый микроконтроллер.

Atmega fusebit doctor, как следует из названия, это устройство, предназначенное для восстановления "убитых" микроконтроллеров AVR ATmega (и ATtiny начиная с версии v2.04 устройства) путем записи в них корректных значений бит фьюзов. Описанное простое и дешевое устройство позволит исправить Ваши брикнутые микроконтроллеры за несколько секунд.

Atmega fusebit doctor SCH V2h

RefDes# Номинал Шт. Примечание
R2, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R26 1k 20 0.125 Вт. Защитные резисторы помечены зеленым шрифтом, их можно поставить любым номиналом в диапазоне от 100 Ом до 1 кОм.
R4, R6 4.7k 2 0.125 Вт
R1, R27 10k 2 0.125 Вт
R3, R25 100 2 0.125 Вт
R5 330 1 0.125 Вт
C1 100µF 1 Напряжение 16V..25V, емкость не критична, может быть любая в диапазоне от 10 до 200 мкф.
C2 10µF 1 Напряжение 16V..25V, емкость не критична, может быть любая в диапазоне от 1 до 20 мкф.
C3 10nF 1 Емкость не критична, может быть любая в диапазоне от 10 до 100 нф.
IC1 7805 1 Любая аналогичная микросхема линейного стабилизатора напряжения. Например, также подойдет КРЕН5В.
IC2 ATmega8 1 Также подойдут ATmega88, ATmega88P, ATmega168, ATmega168P, ATmega328, ATmega328P, и их более новые (и низковольтные) версии с суффиксами A или L. Использовать микроконтроллеры с памятью от 16 килобайт и выше предпочтительнее, потому что можно использовать прошивку с расширенными возможностями консоли терминала (см. вопрос Q017). Для установки микроконтроллера нужна кроватка (сокет) на 28 ножек.
IC3 MEGA16-P 1 Кроватка на 40 ножек для микроконтроллеров в корпусах DIP40.
IC4 MEGA8-P 1 Кроватка на 28 ножек для микроконтроллеров в корпусах DIP28.
IC5 AT90S2313/TINY2313 1 Кроватка на 20 ножек для микроконтроллеров в корпусах DIP20.
T1, T3 BC557 2 Любой кремниевый транзистор структуры P-N-P. Печатная плата рассчитана на транзисторы, у которых база посередине.
T2 BC547 1 Любой кремниевый транзистор структуры N-P-N. Печатная плата рассчитана на транзисторы, у которых база посередине.
JP1 ERASE 1 Перемычка - 2 штырька с шагом 2.54 мм.
JP2 RS232 1 Коннектор для подключения терминала.
X1   1 Коннектор для подкючения внешнего питания.
SV2   1 Коннектор 20 выводов мама, для подключения плат раширения.
S1   1 Кнопка на замыкание.
LED1 Красный светодиод 1 Желательно использовать светодиоды с корпусом диаметром 3..4 мм.
LED2 Зеленый светодиод 1 Желательно использовать светодиоды с корпусом диаметром 3..4 мм.

HVPP расшифровывается как high voltage parallel programming, т. е. высоковольтное параллельное программирование.

HVSP расшифровывается как high voltage serial programming, т. е. высоковольтное последовательное программирование.

mega fusebit doctor 3

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

В настоящий момент поддерживается 145 типов микроконтроллеров AVR, но не все из них были протестированы. Те, что были проверены, подкрашены зеленым цветом. Автор просит в случае проблемы с каким-либо микроконтроллером сообщить ему, тогда он исправит ошибку. Список рассортирован по объему памяти программ микроконтроллера (FLASH).

1 килобайт: AT90s1200, Attiny11, Attiny12, Attiny13/A, Attiny15

2 килобайта: Attiny2313/A, Attiny24/A, Attiny26, Attiny261/A, Attiny28, AT90s2333, Attiny22, Attiny25, AT90s2313, AT90s2323, AT90s2343

4 килобайта: Atmega48/A, Atmega48P/PA, Attiny461/A, Attiny43U, Attiny4313, Attiny44/A, Attiny48, AT90s4433, AT90s4414, AT90s4434, Attiny45

8 килобайт: 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

32 килобайта: 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

64 килобайта: Atmega64/A, Atmega64C1, Atmega64M1, Atmega649, Atmega6490, Atmega649A/P, Atmega6490A/P, Atmega640, Atmega644/A, Atmega644P/PA, Atmega645, Atmega645A/P, Atmega6450, Atmega6450A/P, AT90usb646, AT90usb647, AT90can64

128 килобайт: Atmega103, Atmega128/A, Atmega1280, Atmega1281, Atmega1284, Atmega1284P, AT90usb1286, AT90usb1287, AT90can128

256 килобайт: Atmega2560, Atmega2561

[Как восстановить фьюзы "убитого" микроконтроллера]

Просто поместите убитый AVR в сокет, нажмите кнопку START и... и это все. Вы получите восстановленный, работоспособный микроконтроллер в том виде, как он пришел с завода Atmel. На плате fuse-доктора есть 3 слота для установки большинства совместимых микроконтроллеров AVR, которые совпадают с цоколевкой DIP-версий Atmega8, Atmega16, Attiny2313. Имеется также дополнительный коннектор, куда Вы можете подключить адаптеры:

#1 adapter расширение HVPP, для совместимых с 20-выводными Attiny26 и совместимых с 40-выводными Atmega8515.

HVSP adapter для 8-выводных и 14-выводных процессоров, которые можно запрограммировать через HVSP.

Вы можете создать свои собственные адаптеры для других типов процессоров, с DIP-корпусами или SMD, можно также использовать макетную плату (breadboard) для этой цели – просто подключите нужные сигналы к нужным выводам, используя разноцветные проводные перемычки (платы беспаечного макетирования breadboard и штыревые перемычки для них свободно продаются на aliexpress или других DIY-магазинах для радиолюбительского творчества).

Как определить, как подключить самому микроконтроллер? Откройте даташит на Ваш AVR, перейдите в раздел "memory programming", затем "parallel programming", посмотрите названия сигналов, все сигналы подписаны под слотом DIP40. В памяти fuse-доктора есть еще свободное место, так что проект может быть доработан в любое время.

Fuse-доктор смонтирован на односторонней печатной плате размером 55 x 92 мм. На верхней стороны необходимо установить несколько перемычек, либо можно сделать плату двухсторонней - выбор за Вами. Резисторы R7..R23 могут быть любого номинала от 100 Ом до 10 кОм, но лучше всего поставить от 470 Ом до 1 кОм.

Внимание: При монтаже кроватки DIP40 Вы должны удалить из неё контакты от 29 до 37. Для этих выводов восстанавливаемого микроконтроллера не нужен электрический контакт со схемой, и печатные проводники, которые проходят в этом месте позволили сделать плату меньше и дешевле (можно сделать плату, где токопроводящие дорожки находятся толькo с одной стороны). На картинке показано место, откуда нужно удалить контакты на кроватке DIP40.

pins help

[Использование fuse-доктора]

fusebit doctor adapters 4

Перемычка ALLOW ERASE позволит fuse-доктору очистить всю память FLASH и EEPROM. Если эта перемычка не установлена, то fuse-доктор не будет очищать память, но в этом случае может и не вылечить микроконтроллер, если память микроконтроллера заблокирована битами защиты (lockbits).

После установки брикнутого AVR в сокет и нажатия кнопки START fuse-доктор инициирует запуск режима параллельного или последовательного высоковольтного программирования. Выбор будет сделан автоматически, fuse-доктор распознает адаптер HVSP и запустит восстановление в режиме HVSP. После этого fuse-доктор будет ждать появления лог. 1 на выводе RDY/BSY. Затем будет прочитана сигнатура восстанавливаемого AVR, и будет выполнена проверка, поддерживается ли этот микроконтроллер. На следующем шаге будет выполнена очистка памяти, если пользователь это разрешил (т. е. если установлена перемычка ALLOW ERASE). Затем будут проверены биты защиты lockbits, и если они не заблокированы, то fuse-доктор установит все биты фьюзов в фабричное состояние по умолчанию, учитывая возможное наличие расширенных байт битов фьюзов (у некоторых старых AVR есть только один байт фьюзов LOW, так что разные ситуации корректно обрабатываются). После того, как биты фьюзов проверены, fuse-доктор сообщает о результате миганием индикационных светодиодов.

[Светодиоды индикации]

Для индикации состояния на плате fuse-доктор установлены 2 светодиода - зеленый (GOOD) и красный (BAD).

ATmega fuse doctor LEDs IMG 3104

Вот описание их работы:

GREEN LED light const Зеленый постоянно горит – пациент успешно вылечен, биты фьюзов восстановлены. Если разрешены биты защиты, то будет просто проведена проверка состояния фьюзов - заводское ли оно, и если это так, то зеленый светодиод загорается.

RED LED light const Красный постоянно горит – проблема с сигнатурой, её нельзя прочитать, нет микроконтроллера в сокете, или такой сигнатуры нет в базе данных fuse-доктора.

GREEN LED light flashing Зеленый мигает – сигнатура в порядке, но биты фьюзов в неправильном состоянии. Причина - установлены биты защиты, нужно разрешение на полную очистку восстанавливаемого AVR (см. выше описание перемычки ALLOW ERASE).

RED LED light flashing Красный мигает – сигнатура прочитана, нет блокировки битами защиты, но по непонятной причине нельзя записать новое значение для бит фьюзов.

[Текстовый терминал]

Примечание: терминал дополнительная функция fuse-доктора, которая не нужна для его нормальной работы. Fuse-доктор может работать автономно, без подключенного компьютера PC, и все, что нужно знать нам сообщат красный и зеленый светодиоды.

Вы можете подключить fuse-доктор через интерфейс RS232 к компьютеру, и через него отслеживать на экране процесс восстановления фьюзов. Информация будет поступать в процессе выполнения всех действий через UART управляющего микроконтроллера fuse-доктора. Для корректного подключения требуется правильно согласовать TTL-уровни UART с подключением к компьютеру. Если у Вас старый компьютер, на котором сохранился традиционный RS-232, то понадобится преобразователь уровней наподобие MAX232 (или [2]). Если у Вас современный ноутбук, и нужно подключиться через USB, то используйте конвертеры USB - TTL UART [3].

Настройки терминала для подключения: скорость 4800 бод, без бита четности (parity: none), 8 бит данных, 1 стоп-бит, без наличия подтверждения передачи и без управления потоком (handshake: none, Flow control: none).

putty terminal settings

[Дополнительные замечания]

Последняя прошивка fuse-доктора - версия 2.11 (файл наподобие atmega_fusebit_doctor_2.11_mXXX.bin или atmega_fusebit_doctor_2.11_mXXX.hex от 01.05.2011). В предыдущей версии 2.10 были ошибки (в частности, не восстанавливались микроконтроллеры ATmega328P).

Для fuse-доктора используйте микроконтроллеры: ATmega8, ATmega88, ATmega88P, ATmega168, ATmega168P, ATmega328, ATmega328P, и их более новые (и низковольтные) версии с суффиксами A или L. Всегда используйте последнюю версию прошивки, память EEPROM прошивать не нужно.

Для питания fuse-доктора используйте стабилизированное, сглаженное напряжение постоянного тока 12V. Более высокое напряжение может повредить восстанавливаемый микроконтроллер!

Код программы fuse-доктора был написан на основе описаний режимов программирования HVPP и HVSP из даташитов подходящих микроконтроллеров AVR. Если Вам нужен fuse-доктор для семейства ATtiny AVR, то обратите внимание на предыдущий проект автора - Attiny fusebit doctor [4]. К сожалению, в этом проекте возможны некоторые ошибки, и он больше не поддерживается, потому что более новый Atmega fusebit doctor поддерживает все модели семейства ATtiny AVR. Однако этот проект также опубликован с исходным кодом, и при изучении даташита AVR в его исходном коде проще разобраться, чтобы понять механизм программирования.

Биты фьюзов. В микроконтроллере fuse-доктора используется внутренняя тактовая частота 1 МГц, и разрешен бит EESAVE (см. файл README). Таким образом, если Вы купили новый микроконтроллер, то никакие фьюзы менять не надо - микроконтроллер и так уже работает на частоте 1 МГц. Бит EESAVE не обязателен, т. к. запрещает очистку памяти EEPROM при перепрограммировании firmware (т. е. в данном случае программы fuse-доктора), а в программе fuse-доктора EEPROM просто используется для сохранения счетчика количества вылеченных чипов, которое посылается через UART терминала.

В обновлении 2.1X добавлена новая функциональность. Теперь через терминал можно послать нужное значение фьзов и битов защиты, и таким образом работать с чипами, у которых не распознана сигнатура. Если Вы подключите вывод терминала TX к выводу RX печатной платы fuse-доктора, то ручной режим будет разрешен автоматически. Это требует, чтобы в режиме ожидания на выводе TX терминала была лог. 1 - так и произойдет, если он будет подключен к TTL UART/RS232. Также необходимо на плате fuse-доктора наличие нижнего подтягивающего резистора (pulldown) номиналом 10 кОм. Если это условие не соблюдается, то fuse-доктор будет работать в обычном, автоматическом режиме.

Как работает новый функционал: сначала fuse-доктор читает сигнатуру восстанавливаемого чипа. И если с сигнатурой проблема (она не распознана), то будет предложено вручную вести сигнатуру. Введите 2 последних байта сигнатуры в шестнадцатеричном виде (4 HEX-символа) и нажмите Enter.

Затем fuse-доктор попробует прочитать чип в зависимости от предоставленной сигнатуры. Если чтение прошло успешно, то выберите одну из опций:

1 записать биты фьюзов – это действие выполнит цикл записи фьюзов значениями из буфера (по умолчанию).

2 модифицировать биты фьюзов – это позволит Вам ввести фьюзы вручную, значения в буфере будут обновлены. Введите один байт в HEX (2 символа) и нажмите Enter. Повторите операцию для каждого имеющегося байта фьюзов.

3 установка битов защиты (lockbits) – введите новое значение в HEX (2 символа) и нажмите Enter. Выполняйте это действие с осторожностью! Помните, что не используемые биты должны всегда быть в лог. 1! Например, нужно разрешить LB1 и LB2, для этого ведите FC (11111100).

4 очистка чипа – это действие просто сотрет чип и его биты защиты. Оно требует для безопасности наличия установленной перемычки ALLOW ERASE.

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

Не обращайте на светодиоды индикации, когда fuse-доктор работает в ручном режиме - они просто мигают случайным образом.

Внимание: программа fuse-доктора версии 2.1x ТРЕБУЕТ обновленной версии печатной платы 2h!

[Файлы]

atmega-hvpp-fusebit-doctor_archive.rar - в этом архиве находятся все релизы (печатные платы, схемы в PDF и Eagle, и прошивки, рассортированные по папкам), начиная с самого первого. Последний релиз в папке update10-20.04.2011. Подробное описание см. в файлах README архива (они есть во многих папках, и имеют расширение *.txt). Исходного кода прошивки нет.

shuffle_avrdoc_usb.rar - SMD-версия fuse-доктора. Отличается от оригинальной версии тем, что на плате разведен только коннектор для подключения адаптеров. В архиве только печатка и схема, разводка сделана в Sprint Layout. Исходного кода прошивки нет.

atmega-hvpp-fusebit-doctor_update11.rar - тут схемы и печатные платы адаптеров #1HVPP и HVSP, прошивки последней версии (update10-20.04.2011), печатная схема и плата версии 2h. Исходного кода прошивки нет. UPDATE #11, 30.04.2011. По поводу бит фьюзов см. файл README. В этом обновлении исправлен баг, когда не записывался старший байт фьюзов (касается всех чипов!).

atmega_fusebit_doctor_smd_adapter_1.0.rar - первая версия 1.0 fuse-доктора схемы и печатной платы. Исходного кода прошивки нет.

avr_attiny_hvsp_fusebit_doctor_V3.rar - версия доктора, которая предназначена только для микроконтроллеров AVR ATtiny (схема и прошивка) [4]. Исходный код доступен только для этой версии (на Бейсике).

[FAQ]

Q001: мой fuse-доктор не подает признаков жизни, светодиоды не мигают.
A001: скорее всего критичная ошибка на плате или плохо запрограммированный микроконтроллер.

Q002: Горит красный светодиод.
A002: Восстанавливаемый чип не распознан. Измерьте напряжения на нем в режиме ожидания напряжения. Это +12 на сигнале RESET и +5 SUPPLY на соединительном коннекторе мама – Вы должны получить 0V или близкое к 0V напряжение для обоих этих сигналов. После того, как нажата кнопка START, Вы должны на 1 секунду получить напряжения +12V и 5V. Если это не так, то проверьте транзисторы - исправны ли они, и правильно ли спаяна схема подачи напряжений.

Q003: Горит красный светодиод.
A003: Ошибка на печатной плате. Проводники проходят очень близко друг к другу, так что возможно, что есть невидимое замыкание. Также может быть, что где-то есть непропай. Проверьте все соединения мультиметром, причем очень тщательно.

Q004: Горит красный светодиод.
A004: Подключите устройство к терминалу, чтобы получить лог восстановления. Нажмите кнопку START для получения информации на терминале.

Q005: На терминал выводится "Init programming...", и больше ничего, или считанная сигнатура "00 01 02" или "FF FF FF".
A005: Восстанавливаемый чип неисправен, или все еще есть не обнаруженная ошибка на печатной плате.

Q006: Считанная сигнатура "1E 90 00", "1E 1E 1E", или что-то подобное (правдоподобные данные).
A006: Восстанавливаемый чип в порядке, он инициирован, проверьте замыкания на сигналах DATA, BS, XA.

Q007: Зеленый светодиод горит / в терминал выводится сообщение "Verifying... – OK!", но восстановленный чип не работает со стандартным программатором (не программируется через ISP).
A007: Можно быть на 100% уверенным, что фьюзы восстановлены корректно, но у восстановленного микроконтроллера есть аппаратная проблема с интерфейсом программирования ISP (MOSI, MISO, SCK), или имеется какое-то другое повреждение.

Q008: Что означают сообщения "Read Signature... FAIL!" и "Trying T2313 pinout... OK", выведенные в лог терминала?
A008: Все 20-выводные чипы нуждаются в индивидуальной обработке. Сначала fuse-доктор пытается прочитать чип по стандартной схеме, и если это не получается ("FAIL!"), то делается попытка использовать схему 20-выводных T2313 совместимых чипов, после чего эта последняя попытка получается успешной. Так что это нормальное поведение, не ошибка.

Q009: Что за мусор "<[2J", появляющийся в логе терминала?
A009: Это последовательность команд для очистки экрана терминала. Чтобы она обрабатывалась нормально, включите настройку эмуляции VT-100 в настройках программы терминала.

Q010: Я пытаюсь вводить данные в терминале, но не вижу появления символов.
A010: Убедитесь, что в настройках программы терминала установлена опция handshake в состояние NONE.

Q011: После ввода данных в терминале я не могу подтвердить их клавишей Enter, и не могу продолжить ввод.
A011: Когда Вы нажимаете Enter, Ваша программа терминала должна отправлять последовательность символов CRLF. Если это не так, то проверьте настройки терминала.

Q012: Я все перепробовал, но все равно ничего не получается.
A012: Задайте вопрос автору проекта в комментариях (см. [1]). Укажите как можно больше информации - версию firmware и печатной платы, предоставьте лог терминала.

Q013: Действительно ли нужны все эти резисторы 1 кОм (R7..R23), последовательно со всеми сигналами?
A013: Нет, они не очень-то нужны, это просто защитные токоограничительные резисторы, Вы можете собрать схему и без них (заменить эти резисторы перемычками). Однако имейте в виду, что если по какой-то причине восстанавливаемый микроконтроллер вдруг не войдет в режим программирования, и продолжит выполнять свой код, то логическое состояние его выходов может войти в конфликт с выходными состояниями управляющего микроконтроллера доктора, и по этой причине без резисторов есть некоторая вероятность выхода портов GPIO из строя. Так что резисторы R7..R23 защитят схему от подобных ситуаций, и очень желательно собрать схему точно так, как указано в схеме.

Q014: Подтягивающие нижние резисторы (pulldown) для сигналов 12V и 5V (R24 и R27) сильно греются в ручном режиме, и всей схеме нужно более мощный источник питания. Могу я тут что-то поменять, поставить резисторы номиналом побольше?
A014: Да, можете, но схема может работать некорректно с некоторыми восстанавливаемыми микроконтроллерами. В режиме ожидания напряжения должны быть близки к 0V, и когда напряжение питания включается или выключается, перепады фронтов должны быть правильной формы (см. описания входа в режим высоковольтного программирования, описанный в даташите на микроконтроллер). Из-за того, что используются только простые биполярные транзисторы, эти транзисторы вполне удовлетворяют всем требованиям по быстродействию. Нас интересует случай с микроконтроллером attiny2313, когда есть проблема, когда все фьюзы записаны корректно, кроме одного, RSTDISBL. Обнаружилось, что из-за плохих перепадов 12V на сбросе, этот микроконтроллер нормально работает в параллельном режиме, но не с высоким напряжением, поэтому не получается поменять этот фьюз. Это только интерпретация автора, может быть также и другая причина проблемы.

Q015: Мой чип корректно читается, но доктор не может записать новые значения фьюзов, даже с разрешенным режимом полной очистки.
A015: Если программатор ISP работает подобным образом, то Ваш чип поврежден, тут ничего не поделаешь.

Q016: Без восстанавливаемого чипа, схема работает странно, зависает, затем снова начинает работать, когда я приближаю пальцы руки к проводникам платы. Зависание заключается в том, что на открыты ключи T1 (выдается +12V на сокет SV2) и T3 (выдается +5V на сокет SV2), и не горят оба светодиода.
A016: Схема и программа fuse-доктора не предназначалась для работы без восстанавливаемого микроконтроллера. Причина такого поведения в том, что когда восстанавливаемый пациент входит в режим программирования, fuse-доктор ждет появления высокого уровня на сигнале RDY, который должен выдать пациент. Этот вывод не подтянут к земле, и работает как вход с высоким сопротивлением, поэтому статика и наводки от Ваших пальцев читаются как лог. 1, и код fuse-доктора продолжает выполнять свою программу.

Q017: Названия чипов не появляются в логе, вместо этого выводится "no names in 8kB ver".
A017: Имена не отображаются в 8-килобайтных версиях firmware доктора, например для atmega8 и atmega88, потому что имена не помещаются в пространство памяти программ. Если Вы все-таки хотите видеть в терминале имена чипов, используйте для доктора микроконтроллеры atmega168 или atmega328, и прошейте в них правильную прошивку.

Q018: Перепутал полярность внешнего блока питания 12V. Чем это грозит?
A018: Если в блоке питания имеется ограничение тока на уровне 150..200 мА, то скорее всего ничего страшного не произошло. Если же блок питания выдает ток больше 1А, то скорее всего выйдет из строя стабилизатор напряжения IC1 7805, его придется заменить. Микроконтролер ATmega наверняка останется живым.

[Как заказать]

Пустая печатная плата без учета пересылки стоит 250 рублей.

atmega fusebit doctor PCB top

Переходничок был изготовлен из платки TQFP32-DIP, подойдет для восстановления фьюзов микроконтроллеров AVR в корпусе TQFP32, например ATmega8, ATmega168, ATmega328P и других.

TQFP32 module top TQFP32 module bottom

[Ссылки]

1. Atmega fusebit doctor (HVPP+HVSP) – fix the fusebits site:mdiy.pl.
2. Сопряжение микроконтроллера с компьютером без MAX232.
3. AVR: отладочный вывод через UART (RS232 debug).
4. Attiny fusebit doctor (HVSP) – fix fusebits site:mdiy.pl.
5. 059-Исправляем AVR фьюзы при помощи «Atmega fusebit doctor» site:getchip.net.

 

Комментарии  

 
0 #19 Дмитрий 09.04.2023 01:01
Собрал плату, проверил неоднократно, исправил кучу косяков, прошил МК по инструкции, но все равно никаких признаков свечения светодиодов. Лишь иногда в некоторые случайные моменты светодиод пытается загореться, но это бывает редко и случайно, чаще на выходе МК никакого сигнала нет. Одной странной вещью является то, что питание уже подается на пострадавший МК, при нажатии кнопки и удерживании, питание пропадает, при отпускании все возвращается назад.

microsin: вероятно не все косяки нашли и исправили. Схема и программа проверенные неоднократно, все рабочее. А светодиоды загораются только тогда, когда в панельку вставлен восстанавливаем ый микроконтроллер , и он определился.
Цитировать
 
 
0 #18 Andrey 02.09.2020 19:33
Спасибо, отличная вещь.Работает замечательно. Автор молодец.
Цитировать
 
 
0 #17 юрий 10.03.2020 08:56
В итоге я шил через Arduino ASP (по сути через AVRDUDE). Так вот просто установив фьюзы согласно readme файла и залив в МК HEX-файл - ничего не взлетело - устройство никак не реагировало ни на кнопку, ни светодиоды никак не загорались. В итоге бился, бился... и все таки сначала загрузил optiboot, а потом уже HEX и только после этого все заработало. Оживил окирпиченную arduino pro micro (atmega328p) - окирпичилась при прошивке скетча через USBAsp - не понятно как то криво скетч влился и повредил загрузчик, после чего слетела сигнатура (000000), но доктор нормально вернул ее к жизни.
Цитировать
 
 
0 #16 юрий 10.03.2020 08:54
Доброго дня всем, устройство собрано, единственное что возникло из так называемых проблем, так это непосредственно прошивка. Эта тема почему то не очень широко раскрыта и для начинающих (а устройство окирпичивают в основном начинающие) не особо как мне кажется понятен сам процесс.
В качестве рабочего MK использовал atmega328p (ну нет у меня Atmega8 - я ими не пользуюсь). Так вот где только не смотрел - народ прошивает какими то программаторами через LPT (данный порт считаю мертвым, т. к. по сути у меня его ни в одном компе и ноуте уже не существует), кто-то через какие то COM программаторы...

microsin: обычно шьют через ISP дешевым программатором USBasp, который стоит на AliExpress копейки. Или можно прошить микроконтроллер платой Arduino, опять же через ISP (как сделать из Arduino программатор, полно в сети информации). Фьюзы трогать не надо, так что прошивка доктора труда не составляет.
Цитировать
 
 
+1 #15 Игорь 23.03.2019 01:41
На всех сайтах везде одно и то же. Вы что, друг у друга списываете? Никто не может ответить, почему при нажатии на старт загораются оба диода. Проверено все осциллографом, все токи, и при старте, и в беспорядке.

microsin: никто и не ответит, потому что не авторы, и исходного кода автор не предоставил. Все, что в FAQ написано, читали? Что монитор в консоли выводит?
Цитировать
 
 
+1 #14 Владимир 09.02.2019 00:24
Собрал на макетке, вылечил attyni2313, atmega8. Проводов куча, контакты на транзисторах пропадали, прошивку использовал 18.08.2010. А так все отлично, огромная благодарность.
Цитировать
 
 
0 #13 Сергей 15.02.2017 12:47
Прозвонил всю плату, пробовал разные контроллеры Mega8, Mega328. Напряжение на RESET появляется +12, на SUPPLY так же все хорошо. Элементы все строго по номиналу. Транзисторы протестированы микропроцессорн ым тестером. Пробовал разные прошивки какие нашел. Толку нет, горит КРАСНЫЙ и все. ;-)

microsin: не знаю, фантастика какая-то. У меня заработало сразу, уже несколько докторов собрал.
Цитировать
 
 
0 #12 bolt 15.01.2017 18:11
Собрал данное устройство. При включении пару раз моргнет зеленый светодиод а потом красный загорается. Что это может быть? Уже проверил все раз 10. Все припаяно намертво. Без пациента то не загораются светодиоды а когда проводишь рукой по микроконтроллер у, то загорается красный светодиод.

microsin: проверяйте работу ключей высокого напряжения, собранные на транзисторах, причем не визуально, а осциллографом. На восстанавливаем ом микроконтроллер е должен появляться импульс напряжения 12V.
Цитировать
 
 
0 #11 Олег 25.12.2016 21:08
Здравствуйте! Вставляю atmega8 и выдает:
Welcome
AVR Atmega fusebit doctor (HVPP+HVSP) version 2.11
http://diy.elektroda.eu/atmega-fusebit-doctor-hvpp
Usage in commercial/profit purposes not allowed

AUTOMATIC HVPP MODE

Init programming... DONE
Read signature... 1E 93 07
Searching chip... no names in 8kB ver
Chip erase... DONE
Read fusebits... L:E4 H:D9 E:00
Should be... L:E1 H:D9 E:00
Lockbits... DISABLED (FF)
Writing E1 D9 00... DONE
Verifying... L:E4 H:D9 E:00- FAIL!
Please try again...
Thank You

Почему у него не получается переписать биты?
То же самое и на Atmega 328P.

microsin: проверьте цепи генерации импульса высокого напряжения (транзисторные ключи).
Цитировать
 
 
0 #10 Андрей 06.05.2016 15:09
Спасибо большое. Самая подробная статья, которую я встречал. Только благодаря Вам запустил своего доктора и вылечил мегу 48.
Цитировать
 

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


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

Top of Page