Программирование AVR: решение проблем, FAQ Путаница с перемычками (fuses) Thu, November 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Путаница с перемычками (fuses) Печать
Добавил(а) microsin   

Перемычки или фьюзы (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, производитель Фитон]
fuses01.JPG
Попробуйте здесь догадаться, какие перемычки соответствуют каким байтам фьюзов, что означает галочка (какое состояние фьюза - 0 или 1?..), и какое все-таки шестнадцатеричное значение у байтов фьюзов. Отсутствует нумерация бит перемычек, подсказка их по предназначению. Имя фьюза DWEN (debugWire enable) ошибочно указано как WDEN. С помощью экспериментов удалось выяснить, что установленная галочка означает запрограммированность бита фьюза (бит имеет при этом значение 0). Если добавить сюда нестандартность оконного интерфейса, отсутствие файла помощи и неприглядную работу команды поддержки, которая не торопится обновлять программу и исправлять ошибки, то становится ясно, что такой программатор лучше не покупать.

[AVR Studio, Version 4.14 Build 589, железо - JTAGICE mkII]
fuses02.JPG
Здесь все уже намного лучше. Видны шестнадцатеричные величины байт фьюзов, есть описание их текущего состояния.

[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]
fuses03.JPG
Отличный ресурс, позволяющий разобраться в назначении бит и их нумерации, узнать их величину по умолчанию, высчитать шестнадцатеричное значение байт фьюзов. Эта картинка отображает в браузере ссылку http://palmavr.sourceforge.net/cgi-bin/fc.cgi, (новая ссылка http://www.engbedded.com/fusecalc/) где нужно выбрать тип чипа и указать нужные состояния перемычек.

 

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


Защитный код
Обновить

Top of Page