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 55 238 times, 185 visits today)

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

  1. vpashko

    Вот это ликбез, зачетно!!!

  2. marcus

    DWEN – бит, разрешающий работу DebugWire

    JTAGEN = 1 – запрещен DebugWire ;
    JTAGEN = 0 – разрешен DebugWire .

    Нет ли здесь ошибки?
    PS За статью спасибо!

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

    Ага, точно! Спасибо.

  4. Константин

    «С завода, по умолчанию, фьюзы выставлены для работы микроконтроллера от внутреннего задающего генератора. Ничего довешивать не нужно подал питание, и он работает.»
    Не все так:( например серия AT90USB…
    AT90S…. часто неимели внутри себя RC генератора

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

    Согласен. Но большинство, все таки, работает по умолчанию с внутренним RC генератором.

  6. Михаил

    «CKOPT – задает размах тактового сигнала на внешнем генераторе.»
    Здесь неточность. Этот фьюз управляет работой внутреннего генератора.
    За статью спасибо.

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

    «The CKOPT Fuse selects between two different Oscillator amplifier modes. When CKOPT is programmed, the Oscillator output will oscillate a full rail-to-rail swing on the output. This mode is suitable when operating in a very noisy environment or when the output from XTAL2 drives a second clock buffer. This mode has a wide frequency range. When CKOPT is unprogrammed, the Oscillator has a smaller output swing. This reduces power consumption considerably. This mode has a limited frequency range and it cannot be used to drive other clock buffers.»

    Это из даташита на ATmega8. Если кратко, то здесь говориться о двух режимах выходного усилителя которые отличаются размахом сигнала. Это точно относиться к внешнему генератору.

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

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

  9. Михаил

    Понятно и еще раз спасибо.

  10. cudi

    Мне срочно нужно установить фьюзы на МК atmega16 чтобы он работал от кварца 16 Mhz, работаю в avr studio 4, как и где мне поставить фьюзы ?
    И какой фьюзы в atmega16 отвечает за работу с кристалла 16MHz?

  11. cudi

    И вот ещё, у меня USB программатор STK500, в CodeVisionAVR он работает?
    Выбираю в CodeVisionAVR свой программатор а там только на порты COM1-6
    В SinaProg не находит меня:( почему ?(

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

    Нужно зайти на фьюз калькулятор http://www.engbedded.com/fusecalc/ — выставить нужные функции и частоту, потом один в один перенести фьюзы в АВР Студию(на картинке показано куда вносить).

    STK500 вообще то комовский программатор. То что он работает от USB, то это благодаря преобразователю. На чем собран преобразователь? После установки драйвера преобразователя должен появиться виртуальный ком порт — вот его и нужно «скармливать» программам.

  13. cudi

    Зашёл там самая верхняя строчка, после того как выбрал МК это и есть строчка выбора частоты?
    А если ты убрал фьюз SPIEN то всё конец мк ?!

  14. cudi

    я не чаяно убрал, теперь не могу программировать через шину SPI

  15. cudi

    В avr studio 4 выбирать кристалл надо в строчке SUT_CKSEL?

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

    cudi :

    Зашёл там самая верхняя строчка, после того как выбрал МК это и есть строчка выбора частоты?

    Да.

    cudi :

    А если ты убрал фьюз SPIEN то всё конец мк ?!

    Не конец, но последовательным программатором не прошьешь. Нужен параллельный или http://www.getchip.net/posts/059-ispravlyaem-avr-fyuzy-pri-pomoshhi-atmega-fusebit-doctor/

    cudi :

    В avr studio 4 выбирать кристалл надо в строчке SUT_CKSEL?

    В окошке программирования, закладка Main

  17. cudi

    GetChiper, я не знаю какую строчку выбрать (для выбора кварца), там их очень много, а с надписью 16Mhz нет (

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

    Выбирай последнюю и еще поставь галочку на против CKOPT.

  19. cudi

    Спасибо! А программатор COM Громова или LPT это параллельный ?

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

    Ни тот ни другой. Параллельный программатор — это довольно сложное устройство — дешевле купить пол десятка новых микроконтроллеров чем собирать последний

  21. cudi

    Мне сказали, что в моем программаторе STK500 есть виртуальный ком порт, но как его найти и как заставить работать? чтобы в CVAVR можно было программировать:?

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

    При подключении программатора к USB в диспетчере устройств (в разделе Порты COM и LPT) появится новый КОМ порт. Вот его и нужно указать в качестве порта STK500 в том-же CVAVR.

  23. cudi

    А если МК не правильно подключил то всё ему жопа, если линии не правильные… MISO c Mosi перепутал или с SCK
    Я просто так сделал, только что заметил…

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

    Ничего ему не станеться.

  25. колоб

    Такой вопрос возник, при программировании ATTINY 85-20PU с помощью программатора USBAsp 1)контроллер определяется, 2)читается сигнатура,3) стирается, но при считывании фьюзов пишет ошибку,и во всех чип боксах устанавливаются галочки. контроллер совершенно новый, только из магазина!Как нужно правильно считать фьюзы в этом контроллере и выставить нужные? Все остальные ATMEGI с этим программатором работают на 5 баллов!Может в ATTINY существует какая то особенность, или последовательность, по установке фьюзов?

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

    Проблема может быть или в микроконтроллере или в самом USBAsp. А что за программатор? С другой программой работать сможет, чтобы попробовать?

  27. колоб

    программатор собран по этой ссылке— http://easyelectronics.ru/usb-programmator-avr-usbasp.html .Единственная софтина которая поддерживает этот программатор это AVR-чувак, она же дудка, она же AVRDUDE. На него существует несколько оболочек. Контроллер уже 2й такой , первый в планаре, а этот в дипе , специально взял для эксперементов. А фьюзы не читаются, попробую прочитать громовским программатором, т.е. пятью проводками (удобную программу для прошивки контроллера UniProf от Николаева. Схему программатора придумал Громов, создатель Algorithm Builder.)Спасибо за ответ!

  28. kosmogon

    Приветствую. Как то не внимательно я проработал материалы на вашем сайте. И с приятным удивлением нашел здесь то что искал по всему интернету. Спасибо. Особенно понравились готовые настройки фусе бит под конкретные задачи. Спасибо.
    Но тем не менее, в нете нашел кое что интересное. Даташит на русском на 2313. В связи с этим вопрос, и он же пожелание иметь подобные даташит на русском на Вашем сайте на ходовые процессоры. Хотел прицепить этот даташит здесь, но не знаю как. И хоть он и не полный, но узнал я там не мало полезного. Да оно и удобно, не дергать каждый раз людей по пустяковым вопросам, а вдумчиво и внимательно проработать материалы на родном языке. Ну а уже потом и можно и оригиналы на английском почитать, а то вдруг где ошибки в переводе.

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

    Хорошее дело! Если есть такой даташит — кидайте на мыло — я выложу.

  30. AlexeyByckov

    Здравствуйте! У меня вопрос: какие CKSEL- и SUT-фьюзы для процессора ATmega162 надо выставить, чтобы он мог работать от внешнего часового кварца? И ничего, что дорожки (а, точнее, проводки) от кварца до контроллера около 3 см?

  31. anatoliy

    @AlexeyByckov
    А от чего вы его хотите затоктовать?

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

  32. AlexeyByckov

    Мне требуются фьюзы. Остальное — потом.

  33. anatoliy

    @AlexeyByckov
    ИМХО нужно сначала решить какой режим будите использовать а потом уже искать какие фьюзы за него отвечают.
    Почитайте датасшид на ваш МК секцию System Clock and Clock Options. И выберете режим в котором вы собираетесь тактовать МК.

    Еще было бы не плохо что-бы вы озвучили задачу которую вы хотите решить! Тогда можно подсказать что-то подробнее.

  34. AlexeyByckov

    Как понять режим?

  35. anatoliy

    Ну режим в данном контексте, это от чего и с какой частотой вы будите тактовать МК. Например тактуем от внешнего ВЧ кварца. Или внешней RC цепочки, Или там от НЧ кварца.

  36. AlexeyByckov

    Мы его тактуем от внешнего ЧАСОВОГО кварца, от 32768 Гц.

  37. AlexeyByckov

    Я вот открыл Datasheet на ATmega162 и нашёл секцию, про которую Вы говорили. Там есть табличка с этими фьюзами. Я как понимаю, часовой кварц = External Low-frequency Crystal?

  38. AlexeyByckov

    И ещё. Вот ссылка на русскоязычный калькулятор фьюзов: http://fusecalc.mirmk.net/. Выберете там ATmega162.
    Может быть, в «Режимы синхронизации и задержки запуска (CKSEL, SUT) » в выпадающем списке «Внешний низкочастотный кварц;…» — это и есть часовой кварц?

  39. anatoliy

    Да это и есть часовой кварц. Про конденсаторы не забудьте! Но это ИМХО не по фэншую!

  40. AlexeyByckov

    А что лучше внешние или внутренние конденсаторы?

  41. anatoliy

    Я бы на вашем месте ядро затактовал от внутренней RC. А часики реализовал на Real Time Counter with Separate Oscillator. Для использования в тактовом генераторе ВЧ кварцев конденсаторы обязательны. Иногда НЧ кварцы без них то-же не заводятся.

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

    Для включения в работу часового кварца фьюзы не помогут. Нужна определенная процедура перевода таймера (чаще всего Timer2) в режим работы от часового таймера. Я описывал эту процедуру вот здесь http://www.getchip.net/posts/052-kak-zapustit-nerabotayushhijj-chasovojj-kvarc-32768-gc/
    Для AVR микроконтроллеров установка часового кварца примерно одинакова, но с даташитом свариться нужно.

  43. anatoliy

    @GetChiper
    Он ядро хочет от часового кварца затактовать

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

    Нее, ядро запитывать часовым кварцем ненада — нежный он очень. Если нужно запитать ядро низкочастотным сигналом, то внутренний RC-генератор и вправду лучшее решение.

  45. anatoliy

    У мя лежит кварц на 10кГц вот думаю надо будет подключить к МК. Так чисто для прикола 🙂

  46. 866999

    anatoliy :
    У мя лежит кварц на 10кГц вот думаю надо будет подключить к МК. Так чисто для прикола

    Народ хелп! у меня тоже ложали 2 кварца на 10 и на 20. Прошил как надо перепроверил 3 раза. Итого: он работает как будто внем не 20 а 0.02 (именно такой порядок) проверил 10 тоже самое деленное на 2. Народ посоветуйте где искать ошибку (в схеме нет 100%). И что сейчас делать с контролером — COM программатор его не теперь видит. Можно както без fuse doctor обойтись?

  47. 866999

    сори за флуд проблему читания программатором снял = поставил чип на плату без кварца и перепрошил фьюзы по старому. Но в чем может быть проблема с кварцем. Частотомер показывает 10кгц на кварце = 10 мгц.

  48. ewgeny

    Народ, есть такая программа как Algorithm Builder. Пользование ею как средой разработки — это дело личное. Но в ней есть прекрасный настройщик фьюзов, для каждого МК свой. Также, если вам лень разбираться с настройками регистров управления таймерами, UART, ADC, прочей шняги — в этой программе можно в сеттере выбрать желаемые параметры и увидеть в какие регистры какие числа писать для инициализации.
    Русский хелп к ней вполне по-человечески написан.

  49. shaman

    Доброго времени суток форумчане!
    заранее прошу прощения если не в ту тему влез, сталкнулся вот с какой проблемой: прошиваю понипрогом Atmega16 все прошивается, ошибок не выдает, даже программа запускается но както медленно, пытаюсь прочитать фьюзы а там пусто я еще раз прошиваю фьюзы говорит ОК. но при чтении там опять пусто! Мегу на выброс?

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