Atmega8 фьюзы. Фьюз-биты микроконтроллеров AVR: полное руководство по настройке и программированию

Что такое фьюз-биты в микроконтроллерах AVR. Как правильно настроить фьюзы для тактового генератора. Какие фьюз-биты отвечают за защиту памяти и загрузчик. Как безопасно программировать фьюзы без риска заблокировать микроконтроллер.

Содержание

Что такое фьюз-биты в микроконтроллерах AVR

Фьюз-биты (fuse bits) — это специальные биты конфигурации в микроконтроллерах AVR, которые позволяют настроить различные параметры работы контроллера. Основные функции фьюз-битов:

  • Настройка источника тактирования (внутренний/внешний генератор, кварц и т.д.)
  • Настройка частоты тактирования
  • Включение/отключение различных функций (сторожевой таймер, детектор пониженного напряжения и др.)
  • Настройка защиты памяти программ и данных
  • Настройка загрузчика (bootloader)

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

Настройка тактового генератора через фьюз-биты

Одна из главных функций фьюз-битов — настройка источника тактирования микроконтроллера. Рассмотрим основные варианты на примере ATmega8:


Внутренний RC-генератор

Для использования встроенного RC-генератора нужно установить следующие значения фьюз-битов CKSEL:

  • CKSEL3…0 = 0001 — для частоты 1 МГц
  • CKSEL3…0 = 0010 — для частоты 2 МГц
  • CKSEL3…0 = 0011 — для частоты 4 МГц
  • CKSEL3…0 = 0100 — для частоты 8 МГц

Внешний кварцевый резонатор

Для работы с внешним кварцем устанавливаем:

  • CKSEL3…1 = 111 — для частот выше 8 МГц
  • CKSEL3…1 = 110 — для частот 3-8 МГц
  • CKSEL3…1 = 101 — для частот 0.4-0.9 МГц

При этом CKOPT = 1 для высокочастотного режима.

Защита памяти через фьюз-биты

Фьюз-биты позволяют установить защиту от чтения/записи различных областей памяти микроконтроллера:

  • LB1, LB2 — защита Flash-памяти программ
  • BLB01, BLB02 — защита области загрузчика
  • BLB11, BLB12 — защита области приложения

Например, установка LB1 = 0, LB2 = 0 полностью запрещает чтение содержимого Flash-памяти.

Настройка загрузчика через фьюзы

Для работы с загрузчиком (bootloader) используются следующие фьюз-биты:

  • BOOTRST — выбор вектора сброса (0 — загрузчик, 1 — основная программа)
  • BOOTSZ1, BOOTSZ0 — размер области загрузчика

Например, BOOTSZ1 = 0, BOOTSZ0 = 0 выделяет под загрузчик 2048 слов.


Безопасное программирование фьюз-битов

При программировании фьюз-битов важно соблюдать следующие правила:

  1. Перед изменением всегда считывайте текущие значения фьюзов
  2. Изменяйте только нужные биты, оставляя остальные без изменений
  3. Проверяйте правильность установки битов выбора генератора
  4. Не отключайте возможность программирования через SPI (SPIEN = 0)
  5. Для восстановления заводских настроек используйте высоковольтное программирование

Соблюдение этих правил поможет избежать блокировки микроконтроллера из-за неправильной установки фьюз-битов.

Примеры типичных конфигураций фьюз-битов

Рассмотрим несколько типовых вариантов настройки фьюз-битов для ATmega8:

Заводские настройки

По умолчанию установлены следующие значения:

  • CKSEL = 0001 (внутренний генератор 1 МГц)
  • SUT = 10 (медленный старт)
  • BODEN = 1 (детектор питания выключен)
  • BODLEVEL = 1 (уровень 2.7В)
  • Остальные биты = 1

Внешний кварц 16 МГц

Для работы от внешнего кварца 16 МГц устанавливаем:

  • CKSEL = 1111 (внешний кварцевый генератор)
  • SUT = 11 (максимальное время запуска)
  • CKOPT = 0 (полный размах для высоких частот)

Внутренний генератор 8 МГц

Для работы от внутреннего генератора 8 МГц:


  • CKSEL = 0100 (внутренний генератор 8 МГц)
  • SUT = 10 (типовое время запуска)
  • CKDIV8 = 1 (без делителя частоты)

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

Инструменты для программирования фьюз-битов

Для программирования фьюз-битов можно использовать различные аппаратные и программные средства:

  • Программаторы: USBasp, AVRISP mkII, STK500 и др.
  • Программное обеспечение:
    • AVRDUDE — консольная утилита
    • AVR Studio — IDE от Atmel/Microchip
    • PonyProg — кроссплатформенная программа
    • AVRDUDESS — графический интерфейс для AVRDUDE
  • Онлайн-калькуляторы фьюз-битов

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

Часто задаваемые вопросы по фьюз-битам

Как восстановить заблокированный микроконтроллер?

Если микроконтроллер заблокирован из-за неправильной установки фьюз-битов, можно попробовать следующие способы восстановления:


  1. Использовать высоковольтное программирование (HVP или HVSP)
  2. Подать внешний тактовый сигнал на вывод XTAL1
  3. Использовать параллельное программирование (для некоторых моделей)

Можно ли прочитать фьюз-биты без специального программатора?

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

Сбрасываются ли фьюз-биты при стирании микроконтроллера?

Нет, фьюз-биты хранятся в отдельной области памяти и не стираются вместе с основной Flash-памятью. Для их сброса нужно явно перепрограммировать.

Влияют ли фьюз-биты на энергопотребление?

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

Заключение

Правильная настройка фьюз-битов — важный этап при разработке устройств на базе микроконтроллеров AVR. Понимание назначения различных битов и умение их корректно программировать позволяет:

  • Оптимизировать работу микроконтроллера под конкретную задачу
  • Снизить энергопотребление
  • Обеспечить защиту прошивки от несанкционированного доступа
  • Реализовать загрузку через бутлоадер

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



Фьюзы микроконтроллеров AVR – как и с чем их едят

Что же такое FUSE биты? Слова вроде бы знакомые, но многие толком и не знают их предназначение, ставят галочки и прошивают, работает устройство да и ладно. Я вам хочу рассказать немного про эти FUSE биты.

FUSE биты (фьюзы) – ну если по простому, то они настраивают определенные параметры микроконтроллеров, это некий инструмент для их тонкой настройки Фьюзы включают или настраивают такие параметры как:
—  частота генератора, внешний или внутренний генератор
—  запрет на чтение прошивки микроконтроллера
—  включение или выключение таймеров
—  деление частоты кварцевого генератора
—  защита EEPROOM от стирания
…и так далее. У каждого микроконтроллера выставляются свои фьюзы, у разных микроконтроллеров разный список фьюзов, например в ATmega8 нет фьюза CKOUT, но он присутствует в ATtiny2313. В даташитах к микроконтроллерам все эти фьюзы расписаны.

Главное правило при работе с фьюзами – не торопиться их выставлять, если вы точно не уверены в правильности своих действий.

Теперь распишем названия некоторых фьюзов, их обозначения и то, на что они влияют. Вообще, есть фьюзы для защиты программы от копирования (лок-биты), фьюзы, устанавливающие определенные функции, а так же так называемые «старшие» и «младшие» байты. Самый популярный фьюз, который выставляется практически всегда, это:

CKSEL, таких фьюзов с разными буквами всего четыре, это группа CKSEL0, CKSEL1, CKSEL 2 и CKSEL3, определяют частоту тактового генератора, и его тип, тактовые импульсы  необходимы для работы практически любого микроконтроллера. Во многих микроконтроллерах есть внутренний генератор, но мы можем подключить внешний и фьюзы выставить для работы от внешнего генератора. Внешний кварцевый резонатор подключается на выводы XTAL1 и XTAL2, кроме того припаивается пара конденсаторов  ~20пф одним концом на кварц, другим на минус. Если допустить ошибку при установке этих фьюзов, то микроконтроллер может «заблокироваться» для того чтобы восстановить контроллер, подают тактовый сигнал на ногу XTAL1, на данный момент придумано не мало схем для восстановления контроллеров, залоченных таким образом. Этот генератор можно сделать практически из любой логики или даже из таймера 555.

 Есть простые схемы, с использованием 1 транзистора, пары резисторов и кварцевого резонатора, и более сложные, на микросхемах типа  К155ЛА3. Данные способы 100% оживляют контроллеры с таким дефектом

Группа фьюзов SUT1 и SUT0 — fuse биты, управляющие режимом запуска тактовых генераторов МК, а так же  задают скорость старта МК после подачи питания. Связаны с фьюзами CKSEL, а именно CKSEL0.

CKOPT — бит, определяет работу встроенного генератора для работы с кварцевыми резонаторами, устанавливает «амплитуду» колебаний тактового сигнала на кварце. Данный бит программируется достаточно часто.

RSTDISBL – очень опасный фьюз, ошибочная установка может отключить вывод RESET, после чего пропадет возможность программирования ISP программатором. Бит RSTDISBL превращает вывод RESET в порт ввода-вывода.

SPIEN – фьюз, который разрешает работу МК по интерфейсу SPI. Все микроконтроллеры выпускаются с уже установленным битом SPIEN. Считается опасным фьюзом.

EESAVE —  Удобно читать как EEPROOM SAVE, дословно означает «сохранить EEPROOM», данный фьюз защищает EEPROM от стирания. Например когда в очередной раз заливаете прошивку в контроллер, можно поставить EESAVE = 0, и при стирании МК EEPROOM останется не тронутым.

BOOTSZ, состоит из группы битов BOOTSZ1 и BOOTSZ0, определяют размер области памяти записываемых программ, связан с битом BOOTRST.

BOOTRST, определяет адрес, с которого и будет начато исполнение программы. Если бит установлен т.е. если BOOTRST = 0, то начало программы будет с адреса области загрузчика (Boot Loader).

BODEN — бит, который при выставлении (BODEN=0), будет контролировать за питающим напряжением, на предельно низких напряжениях микроконтроллер может перезапускаться, глючить и так далее. Связан с BODLEVEL.

BODLEVEL. — определяет момент срабатывания детектора уровня питающего напряжения, при снижении напряжения питания ниже уровня, произойдет «перезагрузка» контроллера.

SELFPRGEN — бит, который разрешает (SELFPRGEN=0) или запрещает (SELFPRGEN =1) программе производить запись в память.

OCDEN – данный фьюз разрешает или запрещает чтение программы из памяти контроллера.

Я как то упоминал в своих статьях про то, что в некоторых программах фьюзы выставляются зеркально. Запомните, запрограммированный фьюз=0, а не запрограммированный=1. В программах Algorithm Builder, UniProf фьюзы выставляются одним образом, а в программах PonyProg, CodeVisionAVR, AVR Studio, SinaProg и некоторых других, фьюзы нужно выставлять зеркально по сравнению с предыдущим списком программ.

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

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

Думаю что теперь, если у вас спросят «что такое фьюзы, и зачем они нужны?», вы сможете объяснить человеку их назначение, а пока, на этом все!

Теги:
  • Микроконтроллер

МИКРОКОНТРОЛЛЕРЫ AVR: FUSE-БИТЫ

от admin

   В данном обзоре рассмотрим, что же такое fuse-биты и для чего они нужны, так как это вызывает много непонимания (да и разработчики прошиващего софта вертят их как хотят). В результате этого контроллеры AVR кучами складываются в коробки до «лучших времен». Для примера рассмотрим fuse-биты на примере МК ATMega8. Для других типов контроллеров AVR назначение уточняются в даташите на конкретный МК (не ленитесь читать документацию). Итак, поехали! Все фьюз-биты МК разделены на 2 байта – старший (Fuse High Byte) и младший (Fuse Low Byte). Разбор конечно же начнем со старшего байта.

 RSTDISBL – определение режима работы пина RESET. Данный пин может работать в 2-х режимах как вывод внешнего сброса или как порт ввода-вывода. 
 RSTDISBL=1 – пин настроен на работу как вывод внешнего сброса.
 RSTDISBL=0

– пин работает как порт ввода-вывода. Данный режим работы отключит возможность последовательного программирования и поможет только параллельный программатор.
 WDTON – включение и отключение сторожевого таймера (Watch Dog Timer), который выполняет защиту от зависания программы, выполняемой МК. В основном применяется в ответственных программах, где зависание нежелательно.
 WDTON=1 – сторожевой таймер отключен (можно включить программно через бит WDT регистра WDTCR).
 WDTON=0 – сторожевой таймер включен (программно отключить не получится).
 SPIEN – разрешение последовательного программирования.
 SPIEN=0 – последовательное программирование разрешено.
 SPIEN = 1 – последовательное программирование запрещено.
Если отключить режим последовательного программирования, то сможет помочь только параллельный программатор. Во многих программах для прошивки данный бит изменить нельзя (чекбокс недоступен).
 CKOPT – бит опций тактового генератора. Его разберем позже, когда доберемся до младшего байта.
 EESAVE — бит защиты данных, хранящихся в EEPROM памяти при стирании микросхемы. Если данный бит не установлен, т.е. EESAVE = 1, то при стирании микросхемы затрутся данные, хранящиеся в EEPROM. 
 BOOTSZ1…0 – биты определяющие объем flash-памяти, отводимой под бутлоадер.
Бутлоадер – это набор команд, даже точнее – это программа, которая болтается в конце flash-памяти МК, способная принимать данные от внешних устройств при наступлении какого-либо события и заносить их во flash-память. Бутлоадер применяется в основном для прошивки МК без использования спецпрограмматора.
 BOOTRST – бит, определяющий с какого места начнется загрузка контроллера после сброса.
 BOOTRST = 1 – загрузка начнется с нулевого адреса
 BOOTRST = 0 – загрузка начнется с адреса начала области flash-памяти, выделенной под бутлоадер.
   Вот и добрались до младшего байта.

 BODLEVEL и BODEN – биты, управляющие схемой мониторинга напряжения питания контроллера (Vcc). Если напряжение опуститься ниже установленного битом BODLEVEL, то МК сброситься и будет держаться в режиме сброса, пока напряжение не превысит установленный порог.

 BODLEVEL = 1 – пороговое напряжение равно 2,7В.
 BODLEVEL = 0 – Пороговое напряжение равно 4В.
 BODEN = 1 – схема мониторинга неактивна.
 BODEN = 0

– схема мониторинга напряжения питания активна.
 SUT1…0 – биты, определяющие время запуска микроконтроллера (см. режимы работы тактового генератора). После подачи на МК питания, выхода его из режима энергосбережения или после сброса, МК начинает работать не сразу, а по истечении определенного времени. Как раз это время и задают данные биты. Если время старта не важно, то ставим максимум SUT1…0 = 11. Все операции, выполняемые контроллерам, производятся по импульсам, приходящим от тактового генератора. Тактовый генератор может быть встроенным в МК, либо быть внешним.

   Внутренний генератор может работать в нескольких режимах:

— с внутренней задающей RC-цепочкой;
— с внешней задающей RC-цепочкой;
— с внешним задающим кварцевым или керамическим резонатором.
   При работе контроллера от внешнего тактового генератора на его вход XTAL1 подаются прямоугольные импульсы от какого-либо внешнего генератора:
Все эти режимы работы задаются битами CKSEL3…0.

Внутренний генератор с внутренней задающей RC-цепочкой

   Все МК типа ATMega8 поставляются с завода со значением битов CKSEL3…0=0001, т.е. настроены на работу с тактовой частотой 1 МГц от внутреннего генератора с внутренней задающей RC-цепочкой. Время старта в данном режиме работы определяется по таблице:

   Внутренний генератор с внешней задающей RC-цепочкой

   Согласно даташиту емкость конденсатора должна быть не менее 22 пФ. При условии, что CKOPT=0 между выводом XTAL1 и GND подключается внутренний конденсатор емкостью 36 пФ и внешний конденсатор можно исключить. Частота задающей RC-цепочки определяется соотношением f=1/(3RC). В соответствии с выбором RC-цепочки биты CKSEL3…0 устанавливаются в соответствии с таблицей:

   Время старта в данном режиме определяется по таблице:

   Внутренний генератор с внешним резонатором

   Частота тактового генератора будет определяться частотой кварца. При выбранной частоте кварца биты CKSEL3…1 выбираем из таблицы:

   Комбинация CKSEL3…1 = 101 должна использоваться только с керамическим резонатором (см. примечание под таблицей). Время старта выбирается из таблицы:

   При работе тактового генератора с внешним резонатором значение бита CKOPT определяет режим работы усилителя тактового генератора для раскачки резонатора. При CKOPT = 0 амплитуда колебаний максимальна, что дает устойчивость к помехам и возможность работать на всем диапазоне частот. При CKOPT = 1 амплитуда колебаний меньше (генератор работает в экономном режиме) и возможны сбои при работе контроллера из-за различных помех. Так что если нет жестких требований к энергосбережению устройства, то CKOPT = 0. Кроме работы с высокочастотными резонаторами, контроллер способен работать также на частотах так называемых часовых кварцев (32768 Гц). Для этого значение CKSEL3…0 = 1001. При CKOPT = 0 между XTAL1 и GND, и XTAL2 и GND подключаются внутренние конденсаторы, а внешние конденсаторы в данном случае можно исключить. Время старта определяется из таблицы:

   Внешний тактовый генератор

   Для выбора данного режима устанавливаем CKSEL3…0 = 0000. Установка CKOPT = 0 позволяет подключить между XTAL1 и GND, и XTAL2 и GND внутренние конденсаторы 36 пФ (зачем?). Время старта опять же определяется из таблицы:

   Кроме младшего и старшего fuse-байтов в окне прошивальщика можно увидеть Lock Bit Byte – так называемый байт защиты. С помощью изменения значения битов данного байта можно запрещать и разрешать доступ к памяти программ (flash-памяти), EEPROM и области бутлоадера. Можно сказать, что биты этого байта предназначены для защиты того, что есть в контроллере. В основном это надо разработчику, чтобы защитить свой интеллектуальный труд от кражи и обычному пользователю эти биты особо неинтеесны.

   Немного о прошивающем софте

   Немало косяков с залочкой контроллеров возникает из-за прошивающего софта. В каких-то программах галка в чекбоксе означает 0, а в каких-то 1. Перечислять значения галки в каждой программе бесполезно, так как этих программ навалом. Поэтому дам совет, как определить who is who. Берем МК и подключаем его к последовательному программатору, заходим в режим программирования fuse-битов и считываем все байты. Смотрим значение бита SPIEN. Т.к. последовательное программирование разрешено, то SPIEN = 0. А теперь смотрим что стоит в чекбоксе напротив данного бита. Если стоит галка, то в данной программе это означает 0, если чекбокс пуст, то галка в данной программе означает 1. При прошивке всегда шейте первым делом прошивку, а fuse-биты в самую последнюю очередь, т.к. fuse-биты могут быть настроены не от работы тактового генератора с внутренней RC-цепочкой или вообще в данной схеме пин RESET используется как обычный порт. Перед прошивкой fuse-битов всегда делайте их считывание, т.к. при выставлении только нужных битов остальные зашьются как есть на экране. Автор статьи: skateman.

Originally posted 2019-08-28 22:41:49. Republished by Blog Post Promoter

Программирование фьюз-битов AVR — настройки генератора

Думаю, многие из вас запутались при программировании фьюз-битов AVR. Я получаю много вопросов от новичков, таких как «Я запрограммировал Atmega8, но он не работает». Тогда мой стандартный ответ: «Ты трогал биты конфигурации?» и если да, то я почти на 90% уверен, что он сделал это неправильно. Большинство из них неправильно понимают, что запрограммированный бит фьюза в конфигурации нужно оставлять непроверенным и наоборот. Давайте взглянем на широко используемое программное обеспечение для программирования — PonyProg.

Первое, что вы делаете перед программированием чипа, это устанавливаете конфигурационные биты (Atmega8 на картинке):

В первую очередь следует обратить внимание на источники тактирования. Четыре бита управляют источниками синхронизации Atmega8: CKSEL0, CKSEL1, CKSEL2, CKSEL3.

Как вы, возможно, уже знаете, Atmega8 может иметь 4 разных источника синхронизации:

  • Внешний кварц или резонатор;
  • Внешний низкочастотный резонатор;
  • Внешний RC-генератор или калиброванный внутренний RC-генератор;
  • Внешний источник синхронизации.

В таблице вы видите адекватные настройки CKSEL0. .3

Как вы могли заметить, для большинства из них остался диапазон настроек.

Внешний кварц или резонатор

Внешний кварц или резонатор могут быть установлены от 1010 до 1111 (Обратите внимание, что «0» запрограммировано, а «1» означает не запрограммировано). Эти диапазоны оставлены для выбора времени запуска микроконтроллера для стабилизации производительности генератора перед первой инструкцией.

При подключении внешнего кварцевого генератора или резонатора к XTAL1 и XTAL2

Приходит еще один Fuse-бит CKOPT. Этот бит выбирает два разных режима усилителя генератора. Если CKOPT запрограммирован (флажок не отмечен), то осциллятор колеблется с полным выходным сигналом от рельса к рельсу. Это удобно, когда среда шумная или использует XTAL2 для управления другим микроконтроллером или буфером. Но с другой стороны, это требует больше сил. Если CKOPT не запрограммирован (проверено), то размах меньше, а энергопотребление снижается. Обычно, если резонатор работает на частоте до 8 МГц, оставьте CKOPT (отмечено = не запрограммировано) и запрограммируйте (не отметьте) выше 8 МГц. В таблице вы видите выбираемые режимы кварцевого генератора:

Биты CKSEL0, SUT0 и SUT1 в данном случае используются для выбора времени запуска микроконтроллера — сколько тактов ждать до выполнения первой команды. Эти настройки необходимы для обеспечения стабильности керамических резонаторов и кристаллов.

Примечание 1. Это быстрое время запуска — не подходит для кристаллов;

Примечание 2.   Чаще всего используется с керамическими резонаторами для обеспечения стабильного запуска. Это нормально для использования и с кристаллами, но устройство не работает на максимальной частоте.

Так что, если вы хотите стабильный запуск системы, лучше оставить CKSEL0, SUT0 и SUT1 запрограммированными (снятыми флажками), что означает время запуска около 65 мс.

Низкочастотный генератор

Для CKSEL0, CKSEL1, CKSEL2, CKSEL3 установлен только один бит – 1001 (не отмечен, отмечен, отмечен, не отмечен) Для генератора низких частот. Низкочастотный кварц представляет собой типичный часовой кварц, где частота составляет 32768 кГц. Основными параметрами этого режима являются установка времени запуска кристалла с помощью фьюз-битов SUT0 и SUT1.

Примечание 1. Менее стабильный запуск.

Внешний RC-генератор

Частота в этом режиме рассчитывается по формуле f=1/(3RC), при этом C должна быть не менее 22 пФ. Если CKOPT запрограммирован (не отмечен), то включен внутренний конденсатор 36 пФ между XTAL1 и GND, тогда нужен только резистор.

..

И снова таблица режимов работы:

И время запуска:

Примечание 1. не используйте эту настройку при приближении к максимальным частотам.

Калиброванный внутренний RC-генератор

Калиброванный внутренний RC-генератор используется довольно часто, потому что нет необходимости в каких-либо внешних компонентах и ​​он может обеспечивать фиксированные тактовые частоты 1, 2, 4 и 8 МГц. Этот режим выбирается путем программирования фьюз-битов в диапазоне от 0001 до 0100. Оставьте бит CKOPT незапрограммированным для этого режима (отмечено).

Режимы работы:

Примечание 1. по умолчанию этот параметр выбран для всех Atmega8 И таблица параметров запуска:

Примечание 1.   по умолчанию эта опция выбрана для всех Atmega8

О калибровке внутреннего RC-генератора читайте в описании устройства.

Внешние часы

Внешние часы — это основная ошибка новичков при запуске своих проектов. Чтобы включить внешний источник синхронизации, вы должны оставить биты CKSEL0, CKSEL1, CKSEL2, CKSEL3 незапрограммированными — это означает, что они отмечены. Люди ошибаются, проверяя их и думая, что они включают внешние кварцевые резонаторы, а потом удивляются, почему это не работает.

И снова существует таблица запуска внешнего источника синхронизации, управляемая SUT0 и SUT1:

Если вы снимите флажок CKOPT, вы включите конденсатор между XTAL1 и GND.

Примеры того, как правильно программировать источники часов Atmega8

  • , 8 МГц с медленным поднимающимся мощностью:
  • 2 МГц. осциллятор с внутренним C с поддержкой быстрого нарастания мощности:
  • Если вы хотите получить максимальную отдачу от вашего Atmega: тогда выберите быстрорастущую мощность 16 МГц:

Всю эту информацию вы можете найти в даташитах. Но как всегда — люди забывают их читать.

Если есть какие-либо вопросы или проблемы, не стесняйтесь спрашивать.

avr — Новый ATmega8 — Замена Fuse Bits

спросил

Изменено 8 лет, 8 месяцев назад

Просмотрено 894 раза

\$\начало группы\$

Кажется, у меня возникла небольшая путаница в отношении замены фьюз-битов на новом AVR ATmega8.

Совершенно новый AVR поставляется с внутренней настройкой RC 1 МГц и не имеет фьюз-бита CKDIV8. Кроме того, поскольку программирование ISP должно выполняться со скоростью менее 1/4 скорости MCU, изначально мне нужно программировать на частоте < 250 кГц.

Теперь мой вопрос , когда я подключаю AVR к источнику питания и подключаю соединения SPI, и хочу изменить часы на внешний кварц 12 МГц, я сначала программирую новые настройки фьюз-битов в AVR (без подключенного кварца), а затем подключаю кристалл 12 МГц к контактам XTAL (вместе с колпачками) или подключить кристалл, а затем запрограммировать необходимые фьюз-биты?

Кроме того, когда программируется AVR, нужен ли ему источник питания или он исходит от самого заголовка ISP?

  • авр
  • исп
  • фьюзы

\$\конечная группа\$

1

\$\начало группы\$

[заказ]

Не важно. AVR не будет использовать кристалл, пока не будет выпущен nRST, поэтому вы можете сначала подключить его.

[мощность]

Это зависит от того, обеспечивает ли программатор питание. Если это не так, вам нужно будет это сделать.

\$\конечная группа\$

6

\$\начало группы\$

Подключить кристалл и колпачки к девственной АтМеге. Затем убедитесь, что частота вашего интернет-провайдера установлена ​​​​менее 1/4 тактовой частоты, как вы предлагаете. Затем запрограммируйте соответствующий предохранитель выбора генератора. AtMega начнет работать на частоте 12 МГц, как только вы запрограммируете предохранитель. Затем вы можете повысить частоту ISP до 2 или 3 МГц, чтобы ускорить стирание, программирование и проверку флэш-памяти чипа.

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *