Ревич, Ю.В. Программирование микроконтроллеров 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Р-программатор не имеете),
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==