Каждый , кто имел дело с
программированием FUSE-битов (для краткости называют фьюзы), загонял свою
микросхему в глубокий сон. Другими словами неверные действия над фьюзами легко
могут привести к тому, что МК никогда не проснется, либо он будет жив, но
программу в него не зашьешь. Поэтому, большинство любителей электроники просто
игнорируют их. Что же такое фьюзы? FUSE – биты (с англ. Предохранительные биты) - это конфигурационные программируемые биты, которые
определяют дальнейший режим работы МК. Эти биты или ячейки сгруппированы в
несколько байтов: cтарший конфигурационный байт, младший конфигурационный байт
и бывает еще дополнительный конфигурационный байт.
И так вы приступили к
программированию фьюзов, перед вами появились перечень их: BODLEVEL, BODEN, SUT1, SUT0, CKSEL3, CKSEL2, CKSEL1,
CKSEL0, S8515С, WDTON, SPIEN,
CKOPT, EESAVE, BOOTSZ1,BOOTSZ0, BOOTRST, RESERVED, OCDEN, JTAGEN, SELFPRGEN, DWEN, RSTDISBL, CKDIV,
CKOUT,PLLCK. Процесс программирования фьюзов обычно выглядит так:
установка галочки в окошке напротив названия бита. В AVR мегах из этого списка первые 8 бит - младший
конфигурационный байт, вторые 8-бит - старший конфигурационный байт. У каждого
МК свой уникальный набор этих битов, но значения у всех одинаковые. Поэтому, чтобы
все работало у вас верно, ниже привожу значения каждого из этих фьюзов.
BODLEVEL2...0 -
порог срабатывания супервизора питания.
Этот бит предназначены для
задания номинального значения порога срабатывания супервизора питания (BOD). Во
время подачи питания МК удерживается в состоянии сброса до тех пор, пока
напряжение VCC не достигнет запрограммированного порога срабатывания
супервизора BOD. Порог срабатывания супервизора питания, даже если он
неактивен, должен быть установлен ниже уровня VCC.
BODEN- бит, включающий схему аппаратного детектора
недопустимого уровня питающего напряжения, т. е. схему BOD (0 – разрешение, 1-
запрещение). SUT1, SUT0- (STARTUPTIME) служат для определения длительности задержки
сброса. Биты, управляющие режимом запуска тактовых генераторов МК. Связаны с битами,
определяющими тип и частоту тактового генератора. При ошибочной их установки
возможны ситуации неустойчивого запуска генератора или неоднократного сброса МК
в процессе подачи на него питания. Другими словами их используют для задания задержки времени с момента деактивации всех источников сброса и до момента деактивации внутреннего сброса, инициированного счетчиком длительности задержки. Данный счетчик синхронизируется с выхода ULP-генератора частотой 1 кГц.
CKSEL[3..0] – биты определяющие режим тактирования МК, а именно
источник тактового сигнала и его частоту. При неверной установки этих битов ,
МК может не обнаруживаться последовательным программатором. Для выхода из этого
состояния потребуется параллельный программатор. По умолчанию они настроены на работу МК от
внутреннего тактового генератора 1 МГц,
при установки всех битов в единицу, МК будет тактироватся от внешнего
кварцевого резонатора.
WDTON – бит включения и отключения сторожевого таймера/счетчика. (0
– всегда включен. В этом случае программно его не выключить. 1 – может управляется
программно. Имеется ввиду в тексте вашей программы).
SPIEN – бит, который разрешает или запрещает программирования МК
через интерфейс SPI (0 –
разрешено, 1- запрещено). То есть программирование через последовательный программатор.
CKOPT- этот конфигурационный бит выбирает один из
двух режимов усилителя генератора. Если CKOPT запрограммирован, то амплитуда
колебаний выходного сигнала генератора будет ограничена уровнями питания.
Данный режим рекомендуется использовать при высоком уровне окружающих шумов или
при использовании выхода XTAL2 в качестве источника синхронизации внешней
схемы. Данный режим характеризуется широким частотным диапазоном. Если CKOPT –
незапрограммирован, то амплитуда выходных колебаний генератора снижается.
Использование данного режима позволяет существенно снизить потребляемую
мощность, но при этом ограничен частотный диапазон и нельзя XTAL2 использовать
для внешней синхронизации. При использовании резонаторов максимальная частота равна 8 МГц, если
CKOPT – незапрограммирован, и 16 МГц, если CKOPT- запрограммирован. Вот еще табличка, которая может быть полезная:
EESAVE – Определяет влияния команды «стирания
кристала» Если установить в 0, то при стирании памяти кристалла, содержимое EEPROM не сотрется. Если 1 – то при
стирании кристалла, вместе с памятью программ и сотрутся все данные EEPROM.
BOOTSZ1, BOOTSZ0 – определяет
размер секции загрузки. Два бита, определяющие размер области памяти программ,
выделяемой для загрузчика (Boot Loader). Комбинация этих битов, в частности,
определяет точку начала исполнения программы после сброса, если установлен бит
BOOTRST. BOOTRST - управление переносом вектора
сброса в загрузочный сектор. Конфигурационный бит BOOTRST программируют при необходимости
переноса вектора сброса в начало загрузочного сектора Flash-памяти. В таком
случае, после сброса МК, выполнение программы начнется из загрузочного сектора.
RESERVED или RES– если
встретится этот бит – игнорируйте его. Данный конфигурационный бит является резервными и всегда считывается с нулевыми значениями. Для совместимости с будущими микроконтроллерами, при записи в этот регистр, в данные биты необходимо всегда записывать нули.
OCDEN – разрешает
или запрещает внутрисхемную отладку. (0– разрешен, 1– запрещен).
JTAGEN-
разрешение или запрещения использования интерфейса JTAG (0–
разрешен, 1– запрещен).
SELFPRGEN- разрешение самопрограммирования (0– разрешен,
1– запрещен).
DWEN - разрешение или запрещения использования отладочного
интерфейса debagWire (0– разрешен, 1– запрещен).
RSTDISBL - определяет функционирования вывода МК,
совмещенного с аппаратным выводом сброса. (0 – контакт порта ввода/вывода, 1-
вывод сброса)/
CKDIV8 - бит, включающий
предварительное деление частоты кварцевого (или иного имеющегося) тактового
генератора на 8. То есть при включенном этом бите и применении кварцевого
резонатора на 8 МГц реальная тактовая частота МК составит 1 МГц.
CKOUT - бит, разрешающий вывод тактовой частоты на
один из выводов МК (для тактирования других устройств).
PLLCK- использования выходного сигнала схемы ФАПЧ в
качестве тактового. Рисунок 1 А так выглядит установка FUSE- бит в программе PonyProg. Ставим галочку - 0, снимаем галочку -1. Не путать!!!! При программировании наибольшую опасность для МК, при неправильной установки фьюзов вызывают фьюзы CKSEL3..0 и RSTDISBL. Эти фьюзы нужно програмировать с особой внимательностью. Состояния фьюзов не изменяется после выполнения операции "стирания кристала".
Новичкам советую изменять только биты CKSEL3..0. Если не используйте кварц, то и вовсе не стоит что-то изменять. Оставьте заводские настройки. Ну а если подкинули кварц, хотите чтоб ваш МК тактировался частотой свыше 1 МГц, тогда запишите в биты CKSEL3...0 все еденички, что на логике микроконтроллеров означает незапрограммированное состояние.
Есть еще кое какие неудобства при программировании фьюзов: установленным считается fuse-бит, равный нулю, а сброшенным – равный единице. Это связано с общим принципом работы с любой памятью – от ПЗУ до МК – стертая (т. е. чистая) память содержит все единицы, и только нолики могут быть в нее записаны. Никогда не забывайте об этом! Как правило в разных программаторах fuse-биты устанавливаются по разному (галочками, списком или иначе), но всегда и везде ЗАПРОГРАММИРОВАННОМУ состоянию бита соответствует НОЛЬ, а не единица!!!
|