Что такое фьюзы в AVR микроконтроллерах. Как правильно рассчитать и прошить фьюз-биты. Какие основные фьюзы есть в AVR и за что они отвечают. Где найти онлайн-калькулятор фьюзов для AVR. Как избежать ошибок при программировании фьюзов.
Что такое фьюзы (fuse bits) в микроконтроллерах AVR
Фьюзы (fuse bits) — это специальные конфигурационные биты в микроконтроллерах AVR, которые определяют основные параметры работы чипа. Они хранятся в отдельной энергонезависимой памяти и программируются отдельно от основной программы.
Основные особенности фьюзов AVR:
- Хранятся в специальной энергонезависимой памяти
- Программируются отдельно от основной программы
- Определяют базовые настройки работы микроконтроллера
- Могут быть перепрограммированы многократно
- Неправильная установка может вывести МК из строя
Фьюзы позволяют настроить такие параметры как:
- Источник тактирования (внутренний/внешний генератор)
- Частота тактирования
- Наличие загрузчика
- Защита от считывания/записи памяти
- Режим работы сторожевого таймера
- И многие другие
Основные фьюзы AVR и их назначение
В микроконтроллерах AVR обычно имеется 2-3 байта фьюзов:
- Low Fuse — младший байт фьюзов
- High Fuse — старший байт фьюзов
- Extended Fuse — расширенный байт фьюзов (есть не во всех МК)
Рассмотрим основные фьюзы и их назначение на примере ATmega328P:
Low Fuse
- CKDIV8 — делитель тактовой частоты на 8
- CKOUT — вывод тактового сигнала на пин
- SUT1, SUT0 — время запуска
- CKSEL3..0 — выбор источника тактирования
High Fuse
- RSTDISBL — отключение сброса
- DWEN — включение отладки по debugWIRE
- SPIEN — разрешение программирования по SPI
- WDTON — всегда включенный сторожевой таймер
- EESAVE — сохранение EEPROM при стирании чипа
- BOOTSZ1, BOOTSZ0 — размер загрузчика
- BOOTRST — вектор сброса на загрузчик
Extended Fuse
- BODLEVEL2..0 — уровень детектора пониженного напряжения
Правильная настройка этих фьюзов критически важна для корректной работы микроконтроллера.
Как рассчитать значения фьюзов
Для расчета значений фьюзов можно воспользоваться онлайн-калькуляторами или сделать это вручную.
Основные шаги по расчету фьюзов:
- Определить требуемые настройки МК (тактирование, защита и т.д.)
- Найти в даташите таблицы с описанием фьюзов
- Выбрать нужные значения битов для каждого фьюза
- Рассчитать итоговые значения байтов фьюзов
Пример расчета Low Fuse для ATmega328P:
- CKDIV8 = 1 (без делителя)
- CKOUT = 1 (без вывода тактового сигнала)
- SUT1:0 = 10 (медленный старт)
- CKSEL3:0 = 0010 (внутренний RC-генератор 8 МГц)
Итоговое значение: 11100010 (0xE2)
Аналогично рассчитываются значения High и Extended Fuse.
Онлайн-калькуляторы фьюзов AVR
Для упрощения расчетов рекомендуется использовать онлайн-калькуляторы фьюзов. Наиболее популярные из них:
- Engbedded Fusecalc — поддерживает большинство МК AVR
- ElecCelerator FuseCalc — простой и удобный калькулятор
- FLIP — официальный инструмент от Microchip
Принцип работы с калькулятором:
- Выбрать модель микроконтроллера
- Указать требуемые настройки фьюзов
- Получить рассчитанные значения байтов
Калькуляторы значительно упрощают процесс и снижают вероятность ошибок при расчетах.
Программирование фьюзов AVR
Для программирования фьюзов AVR можно использовать различные программаторы и ПО:
- AVRDUDE — консольная утилита
- AVR Studio / Atmel Studio — IDE от производителя
- PonyProg — программа для программирования МК
- USBasp + avrdude — бюджетный USB-программатор
Основные этапы программирования фьюзов:
- Подключить программатор к МК
- Запустить ПО программатора
- Выбрать модель МК
- Указать рассчитанные значения фьюзов
- Запустить запись фьюзов
- Проверить корректность записи
Пример команды для программирования фьюзов через AVRDUDE:
avrdude -c usbasp -p m328p -U lfuse:w:0xE2:m -U hfuse:w:0xD9:m -U efuse:w:0xFF:m
Здесь задаются значения Low, High и Extended фьюзов для ATmega328P.
Типичные ошибки при программировании фьюзов
При работе с фьюзами AVR часто допускаются следующие ошибки:
- Неправильный расчет значений фьюзов
- Установка неподходящего источника тактирования
- Отключение возможности программирования по SPI
- Установка слишком высокой тактовой частоты
- Отключение сброса микроконтроллера
Последствия таких ошибок могут быть серьезными — от некорректной работы до полной неработоспособности МК.
Рекомендации по избежанию ошибок:
- Всегда перепроверять рассчитанные значения
- Использовать онлайн-калькуляторы
- Не отключать возможность программирования по SPI
- Сначала тестировать настройки на отладочной плате
- Иметь возможность программирования высоким напряжением
Восстановление МК при неправильной установке фьюзов
Если в результате ошибки МК перестал отвечать на программатор, его еще можно восстановить:
- Использовать программирование высоким напряжением (HV programming)
- Применить параллельное программирование
- Использовать специальные программаторы-реаниматоры
Для HV-программирования понадобится:
- Источник напряжения 12В
- Программатор с поддержкой HV (например, USBasp-H)
- Переходник для подключения высокого напряжения к МК
Процесс восстановления:
- Подать 12В на специальный вывод МК
- Запустить программирование фьюзов через HV-программатор
- Установить корректные значения фьюзов
- Перезапустить МК
После этого микроконтроллер должен вернуться к нормальной работе.
Рекомендуемые настройки фьюзов для типовых применений
Для большинства проектов на AVR можно рекомендовать следующие базовые настройки фьюзов:
Для работы на внутреннем RC-генераторе 8 МГц:
- Low Fuse: 0xE2
- High Fuse: 0xD9
- Extended Fuse: 0xFF
Для работы на внешнем кварце 16 МГц:
- Low Fuse: 0xFF
- High Fuse: 0xD9
- Extended Fuse: 0xFF
Для работы с загрузчиком (например, Arduino):
- Low Fuse: 0xFF
- High Fuse: 0xDE
- Extended Fuse: 0x05
Эти настройки подходят для большинства базовых проектов на ATmega328P и аналогичных МК. Для других применений может потребоваться более тонкая настройка.
Вопросы безопасности при работе с фьюзами
При программировании фьюзов важно соблюдать меры предосторожности:
- Всегда делать резервную копию текущих настроек фьюзов
- Проверять совместимость новых настроек с оборудованием
- Не отключать возможность программирования по SPI без крайней необходимости
- Соблюдать осторожность при работе с битами защиты памяти
- Иметь возможность программирования высоким напряжением на случай ошибок
Соблюдение этих мер поможет избежать ситуаций с полным выводом микроконтроллера из строя.
Заключение
Правильная настройка фьюзов — важный этап при разработке устройств на базе AVR. Она позволяет оптимально сконфигурировать микроконтроллер под конкретную задачу. При работе с фьюзами нужно быть внимательным и перепроверять все настройки перед программированием.
Основные рекомендации:
- Всегда используйте онлайн-калькуляторы для расчета фьюзов
- Внимательно изучите описание каждого бита в даташите
- Начинайте с настроек по умолчанию и меняйте их постепенно
- Проверяйте работу на отладочной плате перед программированием основного устройства
- Имейте возможность восстановления МК при ошибках
При соблюдении этих рекомендаций работа с фьюзами AVR станет простой и безопасной процедурой.
AVR Fuse Calculator | Robotics
როგორ ვიცით avr მიკროკონტროლერებში მეხსიერების სამი ელემენტია: პროგრამული მეხსიერება ე.წ. ფლეშ მეხსიერება, ოპერატიული მეხსიერება SRAM და მუდმივ მონაცემთა მეხსიერება EEPROM. მაგრამ გარდა ამისა კიდევ არის მეხსიერების ძალზე მცირე ნაწილი (სულ რამოდენიმე ბაიტი), რომელიც მიკროკონტროლერის პროგრამირებისთვის და მუშაობისთვის ძირითადი საკვანძო ფუნქციების კონფიგურაციისთვის გამოიყენება. მგალითად როდესაც მიკროკონტროლერთან პირველათ გიწევს შეხება, შეიძლება არც იცოდე და არც გაინტერესებდეს Fuse ბიტები, რადგან Fuse ბიტების ყოველგვარი ცვლილების გარეშე კონტროლერს დააპროგრამებ და იმუშავებს კიდეც უპრობლემოთ. მაგრამ მუშაობისას შეინიშნება ერთი შეხედვით გარკვეული უცნაურობები, მაგ. იმისდა მიუხედავთ, რომ მიკროკონტროლერის მაქსიმალური ტაქტური სიხშირე არის 20MHz-მდე და მიერთებული გაქვს მაგალითად 8MHz-ის კვარცული რეზონატორი, კონტროლერი მუშაობს მაინც 1MHz სიხშირით და იმპულსების პერიოდიც არ არის სტაბილური. ალბათ უკვე მიხვდით რომ სწორედ ამ შემთვევაში ვჭირდება Fuse ბიტების კონფიგურაცია, ანუ მიკროკონტროლერის დაპროგრამების წინ პირველ რიგში გადავაპროგრამებთ Fuse ბიტებს, სასურველი ტაქტური სიხშირის თუ გენერატორის ტიპის მითითებისთვის.
Bit | Low | High | Extended |
7 | CKDIV8 Divide clock by 8 | DWEN debugWIRE Enable | |
6 | CKOUT Clock output | EESAVE EEPROM memory is preserved through chip erase | |
5 | SUT1 Select start-up time | SPIEN Enable Serial programming and Data Downloading | |
4 | SUT0 Select start-up time | WDTON Watchdog Timer Always On | |
3 | CKSEL3 Select Clock Source | BODLEVEL2 Brown-out Detector trigger level | |
2 | CKSEL2 Select Clock Source | BODLEVEL1 Brown-out Detector trigger level | |
1 | CKSEL1 Select Clock Source | BODLEVEL0 Brown-out Detector trigger level | |
0 | CKSEL0 Select Clock Source | RSTDISBL External reset disable | SELFPRGEN Self Programming Enable |
აუცილებელია დავიმახსოვროთ რომ კომფიგურაციის ბიტში 0 -ის ჩაწერა ნიშნავს რომ მოცემული ფუნქცია ნება დართულია, ხოლო 1-ის ჩაწერით ხდება ბიტის წაშლა. High ბიტებს რომლებიც წითლათ არის ნაჩვენები უკეთესი იქნება თუ არ შევეხებით, მგალითად SPIEN ბიტის გასუფთავებით (ერთიანის ჩაწერით) გავაკეთებთ იმას რომ მიმდევრობითი ISP პროგრამირებისთვის მიკროკონტროლერი მიუწვდომელი გახდება და გადაპროგრამებას ვეღარ შევძლებთ პარალელური პროგრამატორის გარეშე, RSTDISBL ბიტის დაპროგრამებით (ანუ 0-ის ჩაწერით) მიკროკონტროლერის RESET პინს აღარ ექნება რესეტის ფუნქცია და ასევე შეუძლებელი გახდება პროგრამირება, ასევე DWEN ბიტის დაპროგრამებით (0-ის ჩაწერით) უქმდება DebugWire-ის ფუნქცია, რაც თავის მხრივ შეთავსებულია RESET პინთან და მივიღებთ იგივე შედეგს რაც RSTDISBL პინის დაპროგრამებით. ყავისფერათ ნაჩვენები ბიტების კონფიგურაცია შეიძლება, მაგრამ აუცილებელია სიბრთხილე, რომელიმე მოცემული ბიტის არამიზანმიმართული კონფიგურაციის შემთხვეაში, მიკროკონტროლერს ექნება გარკვეული პრობლემები მუშაობის დროს. მაგალითად EESAVE ბიტის დაპროგრამებით (0-ის ჩაწერით) მიუწვდომელი გახდება EEPROM-ის პროგრამირება, რაც რათქმაუნდა არარის სასურველი და აუცილებლობაც ნაკლებია, რომ როდისმე დაგჭირდეს მოდემული ფუქცია. SELFPRGEN ბიტის დაპროგრამებით (0-ის ჩაწერით) შესაძლებელი ხდება მიკროკონტროლერისთვის თვითპროგრამირების ფუნქციის ამოქმედება, ანუ გარკვეული ბრძანებებით შესაძლებელია ავტომატურად მოხდეს პროგრამულ მეხსიერებიდან კოდის ატვირთვა და ჩამოტვირთვა. WDTON ბიტი გამოიყენება Watchdog ტაიმერის ჩასართავად, მოცემული ბიტის დაყენების შემდეგ (0-ის ჩაწერით), Watchdog ტაიმერი იქნება მუდმივად ჩართული და გარკვეული პროგრამული კოდის არარსებობის შემთხვევაში, მიკროკონტროლერის დარესეტება (ჩამოიყრა) მოხდება მუდმივათ რაიმე პერიოდით. BODLEVEL ბიტები შედარებით უწყინარია, მოცემული სამი ბიტით ხდება მითითება თუ კვების ძაბვის (Vcc) რომელ დონეზე მოხდეს Brown_out რესეტი.
BODLEVEL2..0 | VCC |
---|---|
111 | Brown-out დეტექტორი გაუქმებულია |
110 | 1.8ვ |
101 | 2.7ვ |
100 | 4.3ვ |
ყველაზე ხშირად გამოიყენება Low ბიტების კონფიგურაცია, რადგან სწორედ მოცემული ბიტებით ხდება მიკროკოტროლერისთვის მითითება თუ როგორი ტიპის გენერატორი გამოიყენოს ტაქტური იმპულსებისთვის და რა სიხშირეზე იმუშაოს. მაგალითად CKDIV8 ბიტის გაწმენდით (1-ის ჩაწერით), საშუალება გვეძლევა ვამუშაოთ კონტროლერი 1MHz -ზე მეტი ტაქტური სიხშირით. ATtiny2313-ის შემთხვევაში, თავდაპირველათ შიდა გენერატორი (როდესაც ჯერ არ არის გადაპროგრამირებული Fuse ბიტები) მუშაობს 8MHz ტაქტურ სიხშირეზე. ამასთან ერთად ასევე დაპროგრამებულია CKDIV8 ბიტი, რითაც ხდება ტაქტური სიხშირის გაყოფა 8ჯერ. შედეგათ ვიღებთ მიკროკონტროლერის ტაქტურ სიხშირეს 1MHz-ს. ამიტომ თუ გვინდა რომ კონტროლერი ვამუშაოთ 1MHz-ზე მეტი ტაქტური იმპულსებით, პირველრიგში სწორედ მოცემული ბიტი უნდა გავწმინდოთ (ჩავწეროთ 1-იანი).
SUT (Select start-up time) ბიტებით ხდება მიკროკონტროლერის ჩატვირთვის დრიოს შერჩევა.
CKOUT ბიტის დაყენებით საშუალება ვეძლევა კონტროლერის ერთ-ერთ პინზე გამოვიყვანოთ ტაქტური იმპულსები.
Fuse ბიტებიდან ველაზე ხშირად კომფიგურირებადი CKSEL ბიტებია, სწორედ მოცემული ბიტებით ხდება ტაქტური იმპულსების გენერატორის სიხშირის განსაზღვრა და გარე ტაქტური იმპულსების გენერატორისთვის, კვარცული ან კერამიკული რეზონატორის თუ RC გენერატორის მითითება.
გენერატორს ტიპი და ტაქტური სიხშირე | CKSEL3..0 |
---|---|
გარე ტაქტური პიმულსების წყარო | 0000 |
4MHz-იანი შიდა RC გენერატორი | 0010 |
8MHz-იანი შიდა RC გენერატორი | 0100 |
Watchdog გენერატორი 128kHz | 0110 |
გარე კვარცული გენერატორი / კერამიკული რეზონატორი | 1000 – 1111 |
რეზერვირებული | 0001/0011/0101/0111 |
დასასრულს ავღნიშნოთ, რომ კონფიგურაცია ყოველთვის კარგი იქნება თუ დატაშიტის მიხედვით მოხდება, გარდა ამისა არსებობს Fuse ბიტების რამოდემიმე კალკულატორი მაგლითად AVR Fuse Calculator რაც საკმაოდ კარგი დამახმარე საშუალებაა სხვადასხვა ტიპის პროგრამა პროგრამატორების გამოყენების დროს (მაგ. PonyProg, avrdude).
დამხმარე რესურსები
1. Fuse-биты – это не страшно.
2. Connecting External Crystal Oscillator to Atmega
3. Starting out with avrdude
4. ATtiny2313 Datasheet
Leave a Comment » | AVR, Microcontroller | Tagged: attiny2313, AVR Fuse Calculator, ატმეგა, პროგრამატორი, ტაქტური გენერატორი, fuse, Fuse ბიტები, ponyprog | Permalink
Posted by scienceasm
Онлайн калькулятор фьюзов
Есть ли в Arduino какие-либо програмные средства для установки fuse-битов? Ну а если нет, то где можно вручную править фьюзы? Прошло время и данный вопрос стал очевидным. Пользуясь возможностью править старые сообщения дошли руки ответить самому себе, спустя почти 2 года. Сам я не пробовал изменять фьюзы, но видел здесь делали бутлоадер для меги8 на внутреннем RC генераторе.
Поиск данных по Вашему запросу:
Онлайн калькулятор фьюзов
Схемы, справочники, даташиты:
Прайс-листы, цены:
Обсуждения, статьи, мануалы:
Дождитесь окончания поиска во всех базах.
По завершению появится ссылка для доступа к найденным материалам.
Содержание:
- Щось пішло не так 🙁
- 068-Как правильно прошить AVR фьюзы (fuse bit).
- Калькулятор фьюзов AVR fuses calculator
- Калькулятор фьюзов avr скачать
- Калькулятор фьюзов AVR
- ATmega128, ATmega128L
- Калькулятор фьюзов AVR на русском языке. — Форум
- Что такое Fuse и Lock биты в AVR микроконтроллере, как с ними работать
- roboforum.ru
- Установка фьюзов программно?
ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: Atmega8 Прошивка Фьюзов
Щось пішло не так 🙁
Написал небольшое Android приложение для AVR разработчиков. Оно позволяет рассчитывать значения регистров некоторых аппаратных модулей AVR микроконтроллеров, необходимых для задания их конфигурации. Приложение интуитивно понятное и не требует каких-либо инструкций по применению, если вы работаете с AVR и понимаете о каких регистрах идет речь.
Приложение бесплатное, без рекламы. AVR Calculator. Ссылка AVR Calculator. Tagged under avr calculator. С возвращением!!! Pashgan Привет, Коль. Ждем новых статей!!! Какие планы? Pashgan По сайту никаких планов пока нет.
Есть несколько переводов статей, но их надо доделывать. Pashgan Сайт и так живет, пока я плачу за домен и хостинг. Vit А вруг Прощай сайт? Может на всякий случай куда нибудь выложить бэкап сайта.
Много полезных материалов тут собрано. MSO Здравствуйте! Калькулятор — это хорошо. Но, может быть, не стОит, чтобы баннер мозолил глаза, находясь в верхней части? Попытка заработать не осуждается, но разумный автор программы не станет делать так, чтобы его приложение сносили из-за того, что «прямо в глазу» торчит мелькающий баннер, а не то, что тебе нужно. Маленький совет Спасибо за понимание! Частота дрыгания ножкой Герц? Pavel Еще бы калькулятор фьюзов!!!
САБ Никогда не понимал писателей подобных калькуляторов. И если мне понадобится изменить скорость или частоту работы таймера — я изменю соответствующий define вместо того, чтобы искать калькулятор, а потом искать в программе все места, куда нужно вставить магические цифры из этого калькулятора. AGE Совершенно того-же мнения, но что-то мне подсказывает что Павел тренировался на кошках в деле андродописатель ства, так что не будем огульно кидаться помидорами.
Pashgan Так и есть. Тренировался на кошках. Попробовал использовать ваш калькулятор. Получить в таком режиме меандр произвольной частоты не получится. Хочу отметить, что при использовании внутреннего RC-генератора на выходе было Гц. С использованием внешнего кварца частота стала идеально точной. Алексей33 Да приложение это хорошо, но реклама всё таки его портит.
Я пользуюсь html версией калькулятора и мне очень он нравится. Jojo Там уже нет рекламы. Refresh comments list RSS feed for comments to this post.
068-Как правильно прошить AVR фьюзы (fuse bit).
Выбор микроконтроллера. Выберите контроллер. FUSE калькулятор calculator. FUSE калькулятор.
Рассматривается назначение фьюзов микроконтроллеров AVR, устанавливаемых при прошивании, Ссылка на Онлайн калькулятор фьюзов: http.
Калькулятор фьюзов AVR fuses calculator
Отправить комментарий. Что такое Фьюзы. Чтение и запись фьюзов Ардуино. Данный бит отвечает за деление тактовой частоты на 8. Он определяет начальное значение регистра делителя частоты: если бит не запрограммирован, то регистр делителя будет сброшен в «»; если бит CKDIV8 запрограммирован, то в регистре будет установлено значение «», что обеспечит деление тактовой частоты на 8. Однако вне зависимости от значения фьюза CKDIV8 значение делителя может быть изменено программой в любой момент. Данная функция может быть полезна при использовании таковой частоты микроконтроллера внешними устройствами. При использовании делителя системной частоты на вывод CLKO также будет поступать пониженная частота. Современные микроконтроллеры способны работать с различными источниками тактового сигнала.
Калькулятор фьюзов avr скачать
RU www. В таблице fuse -биты популярных AVR. С лева названия fuse -битов по даташиту, в первых двух строках перечислены семейства и типы конкретных МК, а на пересечении строк и столбцов стоит знак плюс , если данный fuse -бит имеется в данном МК, или указано название , отличное от стандартного. Если какой-то бит отсутствует — в соответствующей клетке ничего нет.
Но, судя по большому количеству вопросов от читателей, тема не раскрыта полностью.
Калькулятор фьюзов AVR
Мы принимаем формат Sprint-Layout 6! Экспорт в Gerber из Sprint-Layout 6. Тогда тебе в помощь высоковольтное программирование через паралельный программатор. Обьясните подробней какие фьюзы вы прошили!!! То что вы написал — я провери на калькулятору и у меня получилось что вы включил внешний кварц 3 аж 8 Мгц
ATmega128, ATmega128L
В настоящее время, все больше людей, интересующихся электроникой, и конструирующих самостоятельно различные устройства, собирают устройства с применением микроконтроллеров. Даже начинающие, рано или поздно приходят к мысли, о необходимости их изучения, потому — что за ними будущее. Из наиболее широко распространенных, и относительно простых для изучения, по крайней мере, относительно других МК, могу назвать микроконтроллеры PIC и AVR. По микроконтроллерам AVR, семейств Mega и Tiny, есть много информации в интернете, и огромное количество готовых схем и прошивок для них. Это очень легкий в сборке программатор, не содержит дефицитных деталей, не требует наладки, и собрать его может даже школьник. Главным недостатком его является то, что для его подключения к компьютеру необходим СОМ порт, который часто отсутствует на современных компьютерах.
Чтобы безопасно работать с фьюзами, в адаптере предусмотрены все источники имеет ссылку на онлайн калькулятор фьюзов и позволяет изменить.
Калькулятор фьюзов AVR на русском языке. — Форум
Онлайн калькулятор фьюзов
Войти или зарегистрироваться. Искать только в заголовках Сообщения пользователя: Имена участников разделяйте запятой. Новее чем: Искать только в этой теме Искать только в этом разделе Отображать результаты в виде тем.
Что такое Fuse и Lock биты в AVR микроконтроллере, как с ними работать
ВИДЕО ПО ТЕМЕ: Fuse-bit-doctor и нет проблем.
Попробовал нажимать Chip Erase, затем залил прогу, прошил фьюзы, проверил в устройстве, результат- ноль, фьюзы вроде выставил верно. Теперь распишем названия некоторых фьюзов, их обозначения и то, на что они влияют. Восстановить их работоспособность и вернуть к жизни может лишь параллельный программатор. Будьте внимательны — неправильная установка некоторых бит сделает невозможным дальнейшее использование микроконтроллера.
Запросить склады.
roboforum.ru
Любой новичок при программировании микроконтроллеров Атмел слышал про установку фьюзов и про большие опасности, которые ждут, если галочку не там поставить. Вообще фьюзы это самое дебильное наследство микроконтроллеров родом конца прошлого века, когда фьюзы имели вид пережигаемых перемычек. Поэтому снятая галочка бита фьюза равняется единице, что не очень логично. Правда не во всех программах они одинаковы — у некоторых прошивальщиков фьюзы отображаются в инверсном виде снятая галочка — ноль что вносит еще больше неразберихи. Для просмотра и настройки байтов конфигурации микроконтроллеров я советую пользоваться онлайн калькулятором: homes-smart. Можно делать наоборот: выставить например байт конфигурации и посмотреть получившиеся строчки. В интернете есть выбор онлайн калькуляторов, можно подобрать себе по вкусу, погуглив фразу «онлайн калькулятор фьюзов».
Установка фьюзов программно?
Добро пожаловать, Гость. Логин: Пароль: Запомнить меня. Забыли пароль? Забыли логин?
AVR Tutorial — Fuses
Предохранители являются чрезвычайно важной частью программирования чипа, но редко подробно объясняются. Вам нужно установить их только один раз, но если вы не сделаете это правильно, это катастрофа!
Комментарии? Предложения? Пишите на форум!
Вы знаете о flash, eeprom и RAM как о частях чипа. Чего я не упомянул, так это того, что есть также 3 байта постоянного (под постоянным я подразумеваю, что они остаются после отключения питания, но вы можете менять их столько раз, сколько хотите) хранилища, называемого предохранителями. Предохранители определяют, как будет действовать чип, есть ли у него загрузчик, на какой скорости и напряжении он предпочитает работать и т. д. Обратите внимание, что, несмотря на то, что они называются «предохранителями», они переустанавливаются и не имеют ничего общего с защитой от перегрузки. (как предохранители в доме).
Предохранители задокументированы в таблицах данных, но лучший способ изучить предохранители — это посмотреть на калькулятор предохранителей, такой как калькулятор предохранителей avr из проекта palmavr
Щелкните эту ссылку в новом окне и выберите ATtiny2313 для расчетов предохранителей
Мы будем использовать быструю настройку, поэтому используйте эти меню, а не флажки
Первый вариант — это то, как чип тактируется. Каждый ЦП использует часы. Часы отслеживают время для чипа, как правило, одна инструкция ассемблерного кода запускается каждый такт. В вашем ПК часы работают на частоте 1 ГГц или выше. Этот маленький чип работает намного медленнее. Если вы посмотрите на меню, то увидите огромный список опций, но присмотревшись, вы увидите две группы: Источник тактовой частоты , Запуск тактовой частоты
Источник тактовой частоты может быть одним из следующих:
Внешняя тактовая частота, внутренняя тактовая частота 8 МГц, внутренняя тактовая частота 4 МГц, внутренняя тактовая частота 128 кГц, внешний кристалл (0,4–0,9 МГц), Внешний кристалл (0,9–3,0 МГц), Внешний кристалл (3,0–8,0 МГц) или Внешний кристалл (8,0 МГц +)
Clock Startup может быть одним из следующих:
14CK + 0 мс , 14CK + 4 мс, 14CK + 65 мс .
Внешние часы означает, что прямоугольная волна подается на контакт CLOCK-IN . Это довольно редко, если у вас нет чипа, генерирующего часы. Не используйте это, если вы не уверены, что имеете в виду
Internal Clock означает, что внутри чипа есть небольшой генератор, он не очень точный, но подходит для большинства проектов, у которых нет проблем с синхронизацией. Часы меняются в зависимости от температуры и напряжения питания. Вы можете выбрать тактовую частоту 8 МГц, 4 МГц или 128 кГц. Тактовая частота 128 кГц предназначена для приложений с очень низким энергопотреблением, где очень медленная работа чипа помогает экономить энергию. Наличие внутреннего генератора означает, что нам не нужно подключать кварцевый кристалл, и мы можем использовать тактовые контакты для своих гнусных целей.
Внешний кварц
Если вам нужна особая тактовая частота, например 3,58 МГц или 12 МГц, или высокоточные часы, которые не будут дрейфовать при изменении температуры, вам понадобится внешний кварц или осциллятор.
Кристаллы выглядят примерно так: Керамические генераторы выглядят так:
Кристаллы бывают разных упаковок, они могут быть цилиндрическими или больше, чем показано на изображении. В обоих случаях скорость указана сверху или сбоку, почти всегда в МГц.
Startup Time — это время, в течение которого источник тактовых импульсов должен успокоиться с момента первого включения питания. Всегда используйте самую длинную настройку 14CK + 65 мс , если вы точно не знаете, что вашему источнику синхронизации требуется меньше времени, а 65 мс слишком долго ждать.
По умолчанию микросхемы, которые поставляются с завода, имеют внутреннюю тактовую частоту 8 МГц с 14CK + 65 мс при запуске.
Следующая опция — Clock Out on PortD2 , что означает, по сути, что каким бы ни был тактовый вход (внутренний, внешний, кварцевый и т. д.), прямоугольная волна той же частоты появится на контакте 9.0011 Д2 . Это полезно, если вы отлаживаете тактовую частоту или хотите использовать часы для управления другим чипом.
По умолчанию чипы, которые поставляются с завода, отключены.
Этот предохранитель заставляет чип делить тактовую частоту на 8. Таким образом, если в качестве источника тактовой частоты установлено значение Internal 8MHz и у вас установлен этот предохранитель, то вы действительно будете работать на частоте 1 МГц.
По умолчанию на заводских чипах эта функция включена.
Этот предохранитель включает Сбросить пин в обычный пин вместо специального. Если вы включите этот предохранитель, вы больше не сможете программировать чип, используя ISP . Я бы посоветовал вам никогда не устанавливать этот предохранитель, если вы действительно не хотите этого.
По умолчанию в микросхемах, которые поставляются с завода, эта функция отключена (то есть включен сброс). «Отключение» в этом случае похоже на перегрузку энергосистемы из-за того, что летом тысячи людей включают свои кондиционеры: напряжение падает, и ваши радиочасы могут перестать работать. Падение напряжения для чипа означает, что напряжение питания слишком низкое для его надежной работы с тактовой частотой.
Например, attiny2313 может работать так же быстро на частоте 20 МГц, но только при напряжении питания от 4,5 В до 5,5 В. Если напряжение ниже этого значения, он может работать нестабильно, стирая или перезаписывая ОЗУ и ЭСППЗУ. Также может запуститься случайный фрагмент программы flash. Чтобы этого не произошло, установите напряжение отключения на 4,3 В, тогда, если напряжение упадет, чип выключится, пока напряжение не вернется. Затем он перезагрузится и начнется заново.
Если микросхема предназначена для работы при напряжении 5 В, установите параметр снижения напряжения на 4,3 В. Если микросхема может работать при напряжении до 3,3 В, вы можете установить снижение напряжения до 1,8 В. Если чип является чипом, совместимым с низким напряжением, таким как attiny2313V (который может работать до 1,8 В, если его тактовая частота составляет 4 МГц или меньше), вы можете установить снижение напряжения до 1,8 В. Вы можете прочитать классы скорости и напряжения на первой странице таблицы данных.
По умолчанию чипы, которые поставляются с завода, не имеют функции обнаружения отключения питания, однако я предлагаю вам установить ее, если вы можете. Если у вас есть загрузчик или вы храните данные в EEPROM, вы должны установить BOD!
текст
Установка битов предохранителей AVR
Все мы знаем о том, как тактируется чип AVR ATmega32A. Во всех наших предыдущих уроках мы использовали внутреннюю тактовую частоту 1 МГц для управления чипом AVR. Это настройка часов по умолчанию, с которой микросхема ATmega поставляется с завода. В этом уроке мы научимся настраивать биты предохранителей AVR для использования разной тактовой частоты для различных приложений. Это важно там, где нам требуется очень точная и точная синхронизация, например, для реализации последовательного UART, связи USB. У нас есть предохранительные биты в микроконтроллерах AVR. Мы можем использовать эти фьюз-биты для тактирования микроконтроллера с желаемой частотой.
Давайте сначала разберемся с основной концепцией и идеями, связанными с настройкой источника тактового сигнала (внутреннего или внешнего). Я настоятельно рекомендую открыть техническое описание ATmega32A (или любого вашего микроконтроллера) на время работы с этим руководством и кратко просмотреть главу о системных часах и параметрах часов (стр. 25). Нажмите здесь, чтобы просмотреть техническое описание ATmega32A.
Что такое плавкие биты AVR?
Как мы все знаем, микроконтроллер AVR имеет три области памяти: FLASH, которая предназначена для программного кода, SRAM для переменных времени выполнения и EEPROM, которая может использоваться пользовательским кодом для хранения данных, которые должны быть сохранены. когда MCU выключен. Теперь замок/предохранители вместе образуют четвертую область памяти, доступную для программирования. Это содержит несколько байтов для предохранителей: младший байт, старший байт.
Прежде чем мы начнем анализировать биты фьюза и блокировки. Мы должны помнить, что бит, установленный в «0», означает, что он запрограммирован, а бит, установленный в «1», означает, что он не запрограммирован. Это немного сложно и очень важно отметить, прежде чем мы продолжим.
В этом уроке мы хотим показать, как можно синхронизировать микроконтроллер с разной частотой (настройка фьюз-битов avr). Обычно имеется только два байта предохранителя: старший и младший. Мы больше сосредоточимся на его использовании. Практический пример в этом руководстве позволит вам полностью понять концепцию, и вы будете готовы к дальнейшим экспериментам самостоятельно. Мы рассмотрим биты блокировки в следующем уроке. Расположение конкретных фьюз-битов различается среди всех фьюз-байтов в зависимости от используемой микросхемы AVR. Поэтому обязательно запишите их перед установкой. В качестве примера возьмем микроконтроллер ATmega32A и вот все байты фьюза для него.
Low Fuse Byte-AVRHigh Fuse Byte-AVRЗначение по умолчанию для бита предохранителя ATmega32/32A равно 0x99E1, т. е. старший предохранитель: 0x99 и низкий предохранитель: 0xE1, при этой настройке по умолчанию частота установлена на 1 МГц, внутренний RC-генератор, время запуска: 6CK+64ms:
Отказ от ответственности: Это руководство предназначено для информационных целей; делайте настройки фьюзов на свой страх и риск.
Объяснение каждого бита предохранителя:
BODLEVEL: С помощью этого бита предохранителя можно выбрать уровень срабатывания BOD (обнаружение отказа). Когда запрограммировано (0), уровень запуска составляет 4 В, а когда не запрограммирован (1), уровень запуска составляет 2,7 В.
BODEN: ATmega32A имеет встроенную схему обнаружения пониженного напряжения (BOD) для контроля уровня VCC во время работы путем сравнения его с фиксированным уровнем срабатывания. Когда BOD включен (запрограммирован BODEN) и VCC снижается до значения ниже уровня срабатывания, немедленно активируется сброс по отключению питания. Когда VCC увеличивается выше уровня запуска, он снова запускает микроконтроллер.
SUT1:0: Эти биты выбирают время запуска. Значение по умолчанию SUT1:0 приводит к максимальному времени запуска (6CK и дополнительная задержка 65 мс после RESET [см. таблицу: 8-9)., стр. №: 30].
CLKSEL [3-0]: Эти биты используются для выбора различных доступных параметров синхронизации. Значение по умолчанию CLKSEL[3..0] равно 0001, т.е. внутренний RC-генератор работает на частоте 1 МГц. Если вы хотите добавить внешний кварц, вам необходимо изменить значение в соответствии с [Таблица 8-1, страница №:26]. Некоторые общие значения фьюз-битов приведены в конце этой статьи.
OCDEN: Этот контакт используется для включения или отключения встроенной отладки. Это позволяет эмулировать работу микроконтроллера в реальном времени в целевой системе. По умолчанию он отключен, так как «1» означает, что он не запрограммирован.
JTAGEN: Встроенные интерфейсы JTAG для отладки. Он включен в новом микроконтроллере. По этой причине некоторые новички говорят: «PORTC ATmega32 не работает должным образом», отключите его, если вы не используете JTAG, установив JTAGEN бит 1 (высокий).
SPIEN: Значение 0 (запрограммировано) означает, что последовательное программирование ATmega32/32A разрешено. Не изменяйте это, если у вас нет параллельного программатора! Потому что однажды отключенный ATmega32A не может быть запрограммирован с помощью последовательного программатора.
CKOPT: Предохранитель CKOPT выбирает один из двух разных режимов усилителя генератора. Когда CKOPT запрограммирован, выход генератора будет колебаться с полным размахом от рельса к рельсу на выходе. Когда он не запрограммирован, осциллятор имеет меньший выходной размах. Если вы используете внешний генератор, лучше запрограммировать CKOPT, т.е. CKOPT = 0
EESAVE: Если запрограммировано (0), это сохранит EEPROM от стирания во время стирания чипа, иначе EEPROM также будет стерт флэш-памятью.
BOOTSZ0 и BOOTSZ1: Эти биты используются для установки размера загрузчика.
Пример: установка битов предохранителя AVR
Теперь вы готовы синхронизировать микроконтроллер с разными частотами. В этом примере мы будем генерировать звуковой сигнал с помощью пьезодиска. И влияние будет показано с точки зрения изменения звуковых сигналов. Давайте посчитаем фьюз-биты для разных тактовых частот. Вот замечательная программа для расчета фьюз-битов для вас AVR Fuse Calculator
Случай 1: 1 МГц Внутренние часы (по умолчанию), Низкий предохранитель: 0xe1 Высокий предохранитель: 0x99
Случай 2: 8 МГц Внутренние часы, . Случай 3: Внешний кристалл 16 МГц, Low Fuse: 0xFF High Fuse: 0x99 Мы надеемся, что это руководство поможет вам разобраться в предохранителях AVR. Мы рекомендуем вам поиграться с чипом AVR, чтобы сжечь предохранители и увидеть последствия.