Skip to main content

ATtiny13A недоступен для внутрисхемного (ISP) программирования

Далеко не всегда причина невозможности запрограммировать микроконтроллер кроется в кривых руках. Случается и так, что даже успешный опыт программирования не гарантирует успешной прошивки контроллера, при совпадении определенных условий.

Именно такая ситуация случилась со мной совсем недавно: запас микроконтроллеров ATtiny13A был пополнен в местном магазине, платы разведены  и напилены, все распаяно и готово к программированию. И подвох ожидал там, где его в принципе не должно было быть - контроллер не увиделся программатором по ISP. Сложно запутаться в 8-ми ногах, из которых две - питание. И тем не менее, все было перепроверено, на пинах для программирования убрана периферия (например, заподозрены RC-фильтры в затягивании фронтов), но ситуация не изменилась.

Контроллеров было пять. Один запаян в плату, а остальные проверены "на весу". И у всех результат один - программатор их не видит. Что сразу стало заметно при проверке, и позволило выбрать дальнейшую тактику - вывод RESET болтается в воздухе, не имея внутренней подтяжки. Как обычный вход. Но когда фьюз RSTDISBL не активен (настройка фьюзов с завода), вывод RESET подтянут внутренним резистором, и при поданном питании на этом выводе должно быть напряжение питания.

Если же вывод RESET болтается в воздухе, это может означать только одно - фьюз RSTDISBL = 0, пин RESET настроен как обычный пин порта ввода/вывода, а следовательно, достучаться по ISP до контроллера не получится. Есть конечно еще один вариант, когда партия просто бракованная, и контроллеры в принципе не работоспособны. И здесь поставить точку может только параллельный программатор, ему совершенно без разницы, как настроены фьюзы.

Новость хорошая - в параллельном программаторе контроллер увиделся. Значит он исправен.

Попробуем разобраться, в чем же дело. Читаем конфигурацию.

Нас интересуют фьюзы:

  • Fuse High Byte: 0xF8
  • Fuse Low Byte: 0xF6

Далее, самый беспристрастный судья - даташит.

Вот и причина - у микроконтроллера из магазина, во-первых, вывод RESET настроен как обычный пин порта (RSTDISBL = 0), и во-вторых, чтобы уже наверняка, отключено программирование по SPI (SPIEN = 1). Это гарантированно делает невозможным программирование по "пяти проводкам - MISO/MOSI/SCK/RESET". А это ведь основная аудитория программирующих, гораздо меньше людей имеют параллельный программатор.

Фьюзы были изменены на заводские, и все прекрасно заработало внутрисхемно.

Резюме:

Конечно первым делом проверьте монтаж устройства. Убедитесь, что программатор исправен, и работает с другими МК. И только когда Вы целиком и полностью уверены что все сделали правильно, можно начать подозревать сам контроллер. Случается и такое. Всех благ.

Загрузки.
Icon

SinaProg 1.7.5.10 40.57 MB 287 downloads

Простая и удобная графическая оболочка для AVRdude. ...

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *