Ключевое ?лово

vk

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

Напомню,что у большинства микроконтроллеров Atmel вывод reset можно перепрограммировать в обычный вывод ,и в этом случае прошивка по SPI становится недоступно - программирование в этом случае возможно только через HVSP / HVPP программаторы:

HVSP(High Voltage Serial Programming) - это последовательный высоковольтный программатор для микроконтроллеров с малым количеством выводов. 

HVPP(High Voltage Parallel Programming) - это паралельный высоковольтный программатор для микроконтроллеров с большим количеством выводов.

В интернете найден вариант доктора фьюзов Atmega fusebit doctor  на основе микроконтроллера,небольшого количества радиокомпонентов и переходников под разные м/к.Он поддерживает микроконтроллеры и с HVPP и с HVSP  вариантом.Устройство может востанавливать работу микроконтроллеров,у которых заблокирован reset (фьюз RSTDISBL)  ,spi (фьюз SPIEN).

Для востановления Attiny13 было решено собрать "экпресс" вариант доктора на макетной плате  и используя Arduino UNO.Схема была упрощена для использования только режимом с HVSP.

Получилась вот такая упрощенная схема:

fusedoct shema

fusedoctUNO bb 

 

 

 

 

 

 

 

 

 

 

 

 

 Список деталей:

R1,R6 - 4.7 kOm.

R2,R4,R8,R9,R10,R11,R12 - 1 kOm.

R3 - 10kOm

R5,R7 - 100 Om.

Транзисторы - любые подходящие:

Q1 - N-P-N. Например 2N3904.

Q2 - P-N-P. Например 2N3906.

Программирование микроконтроллера:

Для наших целей необходим прошитый фьюз доктором микроконтроллер Atmega328P ,Atmega168,Atmega88 или Atmega 8,который должен быть установлен в Arduino.

К сожалению микроконтроллер необходимо прошивать другим программатором,так как мы будем менять фьюзы для использования внутреннего генератора:

Atmega 8 L:0xE1 H:0xD1
Atmega88,Atmega168 L:0x62 H:0xD7 E:0xF9
Atmega328 L:0x62 H:0xD1 E:0xFF

Рекомендуемые м/к : Atmega328 или Atmega168 -они поддерживают управление через консоль последовательного порта.В других м/к это не возможно.

Пример прошивки  микроконтроллера Atmega328 через USBasp :

avrdude -c usbasp -p m328 -U flash:w:atmega_fusebit_doctor_2.11_m328p.hex -U hfuse:w:0xD1:m -U lfuse:w:0x62:m -U efuse:w:0xFF:m

Пример прошивки  микроконтроллера Atmega328 через Arduino :

avrdude -c avrisp -P COM1 -b 19200 -p m328 -U flash:w:atmega_fusebit_doctor_2.11_m328p.hex -U hfuse:w:0xD1:m -U lfuse:w:0x62:m -U efuse:w:0xFF:m

Прошивки можно найти на официальном сайте или тут.Для каждого микроконтроллера имеется своя прошивка.

Если fusebit doctor больше не нужен,то состояние фьюзов можно вернуть ,воспользовшись функцией "записать загрузчик" в Arduino IDE подключив микроконтроллер так же через программатор.

Сборка схемы:

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

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

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

Перед первым запуском внимательно проверте все соединения - при возможных ошибках с питанием 12 вольт вы можете вывести из троя микроконтроллеры !

Сброс фьюзов на примере Attiny85:

Если вы уверены в отсутствии ошибок,то можете подключить питание к Arduino.Не забываем про внешнее питание +12 вольт.

Запускаем в среде Arduino IDE монитор порта и установливаем скорость 4800.Монитор последовательного порта можно использовать и другой.

Нажимаем кнопку reset на Arduino и мы должны увидеть данные пациента,на скриншоте показан уже сброшенный микроконтроллер:

attiny85good1

Для сброса фьюзов по умолчанию необходимо ввести цифру 1 -write fusebits.После этого вы должны увидеть состояние :attiny85good2

 

 

Что значит установка фьюзов прошла успешно.

Если на микроконтроллере установлены lock биты,то сброс фьюзов будет не возможен,пока не будет выполнено полное стирание.В строке Lockbits  будет указан статус ENABLED.

Для того,чтобы разблокировать микроконтроллер необходимо установить перемычку,выделенную оранжевым цветом(А4 на GND) и выбрать в меню пункт 4 - chip erase.Далее ,после разблокировки мы уже можем сбрасывать и сами фьюзы через опцию меню под номером 1.

Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.