024-Что такое Fuse bits AVR микроконтроллеров.

Автор: | 28.03.2010

титл FuseВ посте про тестовые прошивки, рядом с самой прошивкой для микроконтроллера лежит картинка с названием «Фьюзы для тестовой прошивки ATMega48/88/168». Зачем эта картинка нужна? Что обозначают галочки в чекбоксах?

Fuse bits называют область (4 байта) в AVR микроконтроллерах отвечающую за начальную (глобальную) конфигурацию. Этими битами мы указываем микроконтроллеру, с каким задающим генератором ему работать (внешним|внутренним), делить частоту генератора на коэффициент или не нужно, использовать ножку сброса как сброс или как дополнительный порт ввода-вывода, количество памяти для загрузчика и другое. У каждого контроллера свой набор фьюзов.

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

Например:
SPIEN
— разрешить использование SPI — интефейса. Должно быть без галочки иначе станет невозможным последовательное программирование;
RSTDISBL
— запретить использование сброса. Ножка сброса станет еще одним портом ввода-вывода. Должно быть с галочкой, иначе станет невозможным последовательное программирование.
DWEN
— разрешить использование debugWIRE. Ножка сброса используется как канал для отладки. Должно быть с галочкой, иначе станет невозможным последовательное программирование.

Важно!Возможно, Вы прошиваете микроконтроллер программой у которой эти галочки ставятся инверсно, не как в даташите. Если это так, то гдето рядом с галочками есть сноска об этом сообщающая.
Если Вы неуверены как в программе ставятся фьюзы, просто прочитайте фьюзы с контроллера и посмотрите как установлены SPIEN, RSTDISBL.

Нужно помнить, что у фьюзов несколько необычна функциональность – установленная галочка в чекбоксе напротив функции означает, что эта функция не задействована.

Почему так? Объясню. Сейчас конфигурационные байты записываются во флеш памяти и поменять их можно сколько угодно раз. Раньше, в суровые времена, когда флеш памяти еще не было, для конфигурации какого-либо чипа в его архитектуре имелись специальные перемычки (fuse) которые разово физически сжигались. Вот поэтому, по старинке, если перемычка цела-«1» значит эта функция не задействована и наоборот – перемычку спалили-«0» значит функция задействована.

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

P.S. У меня скопилось несколько микроконтроллеров с неработающим последовательным программированием (неправильно прошиты фьюзы), поэтому, в скором времени, займусь сборкой несложного паралельного программатора. Получиться — отпишусь.

(Visited 15 700 times, 1 visits today)

024-Что такое Fuse bits AVR микроконтроллеров.: 26 комментариев

  1. kvk

    Скиньте пожалуйста ссылочку на этого «доктора» .

  2. GetChiper Автор записи

    Привет!
    Параллельный программатор так и не пригодился. По факту хватает доктора в случае каких то проблем.

  3. kvk

    Добрый день siema !!! Да Вы правы , я тоже пробовал ставить фьюзы для подлючения внешнего резонатора 8МГц на аtмега 8A и прошились только в CSEL=1111. Получается , что MK принимает фьюзы из набора External High Freq , на остальных разу блокируется.

  4. kvk

    GetChiper добрый день !!! Прочитал Ваши статьи про фьюзы , спасибо, очень помогло в них неможко разобраться . Хочется у вас спросить про…( …поэтому, в скором времени, займусь сборкой несложного паралельного программатора. Получиться — отпишусь.)
    Скажите пожалуйста, удалось ли собрать такое устройство ?

  5. siema

    Fuse — серьезная вещь. Относя к ним халатно и в итоге потерял несколько месяцев времени, но заказал usb-приставку осциллограф. Думал, с уровнями согласования у меня проблема, но не дождавшись осциллографа решил посмотреть что выдает МК на компьютере и понял, что проблема в другом и начал уже подряд все проверять на железе.
    Внешний кварц на 8Мгц, фьюзы ставил так: CSEL=1101, SUT=11, те Ext.Crystal Freq 3.0-8,0MHz start-up 14CK+65,
    а заработало при таких значениях: CSEL=1111, SUT=11, те Ext.Crystal Freq 8,0 — MHz start-up 14CK+65.
    Скажите, ну где правда и как выбирать fuse, если они подходят под одинаковые (правда, граничные) значения кварцев? В Протеусе работало при обоих установках.

  6. GetChiper Автор записи

    Да, у uniprof фьюзы выставляются инверсно(наоборот) моим картинкам.

  7. n_v_chumack

    Здравствуйте!

    Правильно ли я понял, что если я прошиваю с помощью uniprof, то чтобы выставить фьюз-биты (как в проекте, который я пытаюсь повторить, я совсем-совсем начинающий в этом деле), я должен поснимать соответствующие галочки?
    Ато мне кажется, я залочил один контроллер: он распознавался нормально до тех пор, пока я не залил в него HEX-файл и выставил фьюзы как было показано в примере, после чего программа его не видит и при тыцкании на карсное говорит, что МК не откликнулся 🙂

  8. Karp

    Спасибо. Буду разбираться

  9. GetChiper Автор записи

    Вот здесь есть разные варианты установок фьюбит http://www.getchip.net/posts/068-kak-pravilno-proshit-avr-fyuzy-fuse-bit/
    Еще есть фьюзкалькуляторы (в поисковике выпадет очень много) они прощитают любую конфигурацию фьюзов.
    Лучше в этом разобраться самому, чем страдать от чужих ошибок.

  10. Karp

    Подскажите пожалуйста, как прошить фьюзы в attiny2313, чтобы он тактировался от внешнего кварца на 10 МГц?

  11. GetChiper Автор записи

    Если пустой, то да, можно и так.

  12. Cudi

    Блин пишу вопрос и через час всё понимаю)) .hex фаилы делаю через programm notepad )

  13. Cudi

    Всё проблему решил, только я не знаю как делать .hex фаилы ? распиши пожалуйста гайд 🙂 попроще чтоб было )

  14. GetChiper Автор записи

    Чегото я запутался :). О какой программе сейчас идет речь?

  15. cudi

    Стёр программу, но когда заливаю сного другую программу, то включается старая, я кидаю не .hex фаил, а целый на Bascom AVR, может из за этого? НО я в прошлый раз кидал на .asm

  16. cudi

    Пишет «can’t find programmer» пишет

  17. cudi

    хм, вроде мк нашёл в программе, а когда начал программировать, выкидует из неё ( из программы) ((

  18. cudi

    У меня STK500, через USB порт, он не находит в этой программе меня((
    нажимаю COM3, что то тужится тужится и бац «мк не откликнулся»

  19. cudi

    А как очистить МК, а то на нём не нужная программа (((
    МК Atmega8

  20. GetChiper Автор записи

    Чувствую, назревает обновление статьи по фьюзам. Очень много по ним люди задают вопросы, а фьюзы действительно важная часть микроконтроллера и нужно их использовать правильно. Проблема усугубляется тем, что в разных программах-программаторах они задаются по разному.
    Обновлю статью, добавлю побольше информации.

  21. delphik

    Доброго времени суток…
    До сих пор не могу разобраться с фьюзами.. нельзя ли поподробней описать как их употреблять (или выложить какую нибудь литературу по ним).. На некоторых сайтах выложен Калькулятор фьюзов AVR но очто-то и с ним у меня туговато получается.. Заранее благодарен..

  22. ec

    в пони прог (2.07с по крайней мере) неправильно выставленными фьюзами RSTDISBL, SPIEN МК не убьешь. Они там вообще неактивные. Как их сделать активными — я не нашел :). Ну если уж хочется убить — есть файл автоматизации и шестнадцатиричное слово. Установленная галка на активных фьюзах означает запрограмленный фьюз (0); неустановленная — незапрограмленный (1).
    В CVAVR удобно читать сигнатуру чипа.

  23. alexandershahbazov

    Вроде если намудрили с внутренним генератором , то возможность дальше
    прошивать обеспечивается установкой внешнего кварца .
    В CodeVisionAVR в поле FUSE-ов вообще нет SPIEN или может быть его
    заменили на радиокнопку «Programming disabled» . В любом слусае с поля
    «Program Fuse Bit(s):» его убрали . RSTDISBL есть .
    Кроме того слышал что неправильную установку фьюзов исправляют какие- то определенные программаторы . Какие именно не знаю .
    Историю с конфигурацией фьюзов интересно было узнать .

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