Fuse-Фьюзы

Fuse - биты - словосочетание которое пугает многих начинающих в программировании. Fuse - это инструмент, рычажки для настройки параметров микроконтроллеров. Что это за параметры?
- защита EEPROM от стирания;
- настройка частоты работы генератора;
- настройка внешнего или внутреннего генератора;
- запрет на чтение прошивки и другие...
В программировании микроконтроллеров нужно запомнить следующее:
- какая программа используется для программирования;
- какой микроконтроллер программируется;
- какой программатор подключен;
- какие фьюзы должны быть выставленны;
- наличие нужных файлов (самой прошивки, EEPROM)
Нельзя просто прошить контроллер без настройки am.pjd. Так как для каждого они свои, и настраиваются согласно требований схемы и микроконтроллера.
По простому фьюзы можно разделить на опасные и не опасные. Опасные требуют тщательной проверки так как могут отключить некоторые функции контроллера. Например RSTDISBL или SPIEN. 
А если по правильному то все они делятся на 4 группы:
- Lock Bit Byte – лок биты для защиты программы от копирования;
- Fuse Extended Byte – дополнительный байт – особые функции;
- Fuse High Byte – старший байт;
- Fuse Low Byte – младший байт.

 Рассмотрим пример на ATMEGA8 - один из самых популярных микроконтроллеров.
Так выглядит установка фьюзов в программе CodeVisionAVR для рассматриваемого контроллера.
CKSEL0-3 - отвечают за выбор источника тактирования микроконтроллера. В даташите есть таблица из нее прикинуть конфигурацию битов.
CKOPT — используется только совместно с битами CKSEL, позволяет включить «режим усиления». Микроконтроллер в таком режиме имеет повышенное энергопотребление, однако более помехозащищен. Установка данного бита позволяет работать на частотах выше 8МГц, если сам микроконтроллер поддерживает такие частоты.
SUT0-SUT1 — эти биты отвечают за задержку, перед началом работы микроконтроллера. Насколько я понял из даташита, рекомендации в отношении этих битов касаются в основном питания и в том числе бита BODEN
BODEN — при установке бита, микроконтроллер контролирует напряжение питания. При снижении напряжения ниже определенного уровня, микроконтроллер сбрасывается.
BODLEVEL — определяет тот самый уровень напряжения, если фьюз установлен, то нижний предел питания 4В, если не установлен 2,6В.
BOOTRST — позволяет начать выполнение программы не с начала, а с определенной области BOOTLOADER.
BOOTSZ0-BOOTSZ1 — также относятся к бутлоадеру, определяют размер памяти отведенный загрузчика.
EESAVE — если бит установлен, то во время выполнения команды Erase Chip, EEProm память не будет стерта.
WDTON — позволяет использовать сторожевой таймер.
RSTDISBL — отвечает за назначение вывода reset. Если он установлен, то ножка  reset становится обычным портом ввода-вывода (опасный фьюз).
— запрет последовательного программирования, после установки этого бита микроконтроллер не возможно прошить без специального программатора (опасный фьюз).
Также, обратите внимание на программу которую вы используете для программирования. В некоторых программах фьюзы выставляются зеркально. Например в распространенных программах они выставляются зеркально: PonyProg, CodeVisionAVR, AVR Studio, SinaProg. В других программах выставляются прямо (не зеркально): Algorithm Builder, UniProf. Для уверенности рекомендую использовать калькуляторы фьюзов. Например на сайте http://fusecalc.mirmk.ru/. Функционал понятен и прост. Выбираете нужный вам микроконтроллер и далее смотрите "что почем и что куда". Теперь у вас есть понятие что такое Fuse (фьюз) биты и для чего они предназначены. В следующих публикациях будет рассмотрено алгоритм программирования, обзор программ, программаторов и др.


 

Коментарі