Исправление фьюзов AVR

Иногда случается что исправный, правильно подключенный микроконтроллер перестает определяться программой для прошивки. Это может происходить в следствии нескольких причин:

  1. Программирование через SPI запрещено
  2. Ножка RESET стала обычным пином порта
  3. Неправильно выбран источник тактирования

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

  • Кварц ~4 МГц
  • Конденсаторы  от 12 пФ  до 22 пФ (2 шт)
  • Резистор 10 кОм
  • Микросхема 74HC00
  • Прямые руки :-)

Исправление фьюзов AVR

Предположим, что мы не знаем какой источник тактирования у нас выбран. Существуют следующие источники тактирования :

  • Кварцевый резонатор
  • Внешняя RC цепочка
  • Внешней генератор

Есть еще внутренний RC генератор но по понятным причинам он нам не интересен. Для воскрешения контроллера нужно последовательно перебирать возможные варианты.

Кварцевый резонатор

Кварцевый резонатор подключается к ногам XTAL2 и XTAL1. Каждая нога кварца подсоединена к конденсатору который в свою очередь подключен на землю. Конденсаторы любые от 12 до 22 пф.

Источник тактирования - кварц

Если подключение кварца не помогло то пойдем дальше

Внешняя RC-цепочка

Использовать ее для тактирования я бы не стал, ибо частота будет плавать как сами знаете что в проруби. Подключается она к контроллеру вот таким образом:

RC цепочка

ВАЖНО: Вывод XTAL2 должен болтаться в воздухе! Подключать его никуда не надо. Если и это не помогает то остается последний вариант

Внешний генератор

Этот генератор можно сделать практически из любой логики или например из таймера 555. Под рукой оказалась микросхема 74HC00. Вместо нее можно использовать нашу к155ла3. Схема предельно проста и не требует наладки:

Генератор на 74HC00

Генератор работает на частоте около 1.3 МГц. Естественно ее можно подстроить меняя номиналы резистора и конденсатора, но вряд-ли в этом будет необходимость. Плату я для него не делал т.к. смысла не было. Ногу XTAL2 нужно оставить болтаться в воздухе. Если и после этого контроллер не завелся, то это значит что контроллер умер или программирование по SPI запрещено или отключен RESET. Помочь тут может только параллельный программатор.

Вопросы, предложения, уточнения кидаем в комментарии.

Исправление фьюзов AVR: 32 комментария

  1. Молодец. Осталось показать это в виде законченного схемотехнического решения и все будет супер.

    У меня для этих целей отдельно макетка реализована, но она заточена под 16 и 32 мегу.

  2. Ну да и на К155ЛА3 можно слепить, или на ВЧ транзисторах биполярных… У меня отдельно тиня лежит прошитая и при возникновении проблем с фьюзами сразу соединяется и фьюзы как новые)))

    1. Много народу говорили о методе «слюнявого пальца». Т.е. просто пальцем касаешься вывода XTAL1 и пробуешь прошить фьюзы. Я много раз пробовал что-то не выходило. Может у меня наводок мало х.з. =)

  3. Хорошие публикации, спасибо! «Есть еще внутренний RC генератор но по понятным причинам он нам не интересен»… — по каким это понятным причинам он не интересен??? Это как раз мой случай….

    1. Если включен ВНУТРЕННИЙ rc генератор, то контроллер будет опознаваться программатором без всяких внешних генераторов, кварцев итд. По этой причине и не интересен =)

  4. Я как раз установил внутренний RC генератор — 128 кГц, после того как перевел фьюзы — устройство сразу жа стало работать от внутр. генератора (вижу по результату работы), но тут же и мк (ATtiny2313) сразу же перестал определяться программатором (SPI). Можно ли это исправить с внешним кварцевым генератором?

    1. Здесь видимо вот какая ситуация.
      Микроконтроллер прошивается по SPI. Там есть линии miso, mosi и sck. По проводу sck от программатора к контроллеру передаются тактовые импульсы и их частота должна быть в четыре раза меньше тактовой частоты микроконтроллера. Чтоб решить проблему нужно понизить частоту sck. Обычно фирменные программаторы от Atmel (ну или их клоны) умеют это делать, нужно только в настройках поставить нужную частоту. Какой программатор то у тебя ? Если USBasp то попробуй перемычку Slow SCK поставить. Обычно помогает.

  5. Программатор STK 200 (сам собрал), — под LPT порт. Для прошивки использую PonyProg, все всегда работало замечательно, пока фьюзами не перевел на внутренний генератор 128 кГц. Теперь мк программу выполняет, но не определяется программатором…. паразит :)

  6. Есть еще один вариант, по крайней мере помог мне на днях Мегу8 заставить определяться. Качаем программу — генератор звуковых частот.Паяем проводок к любому из выходных каналов на звуковой карточке и цепляем его на XTAL1. У меня Мега определилась при частоте генератора 10кГц.

  7. Случайно поставил внешнее тактирование на Mega8
    Ext. RC Osc 8-12 MHz.
    как вернуть зоводские настройки….
    Я так понял это лечится с помощью «Внешней RC-цепочки» но у меня не сработало собрал схему с картинки на мокетной плате куда подключается резистор к VCC ??? помогите подробным описанием.
    Благодарю за подсказку!

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