|
Перемычки или фьюзы (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/) где нужно выбрать тип чипа и указать нужные состояния перемычек.
|