Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
1 1 6 Часть /. Общие принципы устройства и функционирования Аtте/ АVR ПОДРОБНОСТИ Для нас «фьюзы» управления загрузкой могут иметь значение для понимания, что именно мы делаем , когда загружаем Bootloadeг в контроллер. Значение Fuse High, указанное в . " avr\Ьoards txt для контроллера ATmega328 равно OxDA. Учитывая , что эти биты в нем, как и в ATmega8, являются тремя младшими битами этого байта , получа ем, что BOOTRST = о, а BOOTSZ1 :О = 0 1 . Можем проверить по «даташиту» , что такое сочетание означает перенос старта программы в область загрузки , величина которой равна 51 2 байтов, - столько отнимается от основного массива flаsh-памяти для раз мещения Bootloader'a. И последняя конфигурационная ячейка, также отсутствующая в ATtiny23 1 3 , носит название СКОРТ и выполняет весьма существенные функции . Мы о ней уже упо минали в главе 2 при рассмотрении тактирования - режим по умолчанию («неза программированное» состояние, СКОРТ = 1) предусматривает уменьшение размаха колебаний генератора, за счет чего вроде бы снижается потребление. При частотах, близких к предельной (для ATmega8 и ATmega8535 это 1 6 МГц), СКОРТ необхо димо «запрограммировать», т. е . установить в нулевое состояние, иначе генератор может вовсе не заработать . Потому этот fusе-бит при тактировании от кварцевого резонатора вообще рекомендуется сразу переключать в нулевое состояние, а не ос тавлять в положении по умолчанию - экономия там мизерная, а так проще не за быть его «включить» при смене кварца. Обращать внимание на состояние СКОРТ необходимо также при включении от внешнего генератора или низкочастотного внешнего кварца - при соответствующей конфигурации ячеек CKSEL он «заведу ет» подключением внутренних конденсаторов 36 пФ к выводам XTAL. В случае внешнего генератора с не слишком мощным выходом (выход микросхемы КМОП «классической» серии 4000 или отечественной 56 1 ) его, наверное, лучше отклю чать, переводя в единичное состояние. Вы заметили, конечно, что на рис. 5 . 7-5 .9 представлена еще одна секция под назва нием Биты защиты (Lock Ьits) . Они защищают загруженную программу от изме нений и копирования . Рекомендуем к этой секции не обращаться вовсе - возмож но, прочесть вы программу еще сможете (в зависимости от установок), но что-то изменить уже не получится, в том числе и в части установки Lock/Fuse-битoв. При случайной установке каких-то из битов защиты единственная возможность полу чить доступ к контроллеру - полностью его очистить, сделать все установки зано во и снова загрузить программу. * * * В первой части книги вы немного познакомились с возможностями контроллеров семейства АVR и теперь в первом приближении знаете, что можно от них полу чить, если не ограничивать себя куцыми рамками Arduino. Вы также узнали, какие приспособления и инструменты минимально необходимы для разработки и загруз ки программ и как их настроить. В следующей части мы, наконец, перейдем к практическому воплощению полученных знаний. Начнем с простейших примеров ассемблерных программ, познакомимся с их общей структурой, сравним со знако мыми вам программами Arduino, а также кратко рассмотрим систему команд.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==