fuseВопрос, который давно требует пояснений — что же такое fuse bit (далее фьюзы) и как их использовать. Для простоты понимания, назовем их настройкой для микроконтроллера, которую можно изменить только при прошивке.

Удобны тем, что достаточно один раз указать конфигурацию фьюзов и независимо от этого изменять прошивку сколько угодно раз — фьюзы останутся те же. Нужно сказать о том, что для некоторых микроконтроллеров существуют специфичные фьюзы, здесь рассматривается пример для Atmega8.

f1

CKSEL0-3 — отвечают за выбор источника тактирования микроконтроллера. В даташите есть таблица из нее прикинуть конфигурацию битов. f2

Например, хотим работать от внешнего кварца на 8МГц, для CAVR смело убираем галочки CKSEL0-3 (т.е их значения будут 1111). Схема для подключения кварца. Конденсаторы 12-22 пФ.

f4

Или хотим работать от внутреннего генератора на 8МГц, видим диапазон значений для CKSEL, крутим вниз даташит и видим подробное описание:

f3

Т.е. в нашем случае подойдет последний вариант, смело заносим в CKEL0-3=0010 и радуемся супер скорости.

Если вы случайно установили тактирование от внешнего источника, а у вас его нет, то — увы микроконтроллер становится не доступным для чтения и программирования. Но расстраиваться не стоит, стоит подцепить внешний кварц и atmega снова оживет.

CKOPT — используется только совместно с битами CKSEL, позволяет включить «режим усиления». Микроконтроллер в таком режиме имеет повышенное энергопотребление, однако более помехозащищен. Установка данного бита позволяет работать на частотах выше 8МГц, если сам микроконтроллер поддерживает такие частоты.

SUT0-SUT1 — эти биты отвечают за задержку, перед началом работы микроконтроллера. Насколько я понял из даташита, рекомендации в отношении этих битов касаются в основном питания и в том числе бита BODEN

BODEN — при установке бита, микроконтроллер контролирует напряжение питания. При снижении напряжения ниже определенного уровня, микроконтроллер сбрасывается.

BODLEVEL — определяет тот самый уровень напряжения, если фьюз установлен, то нижний предел питания 4В, если не установлен 2,6В.

BOOTRST — позволяет начать выполнение программы не с начала, а с определенной области BOOTLOADER.

BOOTSZ0-BOOTSZ1 — также относятся к бутлоадеру, определяют размер памяти отведенный загрузчика.

EESAVE — если бит установлен, то во время выполнения команды Erase Chip, EEProm память не будет стерта.

WDTON — позволяет использовать сторожевой таймер.

RSTDISBL — отвечает за назначение вывода reset. Если он установлен, то ножка  reset становится обычным портом ввода-вывода. В следствие чего становится не возможным использовать ее при последовательном программировании, т.е. микроконтроллер не возможно прошить без специального программатора.

Обратите внимание, в некоторых программах есть коварный бит — запрет последовательного программирования, после установки этого бита микроконтроллер не возможно прошить без специального программатора.

Настоятельно рекомендую перед изменением фьюзов, прочитать уже установленные фьзы: Tools-Chip Programmer-Read-Fuse Bit, так меньше шанс ошибиться.

Для внешнего кварца на 8МГц
fuses 8mhz

Для внешнего кварца 8-16МГц
16mhz

Для внутреннего на 8МГц
8internal

76 комментариев: Fuse bit в AVR микроконтроллерах

  • Можете подсказать, как сконфигурировать fuse для того что бы моя atmega 8 работала от внешнего кварца на 8mgh

  • External clock cksel 1111. Для CodeVision все наоборот, т.е. напротив этих фьюзов не нужно ставить галки.

  • извините за тупость 😳 но против каких же надо ставить галочки))

  • я имею ввиду в code vision

  • В прошивалке есть кнопка прочитать фьюзы Read Fuse. Читаете, копируете, галочки сами встанут. Убираете напротив CKSEL0-CKSEL3 и СКОРТ

  • Если я правильно понимаю, в CVAVR если галка напротив фьюза не стоит, то этот фьюз выставлен в «1»???? Так? То есть в вашем скриншоте для работы меги от внешнего кварца на 8 МГц фьюз «RSTDISBL» выставлен в «1», то есть после прошивки пин RESET станет обычным вводом/выводом порта и мегу нельзя будет перепрошить?

  • Фьюз считается прошитым когда он = 0

  • Почему внешний кварц это 0000?!! 0000 — это же внешние часы, кристалл это External Crystal. Или я что-то не понимаю?

  • Посмотрите комментарии выше

  • Спасибо за статью!!! Только здесь смог разобраться с fuse 🙂

  • а если подключать внешний кварц порты как вход настраивать?

  • Столкнулся с проблемой. При установке фьюзов для работы от внешнего кварца (самая верхняя картинка из 3-х), программатор пишет ошибку, контроллер становится более недоступен для внутрисхемного программирования, (испортил 5 шт.). Внутри — схемно от TL866A после сбоя также не программируется. При установке фьюзов любой комбинации для работы от внутреннего генератора, проблем нет. Если испорченную микросхему извлечь и вставить в программатор (в панель) TL866A, то перепрограммированию поддается, в схеме работает. Подскажите пожалуйста что я намудрил? Или что может быть? Использую CodeVisionAVR v3.12 драйвера от Avr Studio 4, программатор AVRISP MkII USB.

  • значит кварц не подключен

  • Огромное Спасибо!!!!!!! У вас наверно опыт огромный!!!! Дорожка в плате порвалась, сначала прозвонил, потом через лупу увидел.

  • Начал разбираться в фьюзах, но т.к.шил через пр.Громова то соответственно инверсно выставил фьюзы частоты — cksell3..0=1101
    Какой кварцевый резонатор и конденсатор мне подключить,чтобы разблокировать мк?

  • берите любой кварц 8-12МГц и кондеры на 18-22пФ

  • Уважаемый Админ! Хочу поделиться полезной информацией.
    ATMega64a и ATMega128a имеют другие пины для подключения программатора!
    надо одновременно подключать:
    MOSI — PE0 (RXD0/PDI) и PB2 (MOSI)
    MISO — PE1 (TXD0/PDO) и PB3(MISO)
    остальные – как положено:
    SCK — PB1 (SCK)
    RESET – к выводу (RESET)
    и обязательно нужно внешнее тактирование! Сигнал нужно подать на 24 вывод (XTAL1), иначе программатор не будет видеть чип! Изначально фьюзы настроены на тактирование от кварцевого резонатора!
    Надеюсь, что кому-то это поможет, так как я по незнанию убил целый день на то, чтобы обнаружить «неисправность» и перепаял четыре чипа ATmega64a…

  • У важаемый Админ скажите RSTDISBL на аттини 13 тоже отвечяет за ножку ресет . ? дело в том что я устанавливаю его но не пишется в мк. после а снова могу его програмировать ,а мне надо что он не прерпрошивался

  • Должно быть также как в других камнях, 1 — не запрограммирован, 0 — запрограммирован.

  • Прошу прощения, тут немного запутался. Написано: Например, хотим работать от внешнего кварца на 8МГц, выставляем смело CKSEL0-3 в 0000, а в комментариях 1111 с таким кварцем, объясните пожалуйста, где истина? Нужно запрограммировать Atmega328 с внешним кварцем на 8 МГц

  • в CAVR инверсные фьюзы, шейте через студию и будет вам счастье

  • Здравствуйте. Прочитал, но не очень понял. У меня CVAVR, Atmega88 работала с кварцем 7,3728. Fuse были следующие: CKSEL3- галочка, CKSEL2, CKSEL1 и CKSEL0- без галочки. Какие изменения сделать, что- бы Atmega88 работала от внутреннего генератора? Помогите, пожалуйста.

  • посмотрите на последней фотке

  • У меня 18 окошек, где можно ставить/убирать галочки. Самые нижние не изменять? BOOTRST= нет галочки
    BOOTSZO= есть галочка
    BOOTSZ1= есть галочка

  • прочитайте из мк текущие биты и поменяйте только cksel

  • Прошу прощения, но в МК Atmega88 4 cksel .

  • можете набрать в гугле «avr fuse calculator», заходите по первой ссылке и можете выставить галками нужные фьюзы

  • Программирование, фьюзы для меня что-то заоблачное, это не мое. В электронике кое- что понимаю. Работает устройство на Атмега88 с внешним кварцем, появилась необходимость освободить еще 2 вывода, программист изменил прошивку для 2 дополнительных выводов PB6 и PB7, не знаю почему, но не хочет разбираться с фьюзами, так как он живет в другой стране и у него «крутой» программатор, а у меня «5 проводков» и CodeVisionAVR V2.03.4.

  • Что то вы меня обманываете, у меги8 и 88 одинаковые фьюзы. Не ленитесь, уже даже скрин выложен, скопируйте.

  • Я не обманываю. Вот что написал программист: «это же ваш программатор, дл чего мне вникать в работу чужого железа?» Может я последовательность не соблюдаю. Уже 3 Атмеги зависли, хотя с внешним кварцем Атмегу88 прошивал многократно. Сейчас прошита и фьюзы стоят для внешнего кварца, устройство работает. Что- бы изменить фьюзы какая необходима последовательность? Ведь мне надо и прошивку изменить.

  • Ну и программиста можно понять, вы же выбирали чем шить, значит и проблема ваша. Последовательности и таинств никаких нет, единственная проблема это частоты, если у вас было 7,3МГц а сейчас вы перешиваете на 8МГц. Если были какие то участки кода в програме, которые были завязаны именно на 7.3МГц, например uart, то очевидно что он работать не будет.

  • Да, действительно, первоначально работал с кварцем 8мгц, но была необходимость работать по USB со скоростью 115200 и применили кварц 7,3. Спасибо и извините за беспокойство.

  • Программист написал, что с UART ни как не связано. На Вашем нижнем фото не совсем такая картинка как у меня. Как- же мне узнать какие фьюзы необходимо установить? 4-Атмега зависла или хотя- бы как вернуться к тем фьюзам, которые работали?

  • такое впечатление что вы не прошиваетесь и остаетесь на внешнем кварце, поэтому и не работает. подрубите внешний кварц, проверьте заведется ли с ним

  • Начну с начала: рабочее устройство с фьюзами на 7.3728, кварц и конденсаторы соответсвенно установлены. Читаю фьюзы и сразу делаю изменения(устанавливаю соответствующие фьюзы) для внутреннего генератора, программирую фьюзы и устройство зависает. После этого CodeVisionAVR V2.03.4. уже не видит Атмегу88. Задача простая, готов оплатить завершение проекта, но не знаю где найти специалиста.

  • может потому что кварц установлен, поэтому и зависает. выпаяйте его

  • До начала любой прошивки? Т.е. чистую, новую микросхему впаять, кварц не впаивать и установить фьюзы и затем прошивать?

  • Прикрепить скриншот здесь возможно?

  • возможно, заливайте на файлообменник, сюда ссылку.

  • Подскажите плиз, переделываю проект на атмеге 128 с внутреннего резонатора на внешний кварц 1 МГц, кварц на плату добавил к пинам XTAL вместе с конденсаторами, прошил фьюзами CKSEL3 0 остальные в 1 — не выставлены. Чип перестал отвечать — картина такая, будто нет тактирования. Но оно есть! Ошибок в монтаже нет, всю плату носом испахал. Метод пальца не сработал, генератора пока под рукой нет. Не подскажете, вкаком направлении рыть?

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Последние комментарии
  • Загрузка...
Счетчик
Яндекс.Метрика