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

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

  • Другого нет контроллера подкинуть?

  • проверяйте схему еще раз, чудес не бывает, конденсаторы ставьте керамику

  • Все, уф, разобрался. С такой конфигурацией фьюзов на атмеге 128 нужен был внешний RC. Собрал, рассчитал, перепрошил. Виноват был калькулятор фьюзо — зря я ему поверил. Надо курить даташиты. Сори за беспокойство))

  • Кто подскажет, как и где найти специалиста по переводу прошивки с Атмега88 в ATxmega16A4U ?

  • можете на electronix поспрашать, там большой форум

  • Спасибо.

  • здравствуйте. ув админ у меня программа AVRDUDEPROG. я сделал так, как «Для внешнего кварца на 8МГц». убил 2 мега32, 1 мега16 и 4 мега8 :sad: вопрос: почему они сдохли? заранее спасибо!

  • да там есть лажа. дело в том, что в CAVR фьюзы инверсные, т.е. 0 = галка стоит = это прошито, т.е. 000 на самом деле = 111, т.е. по факту вы прошили скорее всего на внешний генератор. в общем то это не проблема, подключите генератор вместо кварца, восстановите фьюзы.

  • спасибо за внимание. а что за генератор? я просто новичек. и какую прогу советуете, avrdude или khazama?

  • у вас скорее всего USBASP, я уже писал, что у меня нет этого программатора, поэтому не могу проверить как шьет avrdude или khazama, я шью AVRISP из под avr studio.

  • Здравствуй админ, проблемка у меня, хотел atmega16 переключить на внешний кварц на 16 мегагерц, в даташите почему-то указано только о CKSEL3..1 = 111, а по поводу CKSEL0 ничего не сказано, я его и не включили, также включил CKOPT, по итогу чип стоит…((
    Когда дошло до того что уже не знал что ему делать начал заниматься фигнёй и штрыкал в кварц коротя его ножки и чип начал делать такты…
    Подскажите, можно ли исправить ситуацию? Может его как-то тактировать другим чипом?..
    Ну и как быть с CKSEL0?

  • Если прошить RSTDISBL без галочки — как показано, то получите труп. Зачем такое выкладывать и учить других «убивать» контроллеры?!

  • Ярослав, если чип не прочитать то надо смотреть на что вы его настроили. Да беда CAVR в том что он инверсно показывает фьюзы, уже об этом писали много раз.
    Олег, мне уже конечно трудно вспомнить потому что давно с атмегами не ковыряюсь, но на картинке показано что галка RSTDISBL = 0 не установлена, т.е. фьюз не прошит, так что все ок.

  • Ну я установил CKSEL3..0 = 1110, просто в даташите про CKSEL0 ничего не сказано там где описуют источником тактирования внешний кварц, я этот бит не включил…((
    Прошиваю с помощью ProgISP.
    Скажите что с этим битом нужно было делать?
    В меня то ещё один чип остался, не хочу и его запороть…

  • Что то вы меня обманываете если смотреть на даташит, то все хорошо расписано что и откуда

    Если все как вы говорите, то сейчас настроено на внешний кварц 3-8МГц. CKSEL0 и SUT1:0 влияют только на время включения контроллера и ни на что больше. В итоге камень стоять может по двум причинам: либо кварц не подцеплен физически — т.е. косяк в схеме, либо прошиты фьюзы isp prog или rst disable. Ну и нельзя исключать момент, что спалили камень. Даже если предположить что вы фьюзы инверсно прошили, то это все равно бы не повлияло, достучаться программатором все равно можно было бы. Проверь 10 раз правильно ли подаются питания и подключен ли кварц, правильные ли кондеры 22пФ.

  • Вы конечео извините за то что с такими мелочами заморачую.
    Сделал внешнее тактирования, запустил чип. Изменяя фюзы чип работал только от внутренего генератора, пробовал другой чип, все так же…((
    Конденсаторы по 22пф, все прозванивается…
    Где искать уже и не знаю…

  • Ярослав, чудес не бывает :) я не знаю чем вам помочь, потому что надо смотреть на железяку и что вы делаете. Был случай, когда один товарищ полоскал месяц мозг. В итоге поставил другие кондеры и заработало.

  • можете материть меня, это заслуженно!
    Я еще не видел ваш коммент и тоже заменил конденсаторы, которые кстати были новыми, и все получилось…
    Извините и спасибо за терпение!
    Думаю подобных проблем уже у меня не возникнет…

  • Ляпа какая-то получается.
    Несоответствие описания в тексте рисункам внизу…

  • Никакой ляпы, читайте внимательнее

  • Ну как же нет?
    Вот Вы пишите:
    «Или хотим работать от внутреннего генератора на 8МГц, видим диапазон значений для CKSEL, крутим вниз даташит и видим подробное описание… смело заносим в CKEL0-3=0010 и радуемся супер скорости.»
    На рисунке внизу у Вас три галки стоят, а одна сброшена. Вопросов нет.
    Однако чуть выше у Вас есть такой текст:
    «Например, хотим работать от внешнего кварца на 8МГц, выставляем смело CKSEL0-3 в 0000.»
    Чисто по аналогии с первым примером у Вас должно стоять 4 галки (ибо ноль — галка стоит, судя по первому примеру).
    У Вас же все сброшены. И они правильно сброшены.
    Так в чём дело?
    А в том, что фраза должна быть такой:
    «Например, хотим работать от внешнего кварца на 8МГц, выставляем смело CKSEL0-3 в 1111.»

  • Я понял в чем вопрос. Есть три понятия, которые перемешались, 1. это даташит. В нем когда фьюз прошит = 1, если не прошит = 0, 2. Окно прошивальщика CAVR в нем галочка может стоять может не стоять. 3. Собственно значения этих галочек, если галка установлена, то фьюз прошит и он = 0, если не стоит значит фьюз = 1. Поправил в тексте если так понятнее.

  • админ у меня вопрос .Я уже не один день бьюсь над одной проблемой.У меня есть программа прошитая в мега16.Она работает хорошо.В симуляторе и в реальности.Но без нагрузки.У меня коммутирует нагрузку реле.А нагрузкой является пускатель.Кстати я и на лампочке проверял.контроллер работает с перебоем.Неправильно работает.Что делать? Не знаю.В чём может быть проблема?Поставил Свадебную цепочку пролема не решилась.Стало лучше устройство работать.Но всё равно с перебоями.

  • Подскажите какие варианты ещё есть.Без нагрузки работает стабильно.Такое ощущение что идут какие то помехи.

  • Тут вариантов миллион, начните с проверки правильности сборки и питания.

  • я отчасти добился результата.На выходе поставил MOC3063 и симистор.но есть маленький недостаток если на всей схеме длительное время нет питания то при появления питания симистор (8часов) открывается.При реле такого не было.Буду далше думать.Но зато схема работает стабильно.Без перебоев.

  • А симистор открывается на 0.5 сек.

  • Потом закрывается.

  • Я понял учител.Я проексперементировал с включаной вилкой и выключенным автоматом .Включаю автомат.Пускатель молчит.Не срабатывает.Спаибо учител.

  • Мне сложно уследить за вашей мыслью :) но раз работает значит норм

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

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

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