Часто в моей практике при программировании микроконтроллеров ATtiny13, которые часто использую, возникали ситуации, когда микроконтроллер толи из-за программ или неправильных ошибочных действий при программировании «самоблокируется» и отказывается программироваться повторно в ISP-режиме. Насколько я понял, подобная проблема волновала не только меня. И изучив статьи по ссылкам, я понял что надо попробовать собрать подобное устройство, которое бы возвращало залоченный микроконтроллер к жизни. Потому, как держать STK500 наготове и доставать его всякий раз для таких случаев не всегда удобно.
Какой выход? Купить новый программатор, где есть такой режим? — это дополнительные денежные затраты. Изготовить программатор с возможностью программирования в H/V режиме? — тоже можно, но это снова дополнительное время. Есть ещё один путь, — изготовить небольшое устройство на микроконтроллере, которое будет записывать в «заблокированный» микроконтроллер изначальные заводские настройки.
Не надо даже компьютер запускать для перепрограммирования, достаточно «заблокированный» чип воткнуть в панельку, нажать кнопку «восстановить», после чего мигнёт светодиод и через секунду всё! Микроконтроллер вернули к жизни.
Почитав статьи, на эту злободневную тему, написанную теми, кто уже сталкивался с таким явлением, я решил собрать подобное устройство и проверить его работу. Кое-что изменил в схеме, так как мне хотелось бы, кое-что упростил и вот, что у меня получилось:
Микроконтроллер U1 берёт на себя задачу по реанимации «убитого» микроконтроллера. Вставляем в панельку повреждённую микросхему, включаем питание блока питания ATX, который я счёл удобным использовать для данного модуля, поскольку там есть два напряжения: +5 в и +12 в, что требуется нам для питания данной схемы, оснастил схему ответной частью разъёма от блока питания ATX для удобства.
После подачи питания, микроконтроллер загружает в повреждённый микроконтроллер, начальные заводские установки, по сути применяя то же самое высоковольтное параллельное программирование, цикл записи осуществляется за интервал около секунды, о чём свидетельствует зажигание светодиода схемы в момент подачи напряжения на реанимируемый микроконтроллер. После того, как светодиод погас, нужно выключить питание, и вытащить реанимированную микросхему, теперь уже способную к полноценному программированию.
С 3-й ноги микросхемы U1 подаётся импульс определённой длительности, который открывает транзисторные ключи, подавая в этот период напряжение на реанимируемый микроконтроллер U2 (+12 в на 1-ю ножку — Reset и одновременно подаёт +5 в на 8-ю ногу — Vcc). А так же одновременно по другим выводам параллельно передаётся на запись из U1 в U2 информация изначальных заводских настроек. После окончания этого цикла светодиод гаснет, что говорит о том, что процесс реанимации закончен и можно выключить питание, извлечь восстановленную микросхему.
Подобное устройство я собрал и испытал, сознательно загоняя «подопытный» экземпляр — микроконтроллер ATtiny13 в «нежелательные» режимы, приводящие к последствиям, после которых он отказывался повторно программироваться ISP-программаторами (STK200, AVR ISP mkII и т.п.). Посредством данного реаниматора возвращал его к жизни.
Транзистор Q1 n-p-n структуры, из отечественных, можно применить КТ315. Q2, Q3 p-n-p, можно применить КТ361
Принципиальную схему, прошивку микроконтроллера, как выставить фьюзы (fuse-биты) микроконтроллера при программировании (тактовая частота 4,8 МГц) для микроконтроллера ATtiny13, выполняющего роль реаниматора, (по схемному обозначению U1) прилагаю.
Скачать прошивку и принципиальную схему
Науменко Владимир, vladimir@radioded.ru
3 комментария
А не много точек на схеме?
Собрал, работает. При включений загорелся светодиод, потом погас, нажал кнопку, загорелся светодиод и через секунду погас. Прошивал через «sinaprog». Транзисторы поставил bc547 и bc557. Attiny13, ожил, случайно поставил слишком низкую частоту. Интересно attiny85 сможет лечить?
Добрый день. могу ли растчитывать на Вашу помощь? Дело в том , что пришли с китая ATtiny13a 10шт. и у каждой в нулевом адрессе flash и eeprom пишет 0E. подскажите это лечится или нет?