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

Глава б. Основы программирования МКАVR 145 И еще одно обязательное действие обычно требуется выполнить перед началом эксплуатации нового контроллера- установить ему fusе-биты. Причем это делает­ ся один раз, и выносить в автопрограммирование это действие я не рекомендую, - повторять его нет нужды. Настройка fusе-битов вынесена в отдельное меню На­ стройки 1 Lock/Fuse биты (см. рис. 5 . 7-5 .9 в главе 5) и единственное, что требует­ ся по этому поводу выучить наизусть : перед внесением любых изменений в fusе­ биты следует обязательно прочитать из контроллера их текущее состояние соответ­ ствующей кнопкой. Надо учитывать, что после программирования контршщер перезагрузится (даже два раза - после программирования и после проверки Flash) и начнет работать сразу, т. к. на него подано питание . Поэтому я по мере возможности стараюсь не занимать выводы программирования каким-либо функциями, но, конечно, это соблюдать необязательно, а иногда и невозможно. На этот счет можно быть спокойными - чтобы испортить тут что-то неправильным подключением, надо очень постараться. Единственное неудобство в том, что, как правило, при занятых выводах програм­ мирования приходится каждый раз для проверки работы схемы отключать про­ грамматор. О Bootloader Наличие в Arduino предустановленной загрузочной программы Bootloader несрав­ ненно облегчает и упрощает взаимодействие с платами контроллеров. Если бы не эта «фича», позволяющая загружать и отлаживать программы буквально одним щелчком мыши, то Arduino никогда бы не получила такой популярности. Однако существенная часть ограничений платформы Arduino также проистекает из этого факта. Дr�я начала Bootloader отьедает кусок памяти программ. Но на удивление незначи­ тельный - если посмотрите на результат компиляции любого скетча, то по поводу занимаемой памяrn там будет написано, что «Всего доступно 32 256 байт» . До пол­ ного объема памяти ATmega328, равной 32 К, недостает 32 768 - 32 256 = 5 1 2 бай­ тов, что и есть объем, занимаемый Bootloader'oм. 0,5 кбайта из 32 ( 1 , 5%) - согла­ ситесь, это небольшая цена за такое удобство. Гораздо хуже другое: Bootloader есть точно такая же программа, как любая другая, потому он привязан, во-первых, к определенному типу контроллеров, во-вторых, что самое главное, - к конкретной рабочей частоте. Изменение типа МК в преде­ лах группы контроллеров, обладающих схожим набором периферийных устройств, в принципе возможно, но никогда не знаешь, какие при этом встретятся подводные камни. Изменение тактовой частоты, наоборот, невозможно, иначе uерестанет ра­ ботать последовательный порт, и Bootloader окажется бесполезным (можно это обойти, если выбирать кратные частоты тактирования и, соответственно, менять скорость порта, но такое решение тоже не универсальное). И наконец, наличие Bootloader' a принципиально замедляет загрузку: он обязан перехватывать управле­ ние в первый момент и ждать, не «постучится» ли что-то в последовательный порт, и лишь потом передавать управление основной программе.

RkJQdWJsaXNoZXIy MTExODQxMg==