Ошибка базы данных WordPress: [Table './meandr_base/anzpz_usermeta' is marked as crashed and last (automatic?) repair failed]
SELECT user_id, meta_key, meta_value FROM anzpz_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC

2

Восстановление конфигурации Fuse-битов микроконтроллеров AVR — tiny (HVSP)

    При разработке устройств на микроконтроллерах AVR часто требуется изменение конфигурации Fuse-битов (например, для изменения источника тактовой частоты, включения/выключения дополнительных функций). Все микроконтроллеры AVR имеют возможность внутрисхемного программирования (последовательный протокол). Однако при конфигурировании Fuse-битов легко допустить ошибку, что очень часто случается у новичков, и в итоге, при следующей попытке внутрисхемно запрограммировать микроконтроллер, программатор сообщает об ошибке (например, микроконтроллер не обнаружен).

Распространенными случаями является ошибочное отключение вывода Reset микроконтроллера (Fuse-бит RSTDISBL, для возможности использовать его как линию ввода/вывода) или отключение режима ISP программирования (Fuse-бит SPIEN) – в этих случаях внутрисхемное программирование станет невозможным.

Данное устройство – Attiny fusebit doctor – позволяет восстановить конфигурацию Fuse-битов (заводские установки, согласно техническому описанию) микроконтроллеров семейства Tiny фирмы Atmel. Поддерживает все микроконтроллеры, которые имеют интерфейс высоковольтного последовательного программирования (HVSP):

— в 8-выводном корпусе: Attiny11, Attiny12, Attiny13, Attiny15, Attiny25, Attiny45, Attiny85, Attiny22, AT90s2323, AT90s2343;
— в 14-выводном корпусе: Attiny24, Attiny44, Attiny84;
— в 20-выводном корпусе, со специальным адаптером: Attiny261, Attiny461, Attiny861.

Схема устройства

Устройство очень простое в изготовлении, не содержит дорогостоящих компонентов. Основой является микроконтроллер ATtiny2313, а также несколько резисторов и транзисторов (BC547, BC557), регулятор напряжения +5 В (7805T). Стоит заметить, что для питания устройства необходим стабилизированный источник питания с выходным напряжением +12 В (что важно для инициализации режима высоковольтного программирования).

При программировании Fuse-битов микроконтроллера следует учитывать, что используется внутренний осциллятор 4 МГц без делителя на 8. А также можно включить опцию «fast rising power».

Восстановление конфигурации микроконтроллера (пациента) начинается по нажатию кнопки Start. Для индикации статуса предусмотрены два светодиода, состояния которых обозначают:

— включен зеленый светодиод – конфигурация Fuse-битов восстановлена. Если установлены Lock-биты, то проверяется только соответствие текущей конфигурации битов заводским установкам и если она совпадает, то включается зеленый светодиод;
— включен красный светодиод – ошибка при считывании сигнатуры микроконтроллера: невозможно прочитать, отсутствует микроконтроллер в сокете или сигнатура не совпадает с имеющимися в базе данных устройства;
— мигает зеленый светодиод – сигнатура верна, конфигурация Fuse-битов не верная. Lock-биты установлены, требуется операция стирания Flash-памяти;
— мигает красный светодиод – сигнатура верна, lock-биты не установлены, но по некоторым причинам Fuse-биты не могут быть записаны, не проходит проверка после 10 попыток.

Устройство для восстановления Fuse-битов действует согласно протокола высоковольтного последовательного программирования. Первоначально при запуске процесса, восстанавливаемый микроконтроллер переключается в режим высоковольтного программирования памяти, затем считывается сигнатура чипа и проверяется возможность работы устройства с ним. После этого выполняется операция стирания, если пользователь указал это. Следующий этап – считывание lock-битов и, если они не установлены, то контроллер получает новую конфигурацию Fuse-битов, соответствующую модели микроконтроллера — пациента. После этого выполняется проверка установки (верификация) Fuse-битов и, если тест проходит удачно, устройство заканчивает свою работу. В противном случае устройство повторяет цикл запись-верификация Fuse-битов 10 раз.

Подключение выводов микроконтроллеров в режиме высоковольтного последовательного программирования.

На плате установлены две перемычки (джамперы) «chip erase» и «unknown signature»:

chip erase – разрешает операцию стирания всей Flash-памяти чипа. Это необходимо в том случае, если установлены lock-биты, т.е. нет возможности исправить Fuse-биты, пока не будут сняты lock-биты. Джампер включен – операция стирания разрешена.
unknown signature – неизвестная сигнатура чипа – явление очень редкое, но все же случается, что чип стер свою сигнатуру. Сигнатура, байты калибровки и другие данные не могут неизменно храниться в структуре чипа, они могут быть случайно повреждены (стерты) в случае нестабильного электропитания в процессе программирования. Обычно в таких случаях получаемые значения сигнатуры — FF FF FF, но чип работает нормально, Flash-память можно считать и записать. Если считанная сигнатура не совпадает ни с одной из базы данных устройства (включая значения FF FF FF и 00 00 00), то при включении этого джампера устройство запишет универсальную конфигурацию Fuse-битов. Универсальная конфигурация означает, что будет восстановлен ISP (включение бита SPIEN) и функциональность вывода Reset (отключение бита RSTDISBL) микроконтроллера, опции осциллятора затронуты не будут. При таких действиях микроконтроллер получит возможность дальнейшего восстановления, но уже при помощи обычного SPI программатора.

Внимание! Не используйте опцию «unknown signature» с микроконтроллерами ATtiny11 или ATtiny15.

Архив для статьи «Восстановление конфигурации Fuse-битов микроконтроллеров AVR — tiny (HVSP)»

admin

2 комментария

  1. Ошибка базы данных WordPress: [Table './meandr_base/anzpz_usermeta' is marked as crashed and last (automatic?) repair failed]
    SELECT user_id, meta_key, meta_value FROM anzpz_usermeta WHERE user_id IN (738) ORDER BY umeta_id ASC

class="comment byuser comment-author-dum2 even thread-even depth-1 parent">
  • Ошибка базы данных WordPress: [Table './meandr_base/anzpz_usermeta' is marked as crashed and last (automatic?) repair failed]
    SELECT user_id, meta_key, meta_value FROM anzpz_usermeta WHERE user_id IN (1748) ORDER BY umeta_id ASC