Меню

Attiny2313 фьюзы внешний генератор

Attiny2313 фьюзы внешний генератор

«1» обозначает, что фуз не запрограммирован ( как и для всей флэш памяти: при стирании все «1» )

«0» обозначает, что фуз запрограммирован (установлен)

Fuse settings on ATtiny2313

Fuse
Byte
Bit Name Description Default
Value
AT90S2313
compatible
setting
Примечание
Extended
Fuse
Byte
1

7

1 1 Зарезервированы
0 SPMEN Self
Programming
Enable
1 1
High
Fuse
Byte
7 DWEN debugWIRE
Enable
1 1
6 EESAVE EEPROM
memory is
preserved
through the
Chip Erase
1 1
5 SPIEN Enable Serial
Program and
Data
Downloading
0 0 Не доступен при последовательном программировании
4 WDTON Watchdog
Timer always
on
1 1 Если «0» — Watchdog всегда включен
3 BODLEVEL2 Brown-out
Detector
trigger level
1 1 Сброс при снижении питания. Все «1» (не запрограммированы) — выключен.
2 BODLEVEL1 1 1
1 BODLEVEL0 1 1
0 RSTDISBL External Reset
disable
1 1 Если «0» — вывод Reset используется как порт в/в (а не как сброс)
Low
Fuse
Byte
7 CKDIV8 Divide clock
by 8
0 1 Деление тактовой частоты на 8
6 CKOUT Output Clock
on CKOUT pin
1 1 Выход генератора тактовой частоты на ножке CKOUT
5 SUT1 Select start-up
time
1 0 Время старта. По умолчанию — «10″ — при использовании BOD (сброс при снижении питания.). При медленно нарастающем напряжении питании — «01«. (CKSEL0 = «0»)
4 SUT0 0 1
3 CKSEL3 Select Clock
source
0 1 Выбор задающего генератора. По умолчанию — «0010″ — внутренний , для внешнего кварцевого резонатора (3 — 8 мГц) — «1100«
2 CKSEL2 0 1
1 CKSEL1 1 0
0 CKSEL0 0 0

При чтении программой Pony Prog ATtiny2313 с заводскими установками:

Т. е. галочка установлена там, где значение бита равно нулю (запрограммирован).

При использовании внешнего кварцевого резонатора 4 мГц меняем следующие поля:

Источник

AVR Lab устройства на микроконтроллерах AVR

Форум по AVR

Fuse биты микроконтроллера AtTiny2313 конфигурация, примеры

Примеры конфигурирования fuse bits микроконтроллера AtTiny2313 в данном примере конфигурируются только Low-фьюз биты.

Фьюз(Fuse) биты сконфигурированные на работу от внешнего генератора:

CKSEL2 — 1
CKSEL3 — 1
SUTO — 1
CKOUT — 1
CKDIV8 — 1

Фьюзы сконфигурированные на внутренний генератор:

CKSEL0 — 1
CKSEL2 — 1
CKSEL3 — 1
SUTO — 1
CKDIV8 — 1

Фьюзы установленные на заводе (заводские)AtTiny2313

CKSEL2 — 1
SUT1 — 1
CKOUT — 1

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

Непонятно как влияет CKOUT на

Непонятно как влияет CKOUT на выбор генератора (первые два скрина). Если верить даташиту, то это всеголишь возможность выбора выхода генератора на 6й ножке МК.
В данном сдучае все немного запутаннее.
С одной стороны CKSEL0..3 идут «как есть», то есть выбранный чекбокс=1. С другой — для CKOUT и CKDIV8 выбранный чекбокс=0.

Здесь нужно не забывать, что

Здесь нужно не забывать, что «For all fuses “1” means unprogrammed while “0” means programmed.» Для всех фьюзов, программированный бит = 1, не запрограммированный бит = 0. В некоторых программах для прошивки это наоборот!

Я со временем думаю сделать

Я со временем думаю сделать принт-скрины а не просто текст ориентируясь на Uniprof с установленными fuse битами для различных комбинаций.

Источник

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

Я уже писал про фьюз биты / байты (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 — ставить инверсно.

А теперь то, для чего писалась эта статья –
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/

Все очень просто — небольшие комментарии на картинке помогут.

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

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

Добрый день форумчане, прошу небольшой помощи в одном вопросе, наверное уже задавался такой но все же спрошу, пытаюсь залить прошивку в мегу 48, Sinaprog ее видит и пишет что все записано в контроллер, но как-то быстро это происходит примерно секунду, прошивка для подсветки ступенек лестницы. При попытке установки и прошивки фьюзбитов программа считывает заводские настройки, устанавливаю инверсно в соответствии с картинкой к нужной прошивке, пишет что все ок. но возвращает 00 и сигнатура также 000000. подскажите в чем может быть дело.

Здравствуйте Евгений. Прошу помощи. Как будут выглядеть фьюзы в программе PONYPROG для этого
устройства .РадиоКот-приставка» морской бриз» для вентилятора. Спасибо.

Зайди в калькулятор http://www.engbedded.com/fusecalc/
Выбери чип ATtiny13
В самом низу будет установка фьюз байт
Для High вводишь F9
Для Low вводишь 5A
— это из картинки статьи.
Получишь все свои фьюзы. Ставить как есть

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

очень хорошая тема -все программы указаны , большая просьба для Khazama добавить -я имею ввиду галочка это 0 или 1. заранее благодарен. может для кого то и глупый вопрос ,но я только начинаю разбираться.лучше сразу правильно понять чем потом ошибки искать.

Для любых программаторов всегда можно проверить как правильно ставить фьзы.
Для это нужно прочитать фьюзы с МК и посмотреть на два из них :
SPIEN — разрешение последовательного программирования — всегда запрограммирован/активен
RSTDISBL — запрет функции сброса — — всегда НЕ запрограммирован/НЕ активен

*конечно это для случая если Вы пользуетесь обычным последовательным программатором

в программе от китайского мультипрограмматора 866A MiniPRO галочки ставятся там, где надо менять.

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

Для отправки комментария вам необходимо авторизоваться.

Источник

Adblock
detector