Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
1 14 Часть /. Общие принципы устройства и функционирования Аtте/ АVR управления тактовой частото� изнутри программы через регистр CLКPR, в кото ром с помощью битов СLКРSЗ : О можно установить коэффициент деления частоты ОТ 1 ДО 256. При работе от внешнего «кварца» следует устанавливать CKSELЗ : O в состояние 1 1 1 1 , а от внешнего генератора - в обратное состояние 0 0 0 0 . Эти установки уни версальные для всех АVR-контроллеров, и справляться с таблицей в «даташите» на практике нужно только для случая внутреннего генератора, для которого установки для разных типов чаще всего различаются . Никаких, конечно, керамических резо наторов мы не употребляем, потому остальные варианты установок CKSEL нам не потребуются . При включении кварцевого резонатора для ATmega8 и ATmega8535 не забывайте также про ячейку СКОРТ, о которой далее. Следующие по порядку биты SUT (SUTO и SUТ l ) управляют временем запуска по сле сброса, в том числе и при включении питания. По умолчанию они устанавли ваются в состояние SUT l : O = 10 , что при запуске от внутреннего или внешнего RС-генератора означает время около 65 мс + 6 тактов. При работе от внешнего кварца контроллер запускается быстрее : это же состояние означает время запуска около 4 мс + 1 6 ООО тактов (4 мс при 4МГц, всего 8 мс), - в первом случае RС-ге нератору дается дополнительное время на «раскрутку». Для наших целей эти ячей ки лучше оставлять в «умолчательном» состоянии. Бит CKOUT из «наших» контроллеров имеется также только в АTtiny23 l 3 и под ключает выход тактового сигнала к одноименному внешнему выводу контроллера (вывод 6, он же вывод номер 2 порта D). Это представляет определенный интерес при желании синхронизировать тактовые сигналы нескольких контроллеров или внешних устройств, а также просто при необходимости иметь в схеме генератор стабильной частоты. На практике эта возможность используется редко (вывод но мер 2 порта D чаще всего требуется другими своими функциями), но следует учесть, что она имеется не только в AТtiny23 1 3 , но и в некоторых других контрол лерах Tiny и Mega (включая знакомых нам «продвинутых» наследников Mega8 в лице АTmega88/АTmega328) . Переходим к группе Fuse High . О fusе-битах RSTDISBL и SPIEN мы уже говорили ранее - в наших случаях их трогать категорически не рекомендуется (а в случае SPIEN при последовательном программировании пытаться его переключить еще и бесполезно). «Фьюзьш BODLEVEL, которых здесь аж три штуки, задают уровни срабатывания системы мониторинга питания BOD. В состоянии BODLEVEL2 : 0 = 1 1 1, как по умолчанию, система BOD выключена, остальные комбинации задают уровни сбро са при падении напряжения до 1 , 8 вольта ( 1 1 0), 2,7 вольта ( 1 0 1) и 4,3 вольта ( 1 0 0). Все комбинации при нулевом состоянии старшего бита (BODLEVEL2 = О) помече ны, как Reserved, т. е. их устанавливать нельзя. В контроллерах ATmega8 и ATmega8535 (см. рис. 5 . 8 и 5 .9) управление BOD реа лизовано несколько проще: там ячейка BODEN управляет включением (ВODEN = о - BOD включена, BODEN = 1 - BOD выключена), а ячейка BODLEVEL - уровнем
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==