FUSE-биты
RESERVED — этот бит зарезервирован
для каких-то неизвестных простым смертным целей
фирмой Atmel. Ни при каких условиях не рекомендуется менять его состояние (т. е. надо оставлять его таким, как он установлен при изготовлении МК).В этой строке встречаются биты с другими названиями, как правило, это биты
включения режима совместимостис устаревшими типами
МК, на смену которым выпущены новые. Обычно в конце названия такого fuse-бита
имеется символС — от COMPATIBLE (совместимый).
OCDEN — fuse разрешает работу схемы внутреннего отладчика (On Chip Debug ENable). Не оставляйте установленным этот бит в коммерческих продуктах! Иначе вашу программу можно будет считать из памяти МК.
JTAGEN — fuse бит разрешает работу интерфейса программирования-отладки JTAG. По сравнению с SPI-интерфейсом,JTAG обладает расширенными возможностями. Не рекомендуется без необходимости оставлять этот бит установленным, т. к.в этом случае потребляемый МК ток возрастает.
SELFPRGEN — бит, разрешающей программе МК производить запись в память программ, т. е. производить самопрограммирование.
DWEN — fuse бит, разрешающий работу DebugWire - это интерфейс отладки по одному проводу. Не рекомендуется оставлять его установленным в коммерческих изделиях.
EESAVE — fuse бит, после установки которого при стирании памяти МК содержимое EEPROM данных будет сохраняться нетронутым, т. е. не будет стерто.
SPIEN — fuse бит, разрешающий работу интерфейса внутрисхемного программирования МК по SPI. Этот бит может быть легко переустановлен при помощи параллельного программатора (или JTAG, если таковой разрешен и имеется в МК).Все МК выпускаются с установленным битом SPIEN, снять его по интерфейсу SPI невозможно.
WDTON — fuse бит, после установки которого сторожевой таймер WDT включается сразу после подачи питания и не можетбыть отключен программно. Если бит не установлен, то включением и отключением WDT можно управлять программно.
Группа fuse битов BODLEVEL. Может быть либо один такой бит, либо несколько, тогда они нумеруются, начиная с нуля.Значение этих fuse битов определяет порог срабатывания схемы BOD — детектора уровня питающего напряжения, при снижении напряжения питания ниже этого уровня произойдет "сброс" МК.
BODEN — fuse бит, включающий схему аппаратного детектора недопустимого уровня
питающего напряжения, т.е. схему BOD.
RSTDISBL — fuse бит, отключающий сигнал внешнего сброса от вывода микроконтроллера и подключающий к нему схему порта ввода-вывода. Этот бит имеется только в тех МК, у которых вывод аппаратного сброса RESET совмещен с одинмиз портов ввода-вывода. Ошибочная установка этого fuse бита может отключить RESET и вы не сможете больше прошивать по ISP. Не устанавливайте этот бит, если намерены продолжать работать с МК при помощи последовательных программаторов. "Оживить" МК с установленным RSTDISBL можно только параллельным программатором и не для всех МК.
CKDIV8 — fuse бит, включающий предварительное деление частоты кварцевого (или иного имеющегося) тактового генератора на 8. То есть при включенном этом бите и применении кварцевого резонатора на 8 МГц реальная тактовая частота МК составит 1 МГц.
CKOUT — fuse бит, разрешающий вывод тактовой частоты на один из выводов МК (для тактирования других устройств).
SUT1 и SUT0 — fuse биты, управляющие режимом запуска тактовых генераторов МК. Связаны с нижеописываемыми битами, определяющими тип и частоту тактового генератора, причем связь весьма хитрая и запутанная. При ошибочной их установкивозможны ситуации неустойчивого запуска генератора или неодногратного сброса МК в процессе подачи на него питания.
CKOPT — бит, определяющий режим работы встроенного генератора тактовой частоты для работыс кварцевыми резонаторами. Реально изменяет коэффициент усиления встроенного инвертора в схеме генератора и значит выходное напряжение на ножке XTAL2. Ошибочная установка может приводить к неустойчивому запуску кварцевого генератора, вплоть до возбуждения его не на той гармонике, что надо (из-за этого бита кварц запускался или только при питании МК напряжением не выше 3,6В, или только после прикосновения к выводу XTAL1 пинцетом)
Группа битов CKSEL0…CKSEL3 — fuse биты, комбинация которых определяет тип и частоту работающего тактового генератора. Всего возможно до 16 комбинаций, однако не все определены для всех типов МК. Ошибочная установка комбинации этих битов может сделать МК «мертвым» — он не будет работать в схеме без подачи тактового сигнала на ножкуXTAL1.
PLLCK — fuse бит, разрешающий использование встроенного синтезатора частоты для тактирования ядра МК.
BOOTRST — fuse бит, определяющий адрес, с которого будет начато исполнение программы после сброса — если бит установлен, то начало программы будет не с адреса 0000h (как обычно), а с адреса области загрузчика (Boot Loader).
Группа fuse битов BOOTSZ — два fuse бита, определяющие размер области памяти программ, выделяемой для загрузчика (Boot Loader). Комбинация этих битов, в частности, определяет точку начала исполнения программы после сброса, если установлен бит BOOTRST.
Выбор способа тактирования производится установкой соответствующих установочных битов (fuse bits)CKSEL0...CKSEL3 при программировании микросхемы. Эти установочные биты управляют также задержкой включения микроконтроллера после выхода из состояния ожидания. В таблице 1 приведены варианты установок этих битов.
Таблица 1
Такое многообразие возможностей подчас приводит к курьезам. Известно, к сожалению, что не все разработчики внимательно читают технические описания на новые микросхемы, что приводит к неверным действиям при программировании микросхем и необходимости исследования проблемы «а почему микросхема не работает».
Типичная ошибка — неверная установка битов CKSEL0...CKSEL3. В случае установки этих битов «в нули» (0000) микросхема переходит в режим работы от внешнего генератора. Таким образом, даже подключенный кварцевый или пьезорезонатор не «запускает » микросхему. Единственный выход «оживить» микроконтроллер — подать на вывод XTAL1 внешние импульсы с частотой 0,5 –16 МГц, не выпаивая его из схемы, и правильно переустановить биты CKSEL0...CKSEL3.
В этом случае можно:
а. Перепрограммировать микроконтроллер в нужный режим на параллельном программаторе или через интерфейс JTAG.
б. Понизить тактовую частоту интерфейса SPI при программировании.
в. Подать внешний тактовый сигнал (частота 1..4МГц, через резистор сопротивлением в 0.33-0.51кОм) на вывод XTAL1 и перепрограммировать контроллер через интерфейс SPI.
Ситуация неработоспособности устройства также может возникнуть при ошибочном программировании режима работы встроенной системы контроля напряжения питания (программирование уровня срабатывания на 4Б при использовании меньшего напряжения питания).
Попутно следует отметить, что микросхемы поставляются с установочными битами, установленными для работы от встроенного RC-генератора с частотой 1 МГц,т аким образом, простое подключение внешнего кварца не дает ожидаемого эффекта. Встроенный RC-генератор имеет достаточно хорошие характеристики, нестабильность по температуре составляетт 3 –4%в диапазоне –40...+85 °С, нестабильность по питанию в диапазоне от 3,3 до 5,0 В — 4 –5%.
На рис.5 показано начальное, «заводское », состояние установочных битов микросхемы ATmega128.
По официальному "FUSE-исчислению" фирмы Atmel, запрограммированная FUSE-ячейка обозначает наличие в ней ... нуля!
А вот "распрограммированная" ячейка обозначает, что в нее записана единичка. Поэтому нет никакой гарантии, что Вы правильно понимаете, что имели в виду авторы той или иной пограммы-программатора, предлагая "поставить галочку и нажать кнопочку" применительно к FUSE-битам.
На практике эти биты позволяют переключить режимы работы отдельных узлов МК. Почему это нельзя было сделать обычными способами, понять трудно. Ностальгия по пережигаемым перемычкам? Не исключено.
Популярный в народе программатор PonyProg не исключение. При работе с FUSE-битами в этой программе внимательно посмотрите на левый нижний угол соответствующего окна. Там серым по серому написана расшифровка логики. Неснимаемая галочка гласит, что установка галочки в данном окне обозначает запись "0" в соответствующую FUSE-ячейку МК. Следовательно, логика программистов Atmel соблюдена.
Желательно каждый раз перед изменением FUSE-битов предварительно нажимать на кнопочку "Read" и внимательно изучить появившиеся галочки, мысленно превращая их в "нолики" и сверяя со своими задумками. Иначе можно буквально одним кликом мышки загнать МК в такой неописуемый режим работы (в программе проверки на логику нет никакой, пишет что приказано), при котором МК просто-напросто станет недоступен со стороны, то есть неработоспособен. И вывести его из этого режима (какого?) будет затруднительно, поскольку не будет никакой возможности узнать состояние МК.
OCDEN — fuse разрешает работу схемы внутреннего отладчика (On Chip Debug ENable). Не оставляйте установленным этот бит в коммерческих продуктах! Иначе вашу программу можно будет считать из памяти МК.
JTAGEN — fuse бит разрешает работу интерфейса программирования-отладки JTAG. По сравнению с SPI-интерфейсом,JTAG обладает расширенными возможностями. Не рекомендуется без необходимости оставлять этот бит установленным, т. к.в этом случае потребляемый МК ток возрастает.
SELFPRGEN — бит, разрешающей программе МК производить запись в память программ, т. е. производить самопрограммирование.
DWEN — fuse бит, разрешающий работу DebugWire - это интерфейс отладки по одному проводу. Не рекомендуется оставлять его установленным в коммерческих изделиях.
EESAVE — fuse бит, после установки которого при стирании памяти МК содержимое EEPROM данных будет сохраняться нетронутым, т. е. не будет стерто.
SPIEN — fuse бит, разрешающий работу интерфейса внутрисхемного программирования МК по SPI. Этот бит может быть легко переустановлен при помощи параллельного программатора (или JTAG, если таковой разрешен и имеется в МК).Все МК выпускаются с установленным битом SPIEN, снять его по интерфейсу SPI невозможно.
WDTON — fuse бит, после установки которого сторожевой таймер WDT включается сразу после подачи питания и не можетбыть отключен программно. Если бит не установлен, то включением и отключением WDT можно управлять программно.
Группа fuse битов BODLEVEL. Может быть либо один такой бит, либо несколько, тогда они нумеруются, начиная с нуля.Значение этих fuse битов определяет порог срабатывания схемы BOD — детектора уровня питающего напряжения, при снижении напряжения питания ниже этого уровня произойдет "сброс" МК.
BODEN — fuse бит, включающий схему аппаратного детектора недопустимого уровня
питающего напряжения, т.е. схему BOD.
RSTDISBL — fuse бит, отключающий сигнал внешнего сброса от вывода микроконтроллера и подключающий к нему схему порта ввода-вывода. Этот бит имеется только в тех МК, у которых вывод аппаратного сброса RESET совмещен с одинмиз портов ввода-вывода. Ошибочная установка этого fuse бита может отключить RESET и вы не сможете больше прошивать по ISP. Не устанавливайте этот бит, если намерены продолжать работать с МК при помощи последовательных программаторов. "Оживить" МК с установленным RSTDISBL можно только параллельным программатором и не для всех МК.
CKDIV8 — fuse бит, включающий предварительное деление частоты кварцевого (или иного имеющегося) тактового генератора на 8. То есть при включенном этом бите и применении кварцевого резонатора на 8 МГц реальная тактовая частота МК составит 1 МГц.
CKOUT — fuse бит, разрешающий вывод тактовой частоты на один из выводов МК (для тактирования других устройств).
SUT1 и SUT0 — fuse биты, управляющие режимом запуска тактовых генераторов МК. Связаны с нижеописываемыми битами, определяющими тип и частоту тактового генератора, причем связь весьма хитрая и запутанная. При ошибочной их установкивозможны ситуации неустойчивого запуска генератора или неодногратного сброса МК в процессе подачи на него питания.
CKOPT — бит, определяющий режим работы встроенного генератора тактовой частоты для работыс кварцевыми резонаторами. Реально изменяет коэффициент усиления встроенного инвертора в схеме генератора и значит выходное напряжение на ножке XTAL2. Ошибочная установка может приводить к неустойчивому запуску кварцевого генератора, вплоть до возбуждения его не на той гармонике, что надо (из-за этого бита кварц запускался или только при питании МК напряжением не выше 3,6В, или только после прикосновения к выводу XTAL1 пинцетом)
Группа битов CKSEL0…CKSEL3 — fuse биты, комбинация которых определяет тип и частоту работающего тактового генератора. Всего возможно до 16 комбинаций, однако не все определены для всех типов МК. Ошибочная установка комбинации этих битов может сделать МК «мертвым» — он не будет работать в схеме без подачи тактового сигнала на ножкуXTAL1.
PLLCK — fuse бит, разрешающий использование встроенного синтезатора частоты для тактирования ядра МК.
BOOTRST — fuse бит, определяющий адрес, с которого будет начато исполнение программы после сброса — если бит установлен, то начало программы будет не с адреса 0000h (как обычно), а с адреса области загрузчика (Boot Loader).
Группа fuse битов BOOTSZ — два fuse бита, определяющие размер области памяти программ, выделяемой для загрузчика (Boot Loader). Комбинация этих битов, в частности, определяет точку начала исполнения программы после сброса, если установлен бит BOOTRST.
Выбор способа тактирования производится установкой соответствующих установочных битов (fuse bits)CKSEL0...CKSEL3 при программировании микросхемы. Эти установочные биты управляют также задержкой включения микроконтроллера после выхода из состояния ожидания. В таблице 1 приведены варианты установок этих битов.
Таблица 1
CKSEL3...0 | Источник тактирования | Комментарий |
0000 | Внешняя частота | 0...16 МГц |
0001 | Встроенный RC генератор | 1 МГц |
0010 | Встроенный RC генератор | 2 МГц |
0011 | Встроенный RC генератор | 4 МГц |
0100 | Встроенный RC генератор | 8 МГц |
0101 | Внешний RC генератор | <0,9 МГц |
0110 | Внешний RC генератор | 0,9...3,0 МГц |
0111 | Внешний RC генератор | 3,0...8,0 МГц |
1000 | Внешний RC генератор | 8,0...12 МГц |
1001 | Низкочастотный пьезорезонатор | 32,768 кГц |
101х | Кварцевый резонатор | 0,4...0,9 МГц |
110х | Кварцевый резонатор | 0,9...3,0 МГц |
111х | Кварцевый резонатор | 3,0...8,0 МГц |
Такое многообразие возможностей подчас приводит к курьезам. Известно, к сожалению, что не все разработчики внимательно читают технические описания на новые микросхемы, что приводит к неверным действиям при программировании микросхем и необходимости исследования проблемы «а почему микросхема не работает».
Типичная ошибка — неверная установка битов CKSEL0...CKSEL3. В случае установки этих битов «в нули» (0000) микросхема переходит в режим работы от внешнего генератора. Таким образом, даже подключенный кварцевый или пьезорезонатор не «запускает » микросхему. Единственный выход «оживить» микроконтроллер — подать на вывод XTAL1 внешние импульсы с частотой 0,5 –16 МГц, не выпаивая его из схемы, и правильно переустановить биты CKSEL0...CKSEL3.
В этом случае можно:
а. Перепрограммировать микроконтроллер в нужный режим на параллельном программаторе или через интерфейс JTAG.
б. Понизить тактовую частоту интерфейса SPI при программировании.
в. Подать внешний тактовый сигнал (частота 1..4МГц, через резистор сопротивлением в 0.33-0.51кОм) на вывод XTAL1 и перепрограммировать контроллер через интерфейс SPI.
Ситуация неработоспособности устройства также может возникнуть при ошибочном программировании режима работы встроенной системы контроля напряжения питания (программирование уровня срабатывания на 4Б при использовании меньшего напряжения питания).
Попутно следует отметить, что микросхемы поставляются с установочными битами, установленными для работы от встроенного RC-генератора с частотой 1 МГц,т аким образом, простое подключение внешнего кварца не дает ожидаемого эффекта. Встроенный RC-генератор имеет достаточно хорошие характеристики, нестабильность по температуре составляетт 3 –4%в диапазоне –40...+85 °С, нестабильность по питанию в диапазоне от 3,3 до 5,0 В — 4 –5%.
На рис.5 показано начальное, «заводское », состояние установочных битов микросхемы ATmega128.
По официальному "FUSE-исчислению" фирмы Atmel, запрограммированная FUSE-ячейка обозначает наличие в ней ... нуля!
А вот "распрограммированная" ячейка обозначает, что в нее записана единичка. Поэтому нет никакой гарантии, что Вы правильно понимаете, что имели в виду авторы той или иной пограммы-программатора, предлагая "поставить галочку и нажать кнопочку" применительно к FUSE-битам.
На практике эти биты позволяют переключить режимы работы отдельных узлов МК. Почему это нельзя было сделать обычными способами, понять трудно. Ностальгия по пережигаемым перемычкам? Не исключено.
Популярный в народе программатор PonyProg не исключение. При работе с FUSE-битами в этой программе внимательно посмотрите на левый нижний угол соответствующего окна. Там серым по серому написана расшифровка логики. Неснимаемая галочка гласит, что установка галочки в данном окне обозначает запись "0" в соответствующую FUSE-ячейку МК. Следовательно, логика программистов Atmel соблюдена.
Желательно каждый раз перед изменением FUSE-битов предварительно нажимать на кнопочку "Read" и внимательно изучить появившиеся галочки, мысленно превращая их в "нолики" и сверяя со своими задумками. Иначе можно буквально одним кликом мышки загнать МК в такой неописуемый режим работы (в программе проверки на логику нет никакой, пишет что приказано), при котором МК просто-напросто станет недоступен со стороны, то есть неработоспособен. И вывести его из этого режима (какого?) будет затруднительно, поскольку не будет никакой возможности узнать состояние МК.