068-Как правильно прошить AVR фьюзы (fuse bit).

Автор: | 13.04.2011

титл FuseЯ уже писал про фьюз биты / байты (fuse bits / bytes) микроконтроллеров AVR много статей назад. Но, судя по большому количеству вопросов от читателей, тема не раскрыта полностью.

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


для начала –
1 ОБЩАЯ ИНФОРМАЦИЯ.

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

С завода, по умолчанию, фьюзы выставлены для работы микроконтроллера от внутреннего задающего генератора. Ничего довешивать не нужно подал питание, и он работает. Если нужно как-то изменить работу микроконтроллера, например, заставить его работать от внешнего задающего генератора, нужно изменить соответствующие фьюзы.

Физически фьюз биты расположены в четырех специальных байтах:
— Lock Bit Byte – лок биты для защиты программы от копирования;
— Fuse Extended Byte – дополнительный байт – особые функции;
— Fuse High Byte – старший байт;
— Fuse Low Byte – младший байт.

Вот как распределены фьюз биты по байтам для ATtiny2313 (взято из даташита):

лок биты
расширенные биты
старший фьюз байт
младший фьюз байт

Важно знать!

Исторически так сложилось, что если фьюз равен:
0 – значит, запрограммирован / прошит / активен
1 – значит, НЕ запрограммирован / НЕ прошит / Не активен

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

Вот такая логика и является источником проблем с установкой фьюз бит.


2 НЕБОЛЬШОЙ ЛИКБЕЗ ПО НАЗНАЧЕНИЮ ФЬЮЗОВ.

Здесь описаны не все фьюзы – только основные. Подробнее (и правильнее) о фьюзах нужно смотреть в даташитах на каждый конкретный микроконтроллер.

CKSEL – выбор тактового генератора для микроконтроллера.
Для работы микроконтроллера (как и для любого процессора) нужны тактовые импульсы. Источником тактового сигнала может быть:
— внутренний RC генератор. Никаких дополнительных элементов не нужно. Удобно, но RC генератор имеет небольшую точность работы (вплоть до 10% погрешности) и, кроме того, «плывет» от температуры. Для некритичных по времени приложений вполне годиться.
— внешний кварцевый (или керамический) резонатор. Нужен сам резонатор, плюс два конденсатора на 15-30пФ. Соответственно, будут заняты две ножки микроконтроллера — XLAT1 и XLAT2. Применяется там, где нужны точные замеры времени или частота работы микроконтроллера выше, чем может дать внутренний RC генератор.
— еще можно тактировать микроконтроллер от внешнего источника тактового сигнала. Это может быть другой микроконтроллер (для синхронизации работы) или внешняя схема, дающая нужный сигнал. Тактовый сигнал подается на ножку XLAT1.

Источник тактового сигнала для микроконтроллера задается комбинацией битов CKSEL3…0.
Это может быть (для ATTiny2313, выборочно):
CKSEL3…0 = 0000 – Внешний тактовый сигнал;
CKSEL3…0 = 0010 – Внутренний тактовый генератор — частота 4 МГц;
CKSEL3…0 = 0100 – Внутренний тактовый генератор — частота 8 МГц;
CKSEL3…0 = 1101 – Внешний тактовый генератор — кварц частотой от 3 до 8 МГц;
CKSEL3…0 = 1111 – Внешний тактовый генератор — кварц частотой больше 8 МГц.

Как оживить микроконтроллер, если неправильно установлены CKSEL?
Если Вы выставили фьюз биты на внешний генератор, а его нет, то микроконтроллер «пропадет» для программатора. В этом случае придется припаять кварц к соответствующим ножкам или подать тактовые импульсы на ножку XLAT1 микроконтроллера.

В «боевых» условиях получить тактовый сигнал можно несколькими способами:
— собрать несложный генератор на логике – паять можно прямо на ножках логики;

— если рядом имеется осциллограф, то у него есть источник образцового сигнала. Частота его, обычно, не большая, но фьюзы исправить хватит;
— если есть еще один микроконтроллер – делаем выход тактового сигнала на ножку микроконтроллера (нужно запрограммировать фьюз CKOUT) и подаем этот сигнал на XLAT1;
— есть еще «метод пальца» — крайне не рекомендую…

CKOUT – разрешает вывод тактовой частоты на ножку CLKO микроконтроллера (для тактирования других устройств).
CKOUT = 1 – ножка микроконтроллера работает как обычный порт ввода-вывода;
CKOUT = 0 – на ножку микроконтроллера выдается сигнал тактового генератора.

CKOPT – задает размах тактового сигнала на внешнем генераторе.
CKOPT = 1 – размах небольшой – генератор работает в экономном режиме. Нормально генератор может работать лишь при небольших частотах и в условиях близким к идеальным. При значительных помехах, большой тактовой частоте, перепадах (скачках) напряжения питания, микроконтроллер может работать нестабильно;
CKOPT = 0 – задающий генератор работает на полную мощность, устойчив к помехам и может работать во всем диапазоне частот. Если нет особых требований к энергосбережению – советую всегда программировать этот бит.

SCKDIV8 – деление тактовой частоты на 8.
Тут все просто:
SCKDIV8= 1 – микроконтроллер работает на частоте задающего генератора;
SCKDIV8= 0 – микроконтроллер работает на частоте в 8 раз меньше частоты задающего генератора;

SUT – задает скорость запуска микроконтроллера.
После снятия «сброса» (или подачи питания) программа, записанная в микроконтроллер, начинает работать не мгновенно. Микроконтроллер выжидает некоторое время, для того, чтобы нормально запустился тактовый генератор, установилось напряжение питания и т.д. Время ожидания до запуска программы и задают биты SUT1…0. Чаще всего нам не критична скорость запуска, поэтому советую ставить на максимум.
SUT1..0 = 11 – максимальное время запуска (чуть больше 65 mS).
На время запуска еще влияет CKSEL0, но это уже детали …

RSTDISBL –разрешает использовать ножку Reset как еще один порт ввода-вывода.
Иногда нужная вещь, но нужно знать —
после программирования RSTDISBL микроконтроллер уже нельзя будет прошить последовательным программатором! Поэтому без особой надобности не трогайте его.
RSTDISBL = 1 – ножка сброса работает как сброс;
RSTDISBL = 0 – ножка сброса работает как еще один порт ввода-вывода, последовательное программирование отключено.

SPIEN – разрешение на последовательное программирование.
По умолчанию запрограммирован (0) – разрешено последовательное программирование.
SPIEN = 0 – разрешено последовательное программирование;
SPIEN = 1 – запрещено последовательное программирование.

WDTON – включает Watch Dog Timer.
Для ответственных приложений, там, где недопустимо зависание программы (будь то ошибка программы или злостная помеха), применяют Watch Dog Timer. Это внутренний таймер микроконтроллера, работающий от своего независимого генератора. При переполнении этого таймера микроконтроллер сбрасывается и начинает выполнять программу с начала. Программист должен в тесте программы (обычно в главном цикле) вставить специальную команду обнуления этого таймера (WDR). Команда периодически выполняется и обнуляет таймер, не давая ему переполнится. Если микроконтроллер «повис» перестают выполняться команды обнуления, таймер переполняется и сбрасывает микроконтроллер.
WDTON = 1 – Watch Dog Timer – отключен (можно включить программно);
WDTON = 0 – Watch Dog Timer – включен (программно выключить нельзя).
В обычных приложениях не нужен.

BODLEVEL и BODEN — контроль напряжения питания микроконтроллера (Brown-out Detector).
Если питание микроконтроллера опуститься к минимально допустимому или чуть ниже, то работа микроконтроллерабудет нестабильной. Возможны ошибочные действия, потеря данных, случайное стирание EEPROM. Микроконтроллер умеет следить за уровнем своего питания (BODEN=0) и когда оно достигает уровня, который задается битами BODLEVEL, сбрасывается и держится в ресете пока уровень не поднимется до рабочего уровня. В некритических приложениях можно не использовать.

JTAGEN – разрешает интерфейс JTAG (внутрисхемный отладчик).
При активации некоторые линии микроконтроллера отдаются под интерфейс. Но зато можно подключать JTAG отладчик и с его помощью легко отладить любую программу прямо в схеме — удобно.
JTAGEN = 1 – запрещен JTAG;
JTAGEN = 0 – разрешен JTAG.

DWEN – бит, разрешающий работу DebugWire
– еще одного отладочного интерфейса. DebugWire однопроводный отладочный интерфейс работающий через ножку сброса, поэтому «не отнимает» у микроконтроллера ножки портов ввода-вывода.
DWEN= 1 – запрещен DebugWire ;
DWEN= 0 – разрешен DebugWire .

AVR микроконтроллеры могут во время своей работы изменять содержимое области программ (программировать сам себя).
SELFPRGEN – бит, разрешающей программе производить запись в память программ.
SELFPRGEN = 1 – изменение области программ запрещено;
SELFPRGEN = 0 – разрешено изменение области программ.

EESAVE — защита EEPROM от стирания.
При подаче команды полного стирания микроконтроллера (обычно осуществляется при каждом программировании кристалла) стирается и EEPROM. Если Вы хотите чтобы EEPROM оставалось нетронутой – активируйте этот фьюз. Это актуально если в EEPROM хранятся важные данные.
EESAVE = 1 – стирать EEPROM вместе с Flash;
EESAVE = 0 – оставлять EEPROM при очистке нетронутым.

AVR микроконтроллеры могут иметь бутлоадер – это область в конце памяти, в которой можно разместить загрузчик, который предназначен для загрузки и запуска основной программы.
BOOTRST – как раз и заставляет микроконтроллер запускаться с области бутлоадера.
BOOTRST = 1 – микроконтроллер запускает программу с нулевого адреса;
BOOTRST = 0 – микроконтроллер запускает программу с бутлоадера.

BOOTSZ0..1 — задает размер бут сектора (области памяти программ для бутлоадера).

Lock Bits – Это отдельный фьюз байт который предназначен для защиты области программ и/или EEPROM от копирования. Полное стирание восстанавливает эти биты в исходное состояние.

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


3 ЧАСТО ИСПОЛЬЗУЕМЫЕ КОНФИГУРАЦИИ ФЬЮЗ БИТ.

Для примера приведу некоторое количество конфигураций для микроконтроллеров. Картинки фьюзов сняты с Algorithm Builder’а.

Во всех картинках фьюзы как по даташиту:
— снятая галочка– fuse bit = 0, фьюз запрограммирован / активный;
— установленная галочка– fuse bit = 1, фьюз НЕ запрограммирован / НЕ активный.

Для UniProf — ставить как на картинке;
Для PonyProg, CVAVR, AVR Studio — ставить инверсно.

3.1 ATtiny13
ATTiny13.pdf - Даташит для ATTiny13/13V
ATtiny13_default_internal_RC_1.2 - Фьюзы ATtiny13 заводские настройки внутренний RC генератор на 1.2МГц
ATtiny13_internal_RC_4.8 - Фьюзы ATtiny13 внутренний RC генератор на 4.8МГц
ATtiny13_internal_RC_9.6 - Фьюзы ATtiny13 внутренний RC генератор на 9.6МГц
ATtiny13_internal_RC_0.128 - Фьюзы ATtiny13 внутренний RC генератор на 128кГц

3.2 ATtiny2313
ATTiny2313.pdf - Даташит ATTiny2313
ATtiny2313_default_internal_RC_1.0 - Фьюзы ATtiny2313 заводские настройки внутренний RC генератор на 1.0МГц
ATtiny2313_internal_RC_4.0 - Фьюзы ATtiny2313 внутренний RC генератор на 4.0МГц
ATtiny2313_internal_RC_8.0 - Фьюзы ATtiny2313 внутренний RC генератор на 8.0МГц
ATtiny2313_external_0.9_3.0 - Фьюзы ATtiny2313 внешний генератор на 0.9-3.0МГц
ATtiny2313_external_3.0_8.0 - Фьюзы ATtiny2313 внешний генератор на 3.0-8.0МГц
ATtiny2313_external_8.0_20.0 - Фьюзы ATtiny2313 внешний генератор на 8.0-20.0МГц

3.3 ATmega8
ATmega8.pdf - Даташит на ATmega8
ATmega8_default_internal_RC_1.0 - Фьюзы ATmega8 заводские настройки внутренний RC генератор на 1.0МГц
ATmega8_internal_RC_2.0 - Фьюзы ATmega8 внутренний RC генератор на 2.0МГц
ATmega8_internal_RC_4.0 - Фьюзы ATmega8 внутренний RC генератор на 4.0МГц
ATmega8_internal_RC_8.0 - Фьюзы ATmega8 внутренний RC генератор на 8.0МГц
ATmega8_external_1.0_16.0 - Фьюзы ATmega8 внешний генератор на 1.0-16.0МГц

3.4 ATmega48/88/168
ATMegaX8.pdf - Даташит ATMega48/88/168/V
ATmega48_88_168_default_internal_RC_1.0 - Фьюзы ATmega48/88/168 заводские настройки внутренний RC генератор на 1.0МГц
ATmega48_88_168_internal_RC_8.0 - Фьюзы ATmega48/88/168 внутренний RC генератор на 8.0МГц
ATmega48_88_168_internal_RC_0.128 - Фьюзы ATmega48/88/168 внутренний RC генератор на 128кГц
ATmega48_88_168_external_0.4_25.0 - Фьюзы ATmega48/88/168 внешний генератор на 0.4_25.0МГц


А теперь то, для чего писалась эта статья –
4 УСТАНОВКА ФЬЮЗ БИТ В РАЗЛИЧНЫХ ПРОГРАММАХ.

Общий алгоритм установки фьюз бит должен быть следующим:

— прошиваем Flash и, если нужно, EERROM;
— открываем окно прошивки фьюзов, считываем текущие фьюзы микроконтроллера;
— модифицируем только те фьюзы которые нам нужны;
— обращаем внимание на критичные для последовательного программирования фьюзы RSTDISBL, SPIEN, др.


4.1 Начнем, пожалуй, с Algorithm Builder’а.
http://algrom.net/russian.html
Раз я выкладываю картинки именно с него, нужно знать как устанавливаются в нем фьюзы.
Логика установки фьюзов в Algorithm Builder’а, я считаю, самая правильная – строго по даташиту.
Установка фьюз в алгоритм билдере


4.2 UniProf.
http://avr.nikolaew.org/progr
Логика установки фьюз аналогична Algorithm Builder.

фьюзы в юнипрофе


4.3 PonyProg.
http://www.lancos.com/prog.html
Еще одна хорошая программа для программирования микроконтроллеров. Логика обратная двум пред идущим.
фьюзы в понипрог


4.4 AVR Studio.
http://www2.atmel.com/
Не совсем программа для программирования, но прошить HEX сможет.
Фьюзы в авр студии


4.5 Code VisionAVR.
http://www.hpinfotech.ro/html/cvavr.htm
Еще одна популярная программа — обязательно нужно показать.
КодеВижинАВР


4.6 SinaProg.
Оболочка для AVRDUDE. Удобная и приятная в управлении программа.  AVRDUDE обеспечивает большое число поддерживаемых программаторов и кристаллов.
фьюзы СинаПрог

Я выбирал программы с которыми удобно работать и они доступны и популярны.


5 ФЬЮЗ КАЛЬКУЛЯТОР ДЛЯ AVR.

Если Вам нужна определенная конфигурация микроконтроллера, а изучение даташита ни к чему не приводят (и не удивительно, информация по фьюзам, там старательно размазана по всему документу), есть выход — Fuse Calculator!
Фьюз калькулятор – это специальная программа (или on line сервис) призванная помочь в конфигурации микроконтроллера. Как правило они просты и доступны в использовании. По большому счету, каждая среда программирования уже содержит в себе фьюз калькулятор, но есть универсальные с большими возможностями и более удобные. Хотелось бы рассказать об одном из популярных on line калькуляторе — Engbedded Atmel AVR® Fuse Calculator.
http://www.engbedded.com/fusecalc/

Все очень просто — небольшие комментарии на картинке помогут.
Engbedded Atmel AVR® Fuse Calculator

Вот такие инструменты есть для работы с фьюз битами. Выбирайте!


(Visited 133 357 times, 1 visits today)

068-Как правильно прошить AVR фьюзы (fuse bit).: 156 комментариев

  1. SergejGost

    SergejGost :
    Тогда в полной инверсии прошить надо.Поставить наоборот галочки.
    Когда я прошивал ее,вернее использовал для прошивки чиппрог+,прошивал сразу две меги…8-ю и 32-ю.Вернее 32-ю шил для другого устройства и там были выложены фьюзы под понипрог,вот и 8-ю прошил как на этой картинке,по ссылке.Все работает.Вот и сделал выводы,что чиппрог+ выставляет как и в пони все галочки.
    Если микросхема залочилась,попробуйте повесить на нее кварц в соответствии с даташит.Или подать на нее генерацию с отдельного генератора.Просто когда вы прошиваете СSEL0,в неправильной инверсии,то отключается в МК внутренний генератор и она тогда не видится.

    Ошибку допустил в написании
    правильно будет СSEL0

  2. SergejGost

    Уже до смеха…иеннет тупит…опять ошибся
    СKSEL0

  3. abatsk

    Доброго времени суток форумчане!
    Прграмма стоит PonyProg.
    Программатор LPT
    Микросхема Mega8 все определяется читается и пишится читаются и фьюзы но
    кроме записи фьюзов. Выставляю нужные фьюзы на внешний кварц жму старт и сразу
    Abort Retry Ignore (-24)
    В чем дело не пойму Помогите.

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

    Может чего с драйверами? Хотя LPT…

  5. aligor

    Всем привет. Помогите плиз с прошивкой фюзов для atmega 1280.
    Работаю с AVR Studio 4 и CodeVisionAVR V2.03.4
    Считываю с исправного донора (кварц 16МГЦ) и шью Fuse. На неисправном.
    Подав сигнал такт. Частоты с донора.
    (CKOUT = 0 – на ножку микроконтроллера выдается
    сигнал тактового генератора.)
    В этом варианте atmega 1280 запускается но при подачи сигнала (такт. Частоты с донора)
    Ведь считал фюзы с рабочего оборудования где 16мгц.
    1. Brown-Out Detection disabled; (BODLEVEL = 111 )
    2. Boot Flash section size = 4096 words Boot start address = $F000;
    3. BOOTRST;
    4. Ext. Crystal Osc.; Frequency 8.0- MHz; Start-Up time: 16 K CK + 65 ms
    (CKSEL = 1111 SUT = 11);
    Вопрос как запустить на родном кварце?
    (16 мгц в плате уже стоит)

  6. dgw

    Уважаемый Getchip, пробую связаться через JTAG AVRDRAGON с МК ATMEGA1284P и не получается, что не так? Может с завода JTAG запрещен? Спасибо Вам за сайт и возможность спросить!

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

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

  8. Serdg

    Подскажите пожалуйста,какие галочки поставить и какие убрать в AVR Studio V4.13
    Буржуин выложил вот эти,но не все понятно в версии 4,13

    The fuse settings for the ATTINY45 were as follows (for AVR STUDIO):
    BODLEVEL 2.7V
    EESAVE not preserved
    WDTON disabled
    SPIEN enabled
    DWEN enabled
    RSTDISBL enabled
    -> which equals 0xdd
    CKSEL hf pll (0001)
    SUT 1..0 bod enabled fast rise
    CKOUT disabled
    CKDIV8 disabled
    -> which equals 0xe1
    (this was taken from the EasyLogger data files)

    ссылка на девайс.
    (http://yveslebrac.blogspot.com/2008/10/ … alaxy.html)

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

    А что не понятно? По моему все очень подробно расписано.

  10. Serdg

    К чему относится эта строка-> which equals 0xdd
    И эта -> which equals 0xe1
    И что вбить сюда в онлайн калькуляторе.
    Low
    High
    Extended Action
    На разных калюкуляторах при выборе одного и того же контроллера,фьюзы немного отличаются.
    Как бы нужна гарантия правильности установки фьюзов,так как девайс сам по себе не все компы определяют.Так один контроллер уже прошит,девайс молчит и нет уверенности за свои действия с фьюзами.Да и в AVR 4.13 окошко для фьюз странное какое то.Нет там CKSEL…
    в таком колличестве.Второй и последний контроллер остался…

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

    Строчки which equals — это те-же фьюзбиты, только сформированные во фьюзбайты — не обращайте внимания.

    Вы уже прошивали этими фьюзами микроконтроллер?
    Строчки
    DWEN enabled
    RSTDISBL enabled
    сделают невозможным последующее программирование последовательным (обычным) программатором. Для устройства нет необходимости трогать эти фьюзы. Автор устройства решил позлить людей повторяющих его конструкцию? 🙂

    Я отправил фьюзы Вам на почту (DWEN и RSTDISBL я запретил)

  12. Serdg

    Автор устройства решил позлить людей повторяющих его конструкцию?
    Спасибо,мы люди запасливые,у нас есть всегда второй комплект))

  13. Serdg

    Если:
    SUT1 и CKSEL0 поставить галочки,то нужен будет внешний кварц 8 Мгц (CKSEL=1110 SUT=01)
    В моем же девайсе вроде бы используется внутренний генератор и скорее всего мне необходимо установить галочки на:
    SUT1
    CKSEL1
    CKSEL2
    CKSEL3
    получив PLL.clock Start Up-Time PWRDWN/RESET:16K CK/14CK+4ms (CKSEL=0001 SUT=01)

    Возможно я и ошибаюсь.

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

    Не запутайтесь — в разных программах по разному интерпретируются галочки. В той картинке, что я Вам отослал галочка — это 1.

  15. SVN

    Интересную штуку как-то обнаружил. У атмеги8 не прошивался СКОРТ при выборе 8 МГц от внутреннего генератора, а при выборе 4 МГц, прошивался. В чём причина?

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

    Может что-то связано с частотой программирующего сигнала.

  17. SVN

    Может быть и с частотой связано а может и нет. Как программирующая частота может не прошивать фьюз? Как ни будь нужно поэкспериментировать с задержками. Может что и прояснится.

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

    СКОРТ это фьюз влияющий только на внешний тактовый генератор, поэтому его установка для внутреннего генератора бессмысленна и возможно микроконтроллер или программа прошивающая фьз игнорирует его прошивку.

  19. SVN

    Рассуждая логически, наверняка так и есть. Спасибо.

  20. Toxa12345

    Прошу помощи с eXtreme Burner-ом как там выстовляются фьюзы?
    Очень боюсь ошибится….

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

    Возьмите за ориентир SPIEN или RSTDISBL.
    Они всегда:
    — SPIEN активен (разрешено последовательное программирование)
    — RSTDISBL НЕ активен (линия Reset НЕ запрещена)

  22. AndreyM

    А в CVAVR фьюз SPIEN есть?
    Или SPMEN и SPIEN это одно и то-же?

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

    Забудьте про SPIEN и не трогайте его, есть он или его нет (оставьте так, как его прошили на заводе).

  24. AndreyM

    GetChiper :
    Забудьте про SPIEN и не трогайте его, есть он или его нет (оставьте так, как его прошили на заводе).

    Да кого забыть? SPIEN или SPMEN?
    На Вашей картинке CVAVR последний фьюз SPMEN посмотрите. За что отвечает, в описании не нашел. В каком он состоянии должен быть? Или это всё-таки SPIEN?
    А потом забуду, когда узнаю что это за зверь.

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

    По ходу это фьюз SELFPRGEN (разрешение на модификацию Flash самой программой) так сократили. Он не так критичен как SPIEN, но лучше его оставлять каким как он есть.

  26. AndreyM

    Может быть, но в SELFPRGEN нет буковки M, а в SPMEN есть. Так не сокращают.
    Поэтому пока два варианта. Или SPIEN неправильно написали или сокращение неправильно.
    Как можно проверить какой байт меняется при установке/снятии этой «галки» в CVAVR?

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

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

  28. AndreyM

    Похоже ты прав. Спасибо.

  29. wockman

    Доброго дня! Я так все таки не пойму как выставить фьюзы для внешнего кварца. Если у дивайса кварц 7,7228 Мгц то это средняя частота (medium Freg)? И что значит Start-up-time:16K CK+0ms (я имею в виду 16К)?
    И как перевести значения если допустим дана картинка фьюз битов как в понипрог (где есть чекбоксы SUT1 ,0 и CKSEL3 ,2 ,1 ,0) в AVRStudio где я пытаюсь работать но там по другому?

  30. mxroman

    Добрый день. Attiny13 не правильно выставил фьюзы CKSEL, можно ли его реанимировать или вечная память?)

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

    тини13 можно запускать от внешнего генератора — посмотрите в даташите — вторая ножка, если не ошибаюсь

  32. mxroman

    так точно, вторая нога, подал 100кГц ничего, 500кГц ничего, потом запрограмировал тиньку одну на 1,5Мгц ожила) Ещё вопрос не по тебе, где то в посте читал что вы тиньки по баксу заказываете на каком то сайте, не подскажите адресок?)

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

    @mxroman
    Де где-бы не смотрел — они везде дешевые. Только нужно выбрать именно дешевую(есть очень дорогие варианты исполнения).
    Вот например подборка из одного магазина:
    ATtiny13-20SSU__ATMEL___________________22.08
    ATtiny13A-PU____ATMEL____DIP8-300________9.00
    ATtiny13A-SSU___ATMEL____SO8-150-1.27____9.95
    ATtiny13A-SU____ATMEL____SO-8____________6.50
    ATtiny13-20PU___ATMEL____DIP8-300________15.95

    Цены в гривнах 8грн=1$ (можно купить даже меньше доллара)

  34. mxroman

    можете ссылку дать?) не могу найти вот таких цен…

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

    Это с imrad.kiev.ua соответственно Украина
    но по другим магазинам Вы найдете то-же самое, даже меньше

  36. n_v_chumack

    Я прошу прощения, может подскажет кто правильную последовательность действий для установки фьюзов и прошивки мега8 программатором Громова и программулиной UNIPROF при наличии HEX-файла прошивки и фьюзов?

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

    сначала прошивается HEX, после него фьюзы

  38. n_v_chumack

    Большое спасибо!
    А если сделать наоборот наоборот, контроллер блокируется?
    Я-то как раз наоборот и сделал: перед прошивкой акуратно выставил фьюзы (ценой одной меги и с Вашей помощью уже разобравшись, что в UNIPROF их нужно выставлять инверсно) и после попытки записать HEX, получил еще один нерабочий контроллер. Ну, будем учиться дальше 🙂

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

    В UNIPROF фьюзы ставятся АНАЛОГИЧНО картинкам из статьи. Если я Вам где-то сказал противоположное — извините, был неправ.

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

  40. n_v_chumack

    Нет, речь не о Вашей статье. Я пытаюсь повторить конструкцию часов на газоразрядных индикаторах: http://cxem.net/mc/mc187.php , а там приведена картинка, которую я должен был как раз инвертировать.

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

    Тогда правильно.

  42. taneco

    к561ла7 подойдет для генератора внешнего такта? питание на нее +5В?

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

    Должно подойти

  44. triac

    Как выставлять фьюзы в программе USBASP_AVRDUDE_PROG прямо или инверсно ??

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

    Для USBASP_AVRDUDE_PROG
    0-это галочка
    1-пустой чекбокс
    В окне установки фьюзов должно сверху быть информационное сообщение по этому поводу. Еще можно посмотреть на SPIEN и сделать на его основании выводы (он должен быть всегда активен)

  46. ghostbuster

    Добрый день, а можно ли как-то на atmega8 вообще отключить загрузчик, чтобы все свободное место использовать под программный код? Или boot flash section size можно выставить минимум только в 128 байт? Спасибо!

  47. ghostbuster

    Всё, разобрался. Надо фьюз BOOTRST оставить незапрограммированным

  48. pelya999

    Скажите, а зачем вообще использовать внешний кварц, если работает и на внутреннем? для чего нужен внешний кварц в общем?

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

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

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