Главная arrow Начинающим arrow Что это? Как это? Почему это? arrow Несколько слов про FUSE-биты  
13.12.2024 г.
Главная
Проекты
Статьи
Начинающим
Архив новостей
Ссылки
Контакты
Поиск
Файлы
Форум
Карта сайта
Авторизация
Админцентр
Поддержи наш сайт!
Через WebMoney

 R785211844650
 Z210696637574
 E368177590409

Несколько слов про FUSE-биты Печать E-mail
Рейтинг: / 67
ХудшаяЛучшая 
Автор ARV   
07.01.2008 г.

Когда дело доходит до прошивки программы в микроконтроллер AVR, наибольшие проблемы, как правило, вызывают загадочные и непонятные fuse-биты... И зачем только фирма Atmel их придумала?! Многие, кто сгоряча решил установить их как-нибудь, горько пожалели потом, ибо их МК "умер" - перестал определяться программатором и не работал в собранной схеме...

Так что же это такое - fuse-биты? Зачем они нужны? Как их использовать? Именно об этом сейчас и пойдет речь.

 

  Семейство ATtiny Семейство ATmega
  2313 25/45/85 13 26 261/461/861 8 16 48/88/168 128 169 329 8515 8535
RESERVED                 M103С +   S8515С S8535С
OCDEN             +   + + +    
JTAGEN             +   + + +    
SELFPRGEN + + +   +     +          
DWEN + + +   +   + +          
EESAVE + + + + + + + + + + + + +
SPIEN + + + + + + + + + + + + +
WDTON + + +   + +   + + + + + +
BODLEVEL2 + +     +     +   +      
BODLEVEL1 + + +   +     +   + +    
BODLEVEL0 + + + BODLEVEL + BODLEVEL BODLEVEL + BODLEVEL + + BODLEVEL BODLEVEL
BODEN       +   + +   +     + +
RSTDISBL + + + + + +   +     +    
CKDIV8 + + +   +     +   + +    
CKOUT + +     +     +   + +    
SUT1 + + + + + + + + + + + + +
SUT0 + + + + + + + + + + + + +
CKOPT       +   + +   +     + +
CKSEL3 + +   + + + + + + + + + +
CKSEL2 + +   + + + + + + + + + +
CKSEL1 + + + + + + + + + + + + +
CKSEL0 + + + + + + + + + + + + +
PLLCK       +                  
BOOTRST           + + + + + + + +
BOOTSZ1           + + + + + + + +
BOOTSZ0           + + + + + + + +

 

В этой таблице перечислены все fuse-биты более-менее современных и популярных микроконтроллеров семейства AVR. Естественно, все типы МК рассмотреть сложно, да и необходимости в том нет, так как биты повторяются одни и теже, разве что с небольшими вариациями.

В таблице в левом столбике указаны фирменные названия fuse-битов, в первых двух строках перечислены семейства и типы кокнретных МК, а на пересечении строк и столбцов стоит знак плюс, если данный fuse-бит имеется в данном МК, или указано название, отличное от стандартного (это сделано для экономии места, чтобы не делать отдельную строку для бита, который имеется в единственном типае контроллера). Если какой-то бит отсутствует - в соответствующей клетке ничего нет.

Теперь несколько слов о назначении каждого бита. По порядку.

 

RESERVED - как следует из названия, этот бит зарезервирован для каких-то неизвестных простым смертным целей фирмой Atmel. Ни при каких условиях не рекомендуется менять его состояние (т.е. надо оставлять его таким, как он установлен при изготовлении МК). В этой строке встречаются биты с другими названиями, как правило, это биты включения режима совместимости с устаревшими типами МК, на смену которым выпущены новые. Обычно в конце названия такого fuse-бита имеется символ С - от COMPATIBLE (совместимый).

OCDEN - бит, разрешающий работу схемы внутрикристалльного отладчика (On Chip Debug ENable). Никогда не оставляйте установленным этот бит в коммерческих продуктах! Иначе не гарантируется сохранность вашей интеллектуальной собственности!

JTAGEN - бит, разрешающий работу интерфейса программирования JTAG. По сравнению с SPI-интерфейсом, JTAG обладает расширенными возможностями. Не рекомендуется без необходимости оставлять этот бит установленным, т.к. в этом случае потребляемый МК ток возрастает.

SELFPRGEN - бит, разрешающей программе МК производить запись в память программ, т.е. производить самопрограммирование.

DWEN - бит, разрешающий работу DebugWire - однопроводного отладочного интерфейса. Не рекомендуется оставлять его установленным в коммерческих изделиях по причинам, изложенным выше.

EESAVE - бит, после установки которого при стирании памяти МК содержимое EEPROM данных будет сохраняться нетронутым, т.е. не будет стерто.

SPIEN - бит, разрешающий работу интерфейса внутрисхемного программирования МК по SPI. Этот бит может быть легко переустановлен при помощи параллельного программатора (или JTAG, если таковой разрешен и имеется в МК). Все МК выпускаются с установленным битом SPIEN, снять его по интерфейсу SPI невозможно.

WDTON - бит, после установки которого сторожевой таймер WDT включается сразу после подачи питания и не может быть отключен программно. Если бит не установлен, то включением и отключением WDT можно управлять программно.

Группа битов BODLEVEL. Может быть либо один такой бит, либо несколько, тогда они нумеруются, начиная с нуля. Значение этих битов определяет порог срабатывания схемы BOD - детектора уровня питающего напряжения.

BODEN - бит, включающий схему аппаратного детектора недопустимого уровня питающего напряжения, т.е. схему BOD.

RSTDISBL - бит, отключающий сигнал внешнего сброса от вывода микроконтроллера и подключающий к нему схему порта ввода-вывода. Этот бит имеется только в тех МК, у которых вывод аппаратного сброса совмещен с одинм из портов ввода-вывода. Это бит, ошибочная установка которого может лишить вас возможности программирвоать МК по SPI, т.к. наличие сигнала сброса - обязательное условие включения режима программирования микроконтроллера. По возможности не устанавливайте этот бит, если намерены продолжать работать с МК при помощи последовательных программаторов. Переустановка этого бита возможна только при помощи параллельного программатора (или выскоквольтного последовательного программатора для некоторых моделей).

CKDIV8 - бит, включающий предварительное деление частоты кварцевого (или иного имеющегося) тактового генератора на 8. То есть при включенном этом бите и применении кварцевого резонатора на 8 МГц реальная тактовая частота МК составит 1 МГц.

CKOUT - бит, разрешающий вывод тактовой частоты на один из выводов МК (для тактирования других устройств).

SUT1 и SUT0 - биты, управляющие режимом запуска тактовых генераторов МК. Связаны с нижеописываемыми битами, определяющими тип и частоту тактового генератора, причем связь весьма хитрая и запутанная. При ошибочной их установки возможны ситуации неустойчивого запуска генератора или неодногратного сброса МК в процессе подачи на него питания.

CKOPT - бит, определяющий режим работы встроенного генератора тактовой частоты для работы с кварцевыми резонаторами. Реально изменяет коэффициент усиления встроенного инвертора в схеме генератора.  Ошибочная установка может приводить к неустойчивому запуску кварцевого генератора, вплоть до возбуждения его не на той гармонике, что надо (в моей практике был случай, когда из-за этого бита кварц запускался или только при питании МК напряжением не выше 3,6В, или только после прикосновения к выводу XTAL1 пинцетом)

 

Группа битов CKSEL0...CKSEL3 - биты, комбинация которых определяет тип и частоту работающего тактового генератора. Всего возможно до 16 комбинаций, однако не все определены для всех типов МК. Ошибочная установка комбинации этих битов может сделать МК "мертвым" - он не будет работать в схеме и не будет обнаруживаться последовательными программаторами - это вторая наиболее частая беда начинающих.

PLLCK - бит, разрешающий использование встроенного синтезатора частоты для тактирования ядра МК.

BOOTRST - бит, определяющий адрес, с которого будет начато исполнение программы после сброса - если бит установлен, то начало программы будет не с адреса 0000h (как обычно), а с адреса области загрузчика (Boot Loader).

Группа битов BOOTSZ - два бита, определяющие размер области памяти программ, выделяемой для загрузчика (Boot Loader). Комбинация этих битов, в частности, определяет точку начала исполнения программы после сброса, если установлен бит BOOTRST.

Вот и все биты. Разумеется, тут дана очень краткая информация об их назначении, но ее достаточно, чтобы выделить 3 группы fuse-битов: безопасные, относительно безопасные и опасные. Разумеется, эти степени опаснеости условны и отражают лишь степень возможных последствий для начинающих при неаккуратной работе с ними. В группу опасных можно выделить биты CKSELx и RSTDSBL, особенно последний, т.к. ошибочная установка его может навсегда (или очень надолго) умертвить ваш МК. Относительно безопасными можно считать биты BOOTRST, CKOPT, SUTx, JTAGEN, OCDEN и DWEN - неаккуратная работа с ними может немного попортить вам нервы, но к катастрофе не приведет (то есть МК не "потеряется"). Ну а все прочие - это безопасные fuse-биты, вряд ли они смогут доставить вам слишком много проблем.

При работе с некоторыми программаторами (ChipBoom не входит в их число) требуется задавть значения групповых битов в виде чисел - двоичных или шестнадцатеричных. В этом случае следует помнить, что всегда бит в группе с бОльшим номером - это более старший разряд двоичного представления.

В заключение главное: установленным считается fuse-бит, равный нулю, а сброшенным - равный единице. Это связано с общим принципом работы с любой памятью - от ПЗУ до МК - стертая (т.е. чистая) память содержит все единицы, и только нолики могут быть в нее записаны. Никогда не забывайте об этом! Как правило во разных программаторах fuse-биты устанавливаются разными способами (галочками, списком или иначе), но всегда и везде ЗАПРОГРАММИРОВАННОМУ состоянию бита соответствует НОЛЬ, а не единица.

 


Добавить в любимые (5) | Просмотров: 59932

  Коментарии (7)
 1 Написал(а) Anonim, в 16:28 10.01.2008
Спасибо за помошь
 2 Написал(а) dem-vr, в 19:57 10.01.2008
Благодарим за разьяснение, очень полезно! 
Когда порадуете параллельным и высоковольтным режимоми  
программирования для ChipBoom
 3 Написал(а) валерий, в 12:45 30.03.2008
спосибо за помощь
 4 Написал(а) OLEG, в 13:26 22.03.2010
Спасибо за разьяснение,очень помогло!
 5 Написал(а) nikolai, в 15:41 02.04.2010
спосибо
 6 Написал(а) Виталий, в 13:39 05.04.2010
присоединяюсь к словам благодарности-весьма полезная и обобщенная информация !
 7 Написал(а) Евгений, в 09:43 20.02.2011
большое и огромное спасибо!

Только зарегистрированные пользователи могут оставлять коментарии.
Пожалуйста зарегистрируйтесь или войдите в ваш аккаунт.

 
« Пред.   След. »
Полезные материалы по сходным темам
Кто на сайте?
Сейчас на сайте находятся:
3 гостей
Помощь on-line
BannerFans.com