Главная » Начинающим
Призовой фонд
на октябрь 2020 г.
1. 1500 руб
Сайт Паяльник
2. Тестер компонентов MG328
Сайт Паяльник
3. 150 руб.
От пользователей


Цифровой мультиметр-амперметр, 200В 10А

Фьюзы микроконтроллеров AVR – как и с чем их едят

Что же такое FUSE биты? Слова вроде бы знакомые, но многие толком и не знают их предназначение, ставят галочки и прошивают, работает устройство да и ладно. Я вам хочу рассказать немного про эти FUSE биты.

FUSE биты (фьюзы) – ну если по простому, то они настраивают определенные параметры микроконтроллеров, это некий инструмент для их тонкой настройки Фьюзы включают или настраивают такие параметры как:
-  частота генератора, внешний или внутренний генератор
-  запрет на чтение прошивки микроконтроллера
-  включение или выключение таймеров
-  деление частоты кварцевого генератора
-  защита EEPROOM от стирания
…и так далее. У каждого микроконтроллера выставляются свои фьюзы, у разных микроконтроллеров разный список фьюзов, например в ATmega8 нет фьюза CKOUT, но он присутствует в ATtiny2313. В даташитах к микроконтроллерам все эти фьюзы расписаны.

Главное правило при работе с фьюзами – не торопиться их выставлять, если вы точно не уверены в правильности своих действий.

Теперь распишем названия некоторых фьюзов, их обозначения и то, на что они влияют. Вообще, есть фьюзы для защиты программы от копирования (лок-биты), фьюзы, устанавливающие определенные функции, а так же так называемые "старшие" и "младшие" байты. Самый популярный фьюз, который выставляется практически всегда, это:

CKSEL, таких фьюзов с разными буквами всего четыре, это группа CKSEL0, CKSEL1, CKSEL 2 и CKSEL3, определяют частоту тактового генератора, и его тип, тактовые импульсы  необходимы для работы практически любого микроконтроллера. Во многих микроконтроллерах есть внутренний генератор, но мы можем подключить внешний и фьюзы выставить для работы от внешнего генератора. Внешний кварцевый резонатор подключается на выводы XTAL1 и XTAL2, кроме того припаивается пара конденсаторов  ~20пф одним концом на кварц, другим на минус. Если допустить ошибку при установке этих фьюзов, то микроконтроллер может "заблокироваться" для того чтобы восстановить контроллер, подают тактовый сигнал на ногу XTAL1, на данный момент придумано не мало схем для восстановления контроллеров, залоченных таким образом. Этот генератор можно сделать практически из любой логики или даже из таймера 555.

Схема генератора

 Есть простые схемы, с использованием 1 транзистора, пары резисторов и кварцевого резонатора, и более сложные, на микросхемах типа  К155ЛА3. Данные способы 100% оживляют контроллеры с таким дефектом

Группа фьюзов SUT1 и SUT0 — fuse биты, управляющие режимом запуска тактовых генераторов МК, а так же  задают скорость старта МК после подачи питания. Связаны с фьюзами CKSEL, а именно CKSEL0.

CKOPT - бит, определяет работу встроенного генератора для работы с кварцевыми резонаторами, устанавливает "амплитуду" колебаний тактового сигнала на кварце. Данный бит программируется достаточно часто.

RSTDISBL – очень опасный фьюз, ошибочная установка может отключить вывод RESET, после чего пропадет возможность программирования ISP программатором. Бит RSTDISBL превращает вывод RESET в порт ввода-вывода.

SPIEN – фьюз, который разрешает работу МК по интерфейсу SPI. Все микроконтроллеры выпускаются с уже установленным битом SPIEN. Считается опасным фьюзом.

EESAVE -  Удобно читать как EEPROOM SAVE, дословно означает "сохранить EEPROOM", данный фьюз защищает EEPROM от стирания. Например когда в очередной раз заливаете прошивку в контроллер, можно поставить EESAVE = 0, и при стирании МК EEPROOM останется не тронутым.

BOOTSZ, состоит из группы битов BOOTSZ1 и BOOTSZ0, определяют размер области памяти записываемых программ, связан с битом BOOTRST.

BOOTRST, определяет адрес, с которого и будет начато исполнение программы. Если бит установлен т.е. если BOOTRST = 0, то начало программы будет с адреса области загрузчика (Boot Loader).

BODEN - бит, который при выставлении (BODEN=0), будет контролировать за питающим напряжением, на предельно низких напряжениях микроконтроллер может перезапускаться, глючить и так далее. Связан с BODLEVEL.

BODLEVEL. - определяет момент срабатывания детектора уровня питающего напряжения, при снижении напряжения питания ниже уровня, произойдет "перезагрузка" контроллера.

SELFPRGEN - бит, который разрешает (SELFPRGEN=0) или запрещает (SELFPRGEN =1) программе производить запись в память.

OCDEN – данный фьюз разрешает или запрещает чтение программы из памяти контроллера.

Я как то упоминал в своих статьях про то, что в некоторых программах фьюзы выставляются зеркально. Запомните, запрограммированный фьюз=0, а не запрограммированный=1. В программах Algorithm Builder, UniProf фьюзы выставляются одним образом, а в программах PonyProg, CodeVisionAVR, AVR Studio, SinaProg и некоторых других, фьюзы нужно выставлять зеркально по сравнению с предыдущим списком программ.

Уже давно на просторах Интернета появились так называемые "калькуляторы фьюзов", это специальные приложения, призванные помочь в конфигурировании микроконтроллера. Приложение интуитивно понятное, думаю разберетесь, в списке контроллеров выбираем нужный нам МК, далее выбираем необходимые функции, а ниже выставляются галочки фьюзов, все очень просто.

beginner92-2.png

Данные приложения очень удобны, т.к. например в последнее время очень часто авторы своих проектов значения фьюзов пишут непонятными буквами или цифрами, или же словами, новичку не понятно, что это значит и какие фьюзы при этом нужно выставлять, (часто можно встретить комментарий к статье "а какие фьюзы выставлять?"). Калькулятор фьюзов нам в этом плане очень сильно помогает.

beginner92-3.png

Думаю что теперь, если у вас спросят "что такое фьюзы, и зачем они нужны?", вы сможете объяснить человеку их назначение, а пока, на этом все!

Теги:

Романов. А.С. Опубликована: 2012 г. 0 2
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 1 чел.

Комментарии (9) | Я собрал (0) | Подписаться

-3
Андрей #
А почему у меня не запускается от кварца 7 МГц? Я поставил фъюзы внешняя RC цепь 3-8 МГц.
Ответить
+4
BARS_ #
Потому что внешняя RC цепь и кварц совершенно разные вещи
Ответить
0
Ggiol #
В калькуляторе по указанной вами ссылке кажется ошибочки есть. На ATtiny 2313 при установке галочки перед BODLEVEL0 включается Reset Disable. Это кому-то может сильно навредить.
Там кажется весь столбец старшего байта запутанный. По крайней мере не сходятся с настройками конфигурации RSTDISBL, DWEN, EESAVE и BODLEVEL0
Ответить
0
BARS_ #
Да, ошибки есть. Просто я всегда беру фьюзы в HEX формате и на те не обращал внимания.
Ответить
0
Семен #
Что-то не так со скриптами на странице, у вас там 2 скрытых поля as_sfid и as_fid, если их параметры тоже передаются, то после выбора МК, селект сбрасывается и ничего не выбрано, если же эти поля убрать и сделать выбор, то работает
Ответить
0
Александр #
В моём докторе, постоянно горит красный светик, а когда вставляю пациента, то мигнёт зелёный и опять загорается красный. Ставлю новый МК - и всё тоже самое.
Ответить
0
Игорь #
Скорее всего у вас новая версия прошивки на старой версии платы: в новой версии добавлен резистор 100 Ом с коллектора транзистора линии +5В на землю
Ответить
0
Вячеслав #
Подскажите, пожалуйста, вот если у меня программатор USB-шный, там есть уже свой тактовый генератор. Я выставляю на Tiny2313 CKSEL как для внутреннего генератора 128кГц. На устройстве, после этого, контроллер работает так как и планировал. Но на программаторе, как только я CKSEL переставил, микроконтроллер не видится. Что посоветуете? Даже с таким программатором собрать такую схемку? Ведь у программатора есть вроде какой-то генератор. Заранее спасибо
Ответить
0
Олег #
Подскажите если на плате стоит кварц на 12 Mgh и я хочу прочитать и записать EEPROM внутренний и Flash на ATMEGA644PA, фьюзы установленные по калькулятору CKSEL0;2:3 запрограммированы, CKSEL1 нет,типа до 8 Mgh, то при этом будут ошибки(чтения или записи, или и того и другого. И то же самое если кварц не стоит.
Кварц который стоит на программаторе AVR ASP тактирует себя (свой контроллер) или и программируемый контроллер.
Если последнее, то какое имеет значение для всей этой истории, есть кварц на плате или нет.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Макетная плата для пайки (10 шт)
Макетная плата для пайки (10 шт)
Лазерный модуль 650нм 5мВт Тестер ESR, полупроводников, резисторов, индуктивностей
вверх