Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Глава 5. Подготовка к программированию МКАVR 1 15 порога сброса (BODLEVEL = о - уровень 4,0 вольта, BODLEVEL = 1 - уровень 2,7 вольта) . При питании ниже 2,7 вольта эти контроллеры работать не могут. «Фьюз» WDTON - принадлежность всех контроллеров, оснащенных сторожевым таймером WatchDog, т. е. можно считать, что абсолютно всех. Но этот бит обеспе чивает не простое включение-выключение сторожевого таймера, как можно поду мать, исходя из названия . WDTON = 1 (по умолчанию) обеспечивает полную дос тупность к управлению «вотчдогом» из программы, на чем мы подробно остано вимся в главе 14. А вот WDTON = о просто навсегда включит этот таймер в режим периодического сброса по истечении заданного интервала времени (сам интервал можно задавать из программы) . Есть и другие нюансы в использовании этого бита в различных моделях, поэтому здесь только отметим, что в обычных случаях этот бит трогать не надо. Ячейка EESA VE есть в большинстве контроллеров, оснащенных памятью EEPROM (не оснащены ей только некоторые младшие Tiny) . По умолчанию она установлена в единичное состояние и ни на что не влияет, а установка ее в состоя ние нуля защищает EEPROM от стирания в режиме полного сброса контроллера (при подаче команды «Стирание кристалла» перед загрузкой программы). Так вы можете записать в EEPROM, например, серийный номер изделия, индивидуальные калибровочные коэффициенты датчиков и тому подобные данные, меняющиеся от экземпляра к экземпляру, и, выключив стирание EEPROM, сколько угодно менять основную программу без необходимости записывать эти данные каждый раз за ново. Fusе-бит DWEN характерен для контроллеров со встроенным отладочным интер фейсом debugWare (более примитивный аналог JTAG), и просто запрещает или разрешает его работу. По умолчанию работа запрещена (и слава богу, мы туда ла зать не будем) . Не понадобится нам и последний бит у ATtiny23 1 3 , который един ственный оказался в группе Fuse Extended, и у нас тут носит название SPMEM. В других моделях, где он имеется, он может называться SELFPRGEN, в том числе это относится и к более поздним модификациям АТtiny23 1 3 (в «даташите» вы встретите именно его) . Второе название, несмотря на неблагозвучное звучание, логичнее, т. к. этот бит управляет возможностью самопрограммирования ( self programming) . Нам он не понадобится, т. к. мы внутренний загрузчик использовать в наших задачах не будем. А при необходимости записи Boot\oader'a в Mega 8 или в его «ардуиновских» наследников (АTmega 1 68-3 28) этот fusе-бит учитывать не надо, так там он все равно отсутствует. Остановимся на «фьюзах» с рис. 5 . 8 и 5 .9 для контроллеров ATmega8 и ATmega8535 , которые мы не описывали ранее . Во-первых, в этих моделях, как и во многих других Mega, имеется не простой se\f programming, а полномасштабный контроль загрузки в виде fusе-бита BOOTRST и двух битов: BOOTSZO и BOOTSZ1 . Первый из них (при установке в нулевое значение) задает перенос адре са старта выполнения программы после загрузки в начало специальной Ьооt области для размещения загрузчика (Bootloader'a) ближе к концу памяти, а вторые два задают размер этой области (максимально 1 024 байта) .
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==