Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

Глава 5. Подготовка к программированию МКАVR 109 Конфигурационные ячейки (fus е-биты ) В англоязычной инструкции конфигурационные ячейки по традиции называют fuse blts, что не совсем точно отвечает их назначению: fuse в переводе означает «предо­ хранитель», а fusе-биты всего лишь отвечают за начальную конфигурацию кон­ троллера. В русскоязычной среде их часто называют фьюзами. Они задают началь­ ное состояние контроллера и могут быть изменены только с помощью программа­ тора - загруженная программа к ним может иметь доступ только на чтение. Причем наличие загрузчика через последовател�ный порт (Bootloader'a) уже пред­ полагает определенную конфигурацию fusе-битов, при их изменении он может просто не заработать, и именно поэтому в Arduino конфигурационные ячейки дос­ тупны только теоретически, и достаточно сложным путем (через команды загруз­ чика avrdude). Прибегать к этому способу и менять что-то в установках конфигура­ ционных ячеек в Arduino решительно не рекомендуется . «Фьюзьш представляют собой байтовые ячейки обычной памяти EEPROM, с чем и связаны сложности в истолковании их состояния . Ячейка EEPROM по умолчанию находится в состоянии логической единицы, и для перевода в состояние логическо­ го нуля ее надо «запрограммировать» . Сотрудники фирмы Atmel когда-то посчита­ ли терминологию «запрограммированная» (programmed, состояние логического нуля) и «незапрограммированная» (unprogrammed, состояние логической единицы) естественной, в чем жестоко промахнулись, а исправлять задним числом было уже, конечно, поздно. Автор [2] уверяет, что все дело в разнице между мышлением про­ граммистов и электронщиков, - именно первые заварили кашу, интерпретировав programmed как «включено» (In), а unprogrammed как «выключено» (Out), что мо­ жет быть и естественно с точки зрения языка, но обычно в электрике и электронике «включено» все-таки подразумевает логическую единицу, а не наоборот. В результате в одних прошивающих программах отмеченная ячейка (установленная галочка или крестик) означает, что опция «включена» («запрограммирована», т. е . в fusе-бит записывается ноль), а в других, написанных под контролем электронщи­ ков , вся промежуточная терминология игнорируется, и отмеченная ячейка просто означает, что в нее записана единица. В этой ситуации меньше шансов что-то пере­ путать имеет тот, кто не изменяет одной и той же программе прошивки, как автор этих строк. Но иногда приходится переходить .из программы в программу и на этот случай приведем общее правило для всех загрузочных программ без исключения : перед тем, как что-либо менять в конфигурационных ячейках, обязательно загрузите их текущее состояние. Это надо не только для обретения однозначности в вопросе, что означает установленная галочка, но и потому, что иначе вы рискуете записать про­ извольную конфигурацию, пропустив установку тех «фьюзов», которые должны быть установлены для нормальной работы контроллера. Из таких ячеек по крайней мере одна заведомо будет отмечена, как «Запрограмми­ рованная», т. е . находящаяся в состоянии логического нуля. Эта ячейка имеется во всех контроллерах, допускающих последовательное программирование (к тем не­ многим, у которых ее нет, вы все равно доступа через ISР-программатор не имеете),

RkJQdWJsaXNoZXIy MTExODQxMg==