В посте про тестовые прошивки, рядом с самой прошивкой для микроконтроллера лежит картинка с названием «Фьюзы для тестовой прошивки ATMega48/88/168». Зачем эта картинка нужна? Что обозначают галочки в чекбоксах?
Fuse bits называют область (4 байта) в AVR микроконтроллерах отвечающую за начальную (глобальную) конфигурацию. Этими битами мы указываем микроконтроллеру, с каким задающим генератором ему работать (внешним|внутренним), делить частоту генератора на коэффициент или не нужно, использовать ножку сброса как сброс или как дополнительный порт ввода-вывода, количество памяти для загрузчика и другое. У каждого контроллера свой набор фьюзов.
С установкой фьюзов нужно быть предельно внимательным, так как при неправильной установке некоторых из них, Вы рискуете потерять микроконтроллер для дальнейшего программирования через последовательный программатор.
Например:
— разрешить использование SPI — интефейса. Должно быть без галочки иначе станет невозможным последовательное программирование;
— запретить использование сброса. Ножка сброса станет еще одним портом ввода-вывода. Должно быть с галочкой, иначе станет невозможным последовательное программирование.
— разрешить использование debugWIRE. Ножка сброса используется как канал для отладки. Должно быть с галочкой, иначе станет невозможным последовательное программирование.Возможно, Вы прошиваете микроконтроллер программой у которой эти галочки ставятся инверсно, не как в даташите. Если это так, то гдето рядом с галочками есть сноска об этом сообщающая.
Если Вы неуверены как в программе ставятся фьюзы, просто прочитайте фьюзы с контроллера и посмотрите как установлены SPIEN, RSTDISBL.
Нужно помнить, что у фьюзов несколько необычна функциональность – установленная галочка в чекбоксе напротив функции означает, что эта функция не задействована.
Почему так? Объясню. Сейчас конфигурационные байты записываются во флеш памяти и поменять их можно сколько угодно раз. Раньше, в суровые времена, когда флеш памяти еще не было, для конфигурации какого-либо чипа в его архитектуре имелись специальные перемычки (fuse) которые разово физически сжигались. Вот поэтому, по старинке, если перемычка цела-«1» значит эта функция не задействована и наоборот – перемычку спалили-«0» значит функция задействована.
По большому счету, разбираться, с тем, что там значат эти галочки, Вам не нужно. Необходимо лишь внимательно установить/убрать нужные галочки в программе программирующей контроллер. И еще — лучше фьюзы прошивать после прошивки программы.
P.S. У меня скопилось несколько микроконтроллеров с неработающим последовательным программированием (неправильно прошиты фьюзы), поэтому, в скором времени, займусь сборкой несложного паралельного программатора. Получиться — отпишусь.
http://www.getchip.net/posts/059-ispravlyaem-avr-fyuzy-pri-pomoshhi-atmega-fusebit-doctor/
Скиньте пожалуйста ссылочку на этого «доктора» .
Привет!
Параллельный программатор так и не пригодился. По факту хватает доктора в случае каких то проблем.
Добрый день siema !!! Да Вы правы , я тоже пробовал ставить фьюзы для подлючения внешнего резонатора 8МГц на аtмега 8A и прошились только в CSEL=1111. Получается , что MK принимает фьюзы из набора External High Freq , на остальных разу блокируется.
GetChiper добрый день !!! Прочитал Ваши статьи про фьюзы , спасибо, очень помогло в них неможко разобраться . Хочется у вас спросить про…( …поэтому, в скором времени, займусь сборкой несложного паралельного программатора. Получиться — отпишусь.)
Скажите пожалуйста, удалось ли собрать такое устройство ?
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, если они подходят под одинаковые (правда, граничные) значения кварцев? В Протеусе работало при обоих установках.
Да, у uniprof фьюзы выставляются инверсно(наоборот) моим картинкам.
Здравствуйте!
Правильно ли я понял, что если я прошиваю с помощью uniprof, то чтобы выставить фьюз-биты (как в проекте, который я пытаюсь повторить, я совсем-совсем начинающий в этом деле), я должен поснимать соответствующие галочки?
Ато мне кажется, я залочил один контроллер: он распознавался нормально до тех пор, пока я не залил в него HEX-файл и выставил фьюзы как было показано в примере, после чего программа его не видит и при тыцкании на карсное говорит, что МК не откликнулся 🙂
Спасибо. Буду разбираться
Вот здесь есть разные варианты установок фьюбит http://www.getchip.net/posts/068-kak-pravilno-proshit-avr-fyuzy-fuse-bit/
Еще есть фьюзкалькуляторы (в поисковике выпадет очень много) они прощитают любую конфигурацию фьюзов.
Лучше в этом разобраться самому, чем страдать от чужих ошибок.
Подскажите пожалуйста, как прошить фьюзы в attiny2313, чтобы он тактировался от внешнего кварца на 10 МГц?
Если пустой, то да, можно и так.
Блин пишу вопрос и через час всё понимаю)) .hex фаилы делаю через programm notepad )
Всё проблему решил, только я не знаю как делать .hex фаилы ? распиши пожалуйста гайд 🙂 попроще чтоб было )
Чегото я запутался :). О какой программе сейчас идет речь?
Стёр программу, но когда заливаю сного другую программу, то включается старая, я кидаю не .hex фаил, а целый на Bascom AVR, может из за этого? НО я в прошлый раз кидал на .asm
Пишет «can’t find programmer» пишет
хм, вроде мк нашёл в программе, а когда начал программировать, выкидует из неё ( из программы) ((
Сюда > http://www.getchip.net/posts/057-programmiruem-avr-mikrokontrollery-usbtiny-avrdude-sinaprog/
Кстати, записывать можно прямо поверх старой прошивки — стирание производится автоматически перед прошивкой.
У меня STK500, через USB порт, он не находит в этой программе меня((
нажимаю COM3, что то тужится тужится и бац «мк не откликнулся»
Если UniProfом то клавиша «Erase» http://www.getchip.net/posts/025-uniprof-universalnyjj-programmator-dlya-avr/
А как очистить МК, а то на нём не нужная программа (((
МК Atmega8
Чувствую, назревает обновление статьи по фьюзам. Очень много по ним люди задают вопросы, а фьюзы действительно важная часть микроконтроллера и нужно их использовать правильно. Проблема усугубляется тем, что в разных программах-программаторах они задаются по разному.
Обновлю статью, добавлю побольше информации.
Доброго времени суток…
До сих пор не могу разобраться с фьюзами.. нельзя ли поподробней описать как их употреблять (или выложить какую нибудь литературу по ним).. На некоторых сайтах выложен Калькулятор фьюзов AVR но очто-то и с ним у меня туговато получается.. Заранее благодарен..
в пони прог (2.07с по крайней мере) неправильно выставленными фьюзами RSTDISBL, SPIEN МК не убьешь. Они там вообще неактивные. Как их сделать активными — я не нашел :). Ну если уж хочется убить — есть файл автоматизации и шестнадцатиричное слово. Установленная галка на активных фьюзах означает запрограмленный фьюз (0); неустановленная — незапрограмленный (1).
В CVAVR удобно читать сигнатуру чипа.
Вроде если намудрили с внутренним генератором , то возможность дальше
прошивать обеспечивается установкой внешнего кварца .
В CodeVisionAVR в поле FUSE-ов вообще нет SPIEN или может быть его
заменили на радиокнопку «Programming disabled» . В любом слусае с поля
«Program Fuse Bit(s):» его убрали . RSTDISBL есть .
Кроме того слышал что неправильную установку фьюзов исправляют какие- то определенные программаторы . Какие именно не знаю .
Историю с конфигурацией фьюзов интересно было узнать .