Содержание
Урок 1. Первый проект
Урок 2. Управление кнопками
Урок 3. Подключение LCD
Урок 4. Использование ШИМ
Урок 5. Таймеры
Урок 6.1. Статическая индикация
Урок 6.2. Динамическая индикация
Урок 7.1. Генерация звука
Урок 7.2. Генерация звука. Продолжение
Урок 8.1. Передача данных через UART
Урок 8.2. Передача данных через UART. Продолжение»
Урок 9. Передача данных через SPI
Урок 10. Изучение АЦП. Простой вольтметр
Урок 11. Получение синуса при помощи ШИМ
Урок 12. Измерение температуры
Урок 13. Внешние прерывания.
Урок 14. Использование отладчика
Урок 15.1. Управление инкрементальным энкодером
Урок 15.2. Управление громкостью, при помощи энкодера
Урок 16. Управление RGB светодиодом
Урок 17. Использование ИК
Урок 18.1. Знакомство с графическим дисплеем
Урок 18.2 Вывод изображения на графический дисплей
Урок 18.3 Вывод русскоязычного текста
Урок 19. Формирование сигнала, при помощи ЦАП (R2R)
Урок 20. Опрос матричной клавиатуры
Урок 21. Сторожевой таймер
Урок 22.1 Воспроизведение wav. Введение.
Урок 22.2 Воспроизведение wav. Продолжение.
Урок 23.1 Работа с внешней памятью
Урок 23.2 Работа с файловой системой Fat

fuseВопрос, который давно требует пояснений — что же такое fuse bit (далее фьюзы) и как их использовать. Для простоты понимания, назовем их настройкой для микроконтроллера, которую можно изменить только при прошивке.

Удобны тем, что достаточно один раз указать конфигурацию фьюзов и независимо от этого изменять прошивку сколько угодно раз — фьюзы останутся те же. Нужно сказать о том, что для некоторых микроконтроллеров существуют специфичные фьюзы, здесь рассматривается пример для Atmega8.

f1

CKSEL0-3 — отвечают за выбор источника тактирования микроконтроллера. В даташите есть таблица из нее прикинуть конфигурацию битов. f2

Например, хотим работать от внешнего кварца на 8МГц, для CAVR смело убираем галочки CKSEL0-3 (т.е их значения будут 1111). Схема для подключения кварца. Конденсаторы 12-22 пФ.

f4

Или хотим работать от внутреннего генератора на 8МГц, видим диапазон значений для CKSEL, крутим вниз даташит и видим подробное описание:

f3

Т.е. в нашем случае подойдет последний вариант, смело заносим в CKEL0-3=0010 и радуемся супер скорости.

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

CKOPT — используется только совместно с битами CKSEL, позволяет включить «режим усиления». Микроконтроллер в таком режиме имеет повышенное энергопотребление, однако более помехозащищен. Установка данного бита позволяет работать на частотах выше 8МГц, если сам микроконтроллер поддерживает такие частоты.

SUT0-SUT1 — эти биты отвечают за задержку, перед началом работы микроконтроллера. Насколько я понял из даташита, рекомендации в отношении этих битов касаются в основном питания и в том числе бита BODEN

BODEN — при установке бита, микроконтроллер контролирует напряжение питания. При снижении напряжения ниже определенного уровня, микроконтроллер сбрасывается.

BODLEVEL — определяет тот самый уровень напряжения, если фьюз установлен, то нижний предел питания 4В, если не установлен 2,6В.

BOOTRST — позволяет начать выполнение программы не с начала, а с определенной области BOOTLOADER.

BOOTSZ0-BOOTSZ1 — также относятся к бутлоадеру, определяют размер памяти отведенный загрузчика.

EESAVE — если бит установлен, то во время выполнения команды Erase Chip, EEProm память не будет стерта.

WDTON — позволяет использовать сторожевой таймер.

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

Обратите внимание, в некоторых программах есть коварный бит — запрет последовательного программирования, после установки этого бита микроконтроллер не возможно прошить без специального программатора.

Настоятельно рекомендую перед изменением фьюзов, прочитать уже установленные фьзы: Tools-Chip Programmer-Read-Fuse Bit, так меньше шанс ошибиться.

Для внешнего кварца на 8МГц
fuses 8mhz

Для внешнего кварца 8-16МГц
16mhz

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

76 комментариев: Fuse bit в AVR микроконтроллерах

  • ка-май:

    Можете подсказать, как сконфигурировать fuse для того что бы моя atmega 8 работала от внешнего кварца на 8mgh

  • admin:

    External clock cksel 1111. Для CodeVision все наоборот, т.е. напротив этих фьюзов не нужно ставить галки.

  • ка-май:

    извините за тупость 😳 но против каких же надо ставить галочки))

  • ка-май:

    я имею ввиду в code vision

  • admin:

    В прошивалке есть кнопка прочитать фьюзы Read Fuse. Читаете, копируете, галочки сами встанут. Убираете напротив CKSEL0-CKSEL3 и СКОРТ

  • Serhio6223:

    Если я правильно понимаю, в CVAVR если галка напротив фьюза не стоит, то этот фьюз выставлен в «1»???? Так? То есть в вашем скриншоте для работы меги от внешнего кварца на 8 МГц фьюз «RSTDISBL» выставлен в «1», то есть после прошивки пин RESET станет обычным вводом/выводом порта и мегу нельзя будет перепрошить?

  • admin:

    Фьюз считается прошитым когда он = 0

  • Александер:

    Почему внешний кварц это 0000?!! 0000 — это же внешние часы, кристалл это External Crystal. Или я что-то не понимаю?

  • admin:

    Посмотрите комментарии выше

  • Алексей:

    Спасибо за статью!!! Только здесь смог разобраться с fuse 🙂

  • Александр:

    а если подключать внешний кварц порты как вход настраивать?

  • Андрей:

    Столкнулся с проблемой. При установке фьюзов для работы от внешнего кварца (самая верхняя картинка из 3-х), программатор пишет ошибку, контроллер становится более недоступен для внутрисхемного программирования, (испортил 5 шт.). Внутри — схемно от TL866A после сбоя также не программируется. При установке фьюзов любой комбинации для работы от внутреннего генератора, проблем нет. Если испорченную микросхему извлечь и вставить в программатор (в панель) TL866A, то перепрограммированию поддается, в схеме работает. Подскажите пожалуйста что я намудрил? Или что может быть? Использую CodeVisionAVR v3.12 драйвера от Avr Studio 4, программатор AVRISP MkII USB.

  • admin:

    значит кварц не подключен

  • Андрей:

    Огромное Спасибо!!!!!!! У вас наверно опыт огромный!!!! Дорожка в плате порвалась, сначала прозвонил, потом через лупу увидел.

  • Vlad:

    Начал разбираться в фьюзах, но т.к.шил через пр.Громова то соответственно инверсно выставил фьюзы частоты — cksell3..0=1101
    Какой кварцевый резонатор и конденсатор мне подключить,чтобы разблокировать мк?

  • admin:

    берите любой кварц 8-12МГц и кондеры на 18-22пФ

  • Денис:

    Уважаемый Админ! Хочу поделиться полезной информацией.
    ATMega64a и ATMega128a имеют другие пины для подключения программатора!
    надо одновременно подключать:
    MOSI — PE0 (RXD0/PDI) и PB2 (MOSI)
    MISO — PE1 (TXD0/PDO) и PB3(MISO)
    остальные – как положено:
    SCK — PB1 (SCK)
    RESET – к выводу (RESET)
    и обязательно нужно внешнее тактирование! Сигнал нужно подать на 24 вывод (XTAL1), иначе программатор не будет видеть чип! Изначально фьюзы настроены на тактирование от кварцевого резонатора!
    Надеюсь, что кому-то это поможет, так как я по незнанию убил целый день на то, чтобы обнаружить «неисправность» и перепаял четыре чипа ATmega64a…

  • voktor:

    У важаемый Админ скажите RSTDISBL на аттини 13 тоже отвечяет за ножку ресет . ? дело в том что я устанавливаю его но не пишется в мк. после а снова могу его програмировать ,а мне надо что он не прерпрошивался

  • admin:

    Должно быть также как в других камнях, 1 — не запрограммирован, 0 — запрограммирован.

  • Дмитрий:

    Прошу прощения, тут немного запутался. Написано: Например, хотим работать от внешнего кварца на 8МГц, выставляем смело CKSEL0-3 в 0000, а в комментариях 1111 с таким кварцем, объясните пожалуйста, где истина? Нужно запрограммировать Atmega328 с внешним кварцем на 8 МГц

  • admin:

    в CAVR инверсные фьюзы, шейте через студию и будет вам счастье

  • Viktor5719:

    Здравствуйте. Прочитал, но не очень понял. У меня CVAVR, Atmega88 работала с кварцем 7,3728. Fuse были следующие: CKSEL3- галочка, CKSEL2, CKSEL1 и CKSEL0- без галочки. Какие изменения сделать, что- бы Atmega88 работала от внутреннего генератора? Помогите, пожалуйста.

  • admin:

    посмотрите на последней фотке

  • Viktor5719:

    У меня 18 окошек, где можно ставить/убирать галочки. Самые нижние не изменять? BOOTRST= нет галочки
    BOOTSZO= есть галочка
    BOOTSZ1= есть галочка

  • admin:

    прочитайте из мк текущие биты и поменяйте только cksel

  • Viktor5719:

    Прошу прощения, но в МК Atmega88 4 cksel .

  • admin:

    можете набрать в гугле «avr fuse calculator», заходите по первой ссылке и можете выставить галками нужные фьюзы

  • Viktor5719:

    Программирование, фьюзы для меня что-то заоблачное, это не мое. В электронике кое- что понимаю. Работает устройство на Атмега88 с внешним кварцем, появилась необходимость освободить еще 2 вывода, программист изменил прошивку для 2 дополнительных выводов PB6 и PB7, не знаю почему, но не хочет разбираться с фьюзами, так как он живет в другой стране и у него «крутой» программатор, а у меня «5 проводков» и CodeVisionAVR V2.03.4.

  • admin:

    Что то вы меня обманываете, у меги8 и 88 одинаковые фьюзы. Не ленитесь, уже даже скрин выложен, скопируйте.

  • Viktor5719:

    Я не обманываю. Вот что написал программист: «это же ваш программатор, дл чего мне вникать в работу чужого железа?» Может я последовательность не соблюдаю. Уже 3 Атмеги зависли, хотя с внешним кварцем Атмегу88 прошивал многократно. Сейчас прошита и фьюзы стоят для внешнего кварца, устройство работает. Что- бы изменить фьюзы какая необходима последовательность? Ведь мне надо и прошивку изменить.

  • admin:

    Ну и программиста можно понять, вы же выбирали чем шить, значит и проблема ваша. Последовательности и таинств никаких нет, единственная проблема это частоты, если у вас было 7,3МГц а сейчас вы перешиваете на 8МГц. Если были какие то участки кода в програме, которые были завязаны именно на 7.3МГц, например uart, то очевидно что он работать не будет.

  • Viktor5719:

    Да, действительно, первоначально работал с кварцем 8мгц, но была необходимость работать по USB со скоростью 115200 и применили кварц 7,3. Спасибо и извините за беспокойство.

  • Viktor5719:

    Программист написал, что с UART ни как не связано. На Вашем нижнем фото не совсем такая картинка как у меня. Как- же мне узнать какие фьюзы необходимо установить? 4-Атмега зависла или хотя- бы как вернуться к тем фьюзам, которые работали?

  • admin:

    такое впечатление что вы не прошиваетесь и остаетесь на внешнем кварце, поэтому и не работает. подрубите внешний кварц, проверьте заведется ли с ним

  • Viktor5719:

    Начну с начала: рабочее устройство с фьюзами на 7.3728, кварц и конденсаторы соответсвенно установлены. Читаю фьюзы и сразу делаю изменения(устанавливаю соответствующие фьюзы) для внутреннего генератора, программирую фьюзы и устройство зависает. После этого CodeVisionAVR V2.03.4. уже не видит Атмегу88. Задача простая, готов оплатить завершение проекта, но не знаю где найти специалиста.

  • admin:

    может потому что кварц установлен, поэтому и зависает. выпаяйте его

  • Viktor5719:

    До начала любой прошивки? Т.е. чистую, новую микросхему впаять, кварц не впаивать и установить фьюзы и затем прошивать?

  • Viktor5719:

    Прикрепить скриншот здесь возможно?

  • admin:

    возможно, заливайте на файлообменник, сюда ссылку.

  • Gleb:

    Подскажите плиз, переделываю проект на атмеге 128 с внутреннего резонатора на внешний кварц 1 МГц, кварц на плату добавил к пинам XTAL вместе с конденсаторами, прошил фьюзами CKSEL3 0 остальные в 1 — не выставлены. Чип перестал отвечать — картина такая, будто нет тактирования. Но оно есть! Ошибок в монтаже нет, всю плату носом испахал. Метод пальца не сработал, генератора пока под рукой нет. Не подскажете, вкаком направлении рыть?

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

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

Счетчик
Яндекс.Метрика