Фьюзы микроконтроллера AVR

Фьюзы используются для настройки микроконтроллеров. Их можно описать как инструментарий для точной настройки различных параметров. В каждом микроконтроллере используется индивидуальный список Фьюзов, допустим, в ATmega8 отсутствует Фьюз CKOUT, но он используется в ATtiny2313. Кстати, подробная информация о фьюзах расписана в справочной документации к микроконтроллерам.

Предназначение и функции фьюзов

Fuse-биты настраивают определенный параметры МК при прошивке и они не доступны для изменения из программного кода МК.

В таблице ниже вы видите Фьюзы наиболее популярные в МК AVR. Слева приведены названия fuse-битов в соответствии со справочной документацией, в первых двух строках указаны семейства и типы МК.

Популярные Фьюзы в микроконтроллерах AVR

RESERVED — этот фьюз зарезервирован для неизвестных целей компанией Atmel. Состояние его менять не советую. В этой строке бывают и Fuse-биты (Ф-Б) с другими названиями, обычно, это биты включения совместимости с устаревшими микроконтроллерами, на смену которым выпущены новые. Часто в конце названия Ф-Б имеется символ С — от латинского слова COMPATIBLE (совместимость).

OCDEN — Ф-Б разрешает работу схемы внутреннего отладчика. Не следует оставлять установленным этот Ф-Б в платных программах! Иначе ее код можно достаточно легко считать из памяти AVR.

JTAGEN — Ф-Б разрешает работу интерфейса отладки JTAG. По сравнению с SPI, JTAG имеет куда более расширенные возможности. Не советую без особой надобности оставлять этот бит установленным, т. к потребляемый контроллером ток увеличивается.

SELFPRGEN — Ф-Б, разрешает программе контроллера осуществлять запись в память программ, т. е. возможна реализация функции самопрограммирования.

DWEN — этот Ф-Б, разрешает работу DebugWire (интерфейса отладки по одному проводу). Не стоит оставлять его установленным в платных продуктах.

EESAVE После установки этого фьюза при стирании памяти, содержимое EEPROM будет сохраняться нетронутым, т. е. не будет стираться.

SPIEN Разрешает работу интерфейса внутрисхемного программирования по SPI. Этот Ф-Б можно легко перезадать при помощи любого параллельного программатора (или JTAG). Все AVR выпускаются с уже установленным битом SPIEN, снять его по интерфейсу SPI нельзя.

WDTON — После установки этого Ф-Б, сторожевой таймер WDT включается сразу после подачи напряжения питания и его нельзя отключить программно. Если он не задан, то включением и отключением WDT можно управлять с помощью программы.

Группа Ф-Б BODLEVEL. Их значение определяет уровень срабатывания схемы BOD, при снижении напряжения питающего МК ниже этого уровня случится "сброс".

BODEN Включает схему аппаратного детектора недопустимого уровня напряжения, т.е. BOD.

RSTDISBL отличает сигнал внешнего сброса от вывода МК и подсоединяющий к нему схему порта ввода-вывода. Этот Ф-Б имеется только в тех AVR, у которых вывод RESET совмещен с одним из портов ввода-вывода. Не правильная установка этого Ф-Б может отсоединить RESET и вы не сможете больше прошить МК по ISP. Не следует устанавливать этот бит, если намерены работать с МК последовательными программаторами.

CKDIV8 Включает предварительное деление частоты на 8, т.е при включенном этом Ф-Б и использовании кварцевого резонатора на 8 МГц реальная частота МК будет 1 МГц.

CKOUT — fuse бит, разрешающий вывод тактовой частоты на один из выводов МК (для тактирования других устройств).

SUT1 и SUT0 — fuse биты, управляют режимом запуска тактовых генераторов контроллера. При ошибочной установке возможны проблемы при запуске генератора или неоднократного сброса микроконтроллера в момент подачи на него напряжения.

CKOPT определяет режим работы генератора тактовой частоты для работы с кварцем. Изменяет коэффициент усиления встроенного инвертора в генераторе и выходное напряжение на выводе XTAL2. Не правильная установка может привести к неустойчивому запуску кварцевого генератора.

CKSEL0…CKSEL3 — Ф-Б, комбинация которых задает тип и частоту тактового генератора. Всего имеется до 16 комбинаций, но не для всех типов AVR. Не правильная установка комбинации может убить МК (он не будет работать без подачи тактового сигнала на вывод XTAL1).

PLLCK — Разрешает использование встроенного синтезатора частоты.

BOOTRST — Определяет адрес, с которого начнется исполнение программного кода после сброса — если Ф-Б установлен, то начало программы будет не с адреса 0000h (как обычно), а с области загрузчика (Boot Loader).

BOOTSZ — Определяют размер памяти программного кода, выделяемой для Boot Loader. Комбинация этих Ф-Б, определяет точку начала запуска программы после сброса, если задан BOOTRST.

В некоторых компиляторах avr fuse устанавливают зеркально. Тут следует понимать, что запрограммированный FUSE=0, а не запрограммированный FUSE=1. Для компиляторов UniProf, Algorithm Builder fuse выставляют по одной схеме, а в CodeVisionAVR, AVR Studio, PonyProg и SinaProg их необходимо выставлять зеркально по отношению к выше перечисленным программам.

Для удобства используются специальные «калькуляторы Фьюзов» - это утилиты-помощники для настройки конфигурации МК. Они интуитивно понятны: в перечне МК нужно выбрать конкретный AVR, затем указать требуемые функции и выставить галочки Фьюз битов.