МИКРОКОНТРОЛЛЕРЫ AVR: FUSE-БИТЫ

   В данном обзоре рассмотрим, что же такое fuse-биты и для чего они нужны, так как это вызывает много непонимания (да и разработчики прошиващего софта вертят их как хотят). В результате этого контроллеры AVR кучами складываются в коробки до «лучших времен». Для примера рассмотрим fuse-биты на примере МК ATMega8. Для других типов контроллеров AVR назначение уточняются в даташите на конкретный МК (не ленитесь читать документацию). Итак, поехали! Все фьюз-биты МК разделены на 2 байта – старший (Fuse High Byte) и младший (Fuse Low Byte). Разбор конечно же начнем со старшего байта.

старший байт

 RSTDISBL – определение режима работы пина RESET. Данный пин может работать в 2-х режимах как вывод внешнего сброса или как порт ввода-вывода. 
 RSTDISBL=1 – пин настроен на работу как вывод внешнего сброса.
 RSTDISBL=0 – пин работает как порт ввода-вывода. Данный режим работы отключит возможность последовательного программирования и поможет только параллельный программатор.
 WDTON – включение и отключение сторожевого таймера (Watch Dog Timer), который выполняет защиту от зависания программы, выполняемой МК. В основном применяется в ответственных программах, где зависание нежелательно.
 WDTON=1 – сторожевой таймер отключен (можно включить программно через бит WDT регистра WDTCR).
 WDTON=0 – сторожевой таймер включен (программно отключить не получится).
 SPIEN – разрешение последовательного программирования.
 SPIEN=0 – последовательное программирование разрешено.
 SPIEN = 1 – последовательное программирование запрещено.
Если отключить режим последовательного программирования, то сможет помочь только параллельный программатор. Во многих программах для прошивки данный бит изменить нельзя (чекбокс недоступен).
 CKOPT – бит опций тактового генератора. Его разберем позже, когда доберемся до младшего байта.
 EESAVE - бит защиты данных, хранящихся в EEPROM памяти при стирании микросхемы. Если данный бит не установлен, т.е. EESAVE = 1, то при стирании микросхемы затрутся данные, хранящиеся в EEPROM. 
 BOOTSZ1…0 – биты определяющие объем flash-памяти, отводимой под бутлоадер.
Бутлоадер – это набор команд, даже точнее – это программа, которая болтается в конце flash-памяти МК, способная принимать данные от внешних устройств при наступлении какого-либо события и заносить их во flash-память. Бутлоадер применяется в основном для прошивки МК без использования спецпрограмматора.
 BOOTRST – бит, определяющий с какого места начнется загрузка контроллера после сброса.
 BOOTRST = 1 – загрузка начнется с нулевого адреса
 BOOTRST = 0 – загрузка начнется с адреса начала области flash-памяти, выделенной под бутлоадер.
   Вот и добрались до младшего байта.

младший байт

 BODLEVEL и BODEN – биты, управляющие схемой мониторинга напряжения питания контроллера (Vcc). Если напряжение опуститься ниже установленного битом BODLEVEL, то МК сброситься и будет держаться в режиме сброса, пока напряжение не превысит установленный порог.

 BODLEVEL = 1 – пороговое напряжение равно 2,7В.
 BODLEVEL = 0 – Пороговое напряжение равно 4В.
 BODEN = 1 – схема мониторинга неактивна.
 BODEN = 0 – схема мониторинга напряжения питания активна.
 SUT1…0 – биты, определяющие время запуска микроконтроллера (см. режимы работы тактового генератора). После подачи на МК питания, выхода его из режима энергосбережения или после сброса, МК начинает работать не сразу, а по истечении определенного времени. Как раз это время и задают данные биты. Если время старта не важно, то ставим максимум SUT1…0 = 11. Все операции, выполняемые контроллерам, производятся по импульсам, приходящим от тактового генератора. Тактовый генератор может быть встроенным в МК, либо быть внешним.

   Внутренний генератор может работать в нескольких режимах:

- с внутренней задающей RC-цепочкой;
- с внешней задающей RC-цепочкой;
- с внешним задающим кварцевым или керамическим резонатором.
   При работе контроллера от внешнего тактового генератора на его вход XTAL1 подаются прямоугольные импульсы от какого-либо внешнего генератора:
Все эти режимы работы задаются битами CKSEL3…0.

Внутренний генератор с внутренней задающей RC-цепочкой

Внутренний генератор с внутренней задающей RC-цепочкой

   Все МК типа ATMega8 поставляются с завода со значением битов CKSEL3…0=0001, т.е. настроены на работу с тактовой частотой 1 МГц от внутреннего генератора с внутренней задающей RC-цепочкой. Время старта в данном режиме работы определяется по таблице:

Время старта

   Внутренний генератор с внешней задающей RC-цепочкой

Внутренний генератор с внешней задающей RC-цепочкой

   Согласно даташиту емкость конденсатора должна быть не менее 22 пФ. При условии, что CKOPT=0 между выводом XTAL1 и GND подключается внутренний конденсатор емкостью 36 пФ и внешний конденсатор можно исключить. Частота задающей RC-цепочки определяется соотношением f=1/(3RC). В соответствии с выбором RC-цепочки биты CKSEL3…0 устанавливаются в соответствии с таблицей:

Частота задающей RC-цепочки

   Время старта в данном режиме определяется по таблице:

Время старта в данном режиме

   Внутренний генератор с внешним резонатором

Внутренний генератор с внешним резонатором

   Частота тактового генератора будет определяться частотой кварца. При выбранной частоте кварца биты CKSEL3…1 выбираем из таблицы:

При выбранной частоте кварца биты CKSEL3…1 выбираем из таблицы

   Комбинация CKSEL3…1 = 101 должна использоваться только с керамическим резонатором (см. примечание под таблицей). Время старта выбирается из таблицы:

Время старта выбирается из таблицы

   При работе тактового генератора с внешним резонатором значение бита CKOPT определяет режим работы усилителя тактового генератора для раскачки резонатора. При CKOPT = 0 амплитуда колебаний максимальна, что дает устойчивость к помехам и возможность работать на всем диапазоне частот. При CKOPT = 1 амплитуда колебаний меньше (генератор работает в экономном режиме) и возможны сбои при работе контроллера из-за различных помех. Так что если нет жестких требований к энергосбережению устройства, то CKOPT = 0. Кроме работы с высокочастотными резонаторами, контроллер способен работать также на частотах так называемых часовых кварцев (32768 Гц). Для этого значение CKSEL3…0 = 1001. При CKOPT = 0 между XTAL1 и GND, и XTAL2 и GND подключаются внутренние конденсаторы, а внешние конденсаторы в данном случае можно исключить. Время старта определяется из таблицы:

контроллер способен работать также на частотах часовых кварцев

   Внешний тактовый генератор

Внешний тактовый генератор микроконтроллера - схема

   Для выбора данного режима устанавливаем CKSEL3…0 = 0000. Установка CKOPT = 0 позволяет подключить между XTAL1 и GND, и XTAL2 и GND внутренние конденсаторы 36 пФ (зачем?). Время старта опять же определяется из таблицы:

время старта, fuse-биты

   Кроме младшего и старшего fuse-байтов в окне прошивальщика можно увидеть Lock Bit Byte – так называемый байт защиты. С помощью изменения значения битов данного байта можно запрещать и разрешать доступ к памяти программ (flash-памяти), EEPROM и области бутлоадера. Можно сказать, что биты этого байта предназначены для защиты того, что есть в контроллере. В основном это надо разработчику, чтобы защитить свой интеллектуальный труд от кражи и обычному пользователю эти биты особо неинтеесны.

   Немного о прошивающем софте


   Немало косяков с залочкой контроллеров возникает из-за прошивающего софта. В каких-то программах галка в чекбоксе означает 0, а в каких-то 1. Перечислять значения галки в каждой программе бесполезно, так как этих программ навалом. Поэтому дам совет, как определить who is who. Берем МК и подключаем его к последовательному программатору, заходим в режим программирования fuse-битов и считываем все байты. Смотрим значение бита SPIEN. Т.к. последовательное программирование разрешено, то SPIEN = 0. А теперь смотрим что стоит в чекбоксе напротив данного бита. Если стоит галка, то в данной программе это означает 0, если чекбокс пуст, то галка в данной программе означает 1. При прошивке всегда шейте первым делом прошивку, а fuse-биты в самую последнюю очередь, т.к. fuse-биты могут быть настроены не от работы тактового генератора с внутренней RC-цепочкой или вообще в данной схеме пин RESET используется как обычный порт. Перед прошивкой fuse-битов всегда делайте их считывание, т.к. при выставлении только нужных битов остальные зашьются как есть на экране. Автор статьи: skateman.

Не забудьте поделиться с друзьями


Это тоже полезно посмотреть:


РЕМОНТ DVD ПЛЕЕРА ELENBERG

     Обмен опытом: как восстановить работоспособность блока механики старого плеера ДВД-дисков.


РАДОНОВАЯ ЛОВУШКА

     Принципиальная схема и конструкция простой самодельной ловушки для радона - приставки к дозиметру.


РЕМОНТ ПЛАНШЕТА AINOL

     Ремонт планшета Ainol Novo 10 hero quad core, который перестал включаться из-за полностью севшей аккумуляторной батареи.


ОБЗОР И РЕМОНТ БАТАРЕЕЧНОЙ ЭЛЕКТРОБРИТВЫ

     Техническое обслуживание и обзор электрической бритвы Микма-125.


РЕМОНТ ЭЛЕКТРОННОГО ТЕРМОМЕТРА

     Восстановление работы китайского электронного термометра с LCD индикатором.


МИКРО НАУШНИКИ




Популярные схемы
ВОЗМОЖНЫЕ НЕИСПРАВНОСТИ...

ВОЗМОЖНЫЕ НЕИСПРАВНОСТИ КОМПЬЮТЕРА     Краткое описание основных узлов и неисправностей комплектующих компьютера.

УНИВЕРСАЛЬНЫЙ КОНВЕРТЕР...

     В этом проекте приводится схема конвертера usb, который обеспечивает сразу три выхода - RS-232, RS-485 и UART.


ПРОГРАММАТОР ПОНИ ПРОГ

     Программатор Pony Prog - схема, описание и фотографии готового устройства, для прошивки микроконтроллеров.


ЧИСТКА БЛОКА ПИТАНИЯ КО...

     Как самому почистить блок питания АТХ персонального компьютера от пыли.


РЕМОНТ ЦИФРОВОВГО МУЛЬТ...

     Восставновление работоспособности универсального мультиметра DT9208.

КИТАЙСКАЯ АВТОМОБИЛЬНАЯ...

     Обзор китайской автомагнитолы с USB - Artech CU-377. Разборка и испытания устройства.

РАДИОМИКРОФОН ДЛЯ ВИДЕО...

     Ремонт и описание ФМ радиомикрофона, подключаемого к видеокамере.

САМОСТОЯТЕЛЬНЫЙ РЕМОНТ ...

     Статья рассказывает о характерных неисправностях Вашего ноутбука и способах их устранения. Также она повествует об основных правилах пользования ноутбуком, соблюдение которых поможет Вам увеличить его срок службы.