Перемычки или фьюзы (fuses), как известно, в чипах ATtinyXX и ATmegaXX управляют режимами работы, программирования, отладки и т. д. В даташитах эти перемычки подробно описаны, а с помощью программатора из можно записать в чип. Однако часто в интерпретации значений этих перемычек возникает путаница.
Происходит это по нескольким причинам. Во-первых, из-за того, что биты перемычек - "инвертированные". Т. е., запрограммированный фьюз означает, что в него записан ноль, и этот факт означает включение функции бита фьюза (эта функция отражается мнемоническим именем фьюза, например CKDIV8 включает встроенный делитель тактовой частоты на 8. Делитель на 8 включается, когда фьюз CKDIV8 запрограммирован, т. е. в его бит записан 0). Во-вторых, разные программаторы предоставляют разный интерфейс к управлению перемычками, к тому же часто неудобный и неочевидный. Приведу для примера интерфейс трех программаторов и одного калькулятора перемычек, отображающих одно и то же значение перемычек чипа ATtiny45 - 0xС1 low fuse byte, 0xDF high fuse byte, 0xFF ext fuse byte.
[ChipProg+, версия 4.38.00, производитель Фитон] Попробуйте здесь догадаться, какие перемычки соответствуют каким байтам фьюзов, что означает галочка (какое состояние фьюза - 0 или 1?..), и какое все-таки шестнадцатеричное значение у байтов фьюзов. Отсутствует нумерация бит перемычек, подсказка их по предназначению. Имя фьюза DWEN (debugWire enable) ошибочно указано как WDEN. С помощью экспериментов удалось выяснить, что установленная галочка означает запрограммированность бита фьюза (бит имеет при этом значение 0). Если добавить сюда нестандартность оконного интерфейса, отсутствие файла помощи и неприглядную работу команды поддержки, которая не торопится обновлять программу и исправлять ошибки, то становится ясно, что такой программатор лучше не покупать.
[AVR Studio, Version 4.14 Build 589, железо - JTAGICE mkII] Здесь все уже намного лучше. Видны шестнадцатеричные величины байт фьюзов, есть описание их текущего состояния.
[avrdude, консольный программатор] avrdude -c usbtiny -p t45 -U lfuse:w:0xc1:m -U hfuse:w:0xDF:m -U efuse:w:0xFF:m
[AVR Fuse Calculator ··· Version 0.3.5.1] Отличный ресурс, позволяющий разобраться в назначении бит и их нумерации, узнать их величину по умолчанию, высчитать шестнадцатеричное значение байт фьюзов. Эта картинка отображает в браузере ссылку http://palmavr.sourceforge.net/cgi-bin/fc.cgi, (новая ссылка http://www.engbedded.com/fusecalc/) где нужно выбрать тип чипа и указать нужные состояния перемычек. |