Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
226 Часть 111. Практическое программирование микроконтроллеров АVR полнительных 8- и 1 6-разрядных таймерах, режимов значительно больше. Среди них возможности работы в режиме «захвата» внешнего события (удобная для по строения периодомеров или подсчета редких событий) и счета до определенного знау:ения (или даже нескольких таких значений) с возникновением прерывания по достижении заданного числа, несколько режимов широтно-импульсной модуляции (PWM), возможность функционирования в асинхронном режиме от отдельного так тового генератора и т. п . В некоторых старших Mega (ATmega64 и др. ) есть еще и третий регистр управления ( тссRхс ) , с помощью которого можно программно управлять выводом ОСпх (об этом рассказано далее) . Интересно, что в АTtiny23 1 3 ТimerO - аналогично старшим моделям Mega - также имеет два регистра управ ления : TCCROA и TCCROB. Все варианты мы тут рассматривать не станем, чтобы не переписывать <<Инструк цию» : подробное описание всех функций таймеров-счетчиков АVR займет много места, к тому же большинство этих возможностей редко требуются на практике. Остановимся мы лишь на некоторых практических аспектах использования тай меров. СОВЕТ Чтобы не запутаться в многообразии режимов, следует иметь в виду общее правило : если вы какие-то режимы не используете, то соответствующие им биты регистров управления следует оставлять в нулевом («сброшенном») состоянии , в которое они установлены по умолчанию . Например, для простого запуска таймеров (режим Normal) достаточно установить режим делителя тактовой частоты в нужное состояние с помощью битов cso2-csoo . Они для ТimerO и Тimer2 находятся в младших разрядах регистров тссRО /TCCR2 ( тссRов для АTtiny23 1 3 ) или регистра тccRlB - для Timer 1 . Для выключения эти биты следует обнулить . Обычно еще устанавливается либо состояние бита пере ключения внешнего вывода ОСх, либо режим прерывания таймера, что также дела ется одинаково для всех моделей. Больше никаких дополнительных действий неза висимо от модели контроллера предпринимать не требуется. Разумеется, в большинстве случаев использования таймеров (за исключением фор мирования простых задержек, как в главе 7) нет смысла остющять тактовую часто ту, задаваемую от внутреннего RС-генератора, обеспечивающего эту функцию по умолчанию, - он слишком неточен, и к тому же частота 1 МГц недостаточна для корректного выполнения многих действий. Поэтому большинство задач далее мы ориентируем на подключение внешнего кварца с компромиссной частотой 4 МГц. При такой частоте и потребление еще не слишком увеличивается, и в то же время она достаточна для корректного выполнения многих действий. Напомним (см. гла ву 5), что при этом необходимо переключить контроллер на работу от внешнего кварцевого резонатора, для чего fusе-биты CKSELЗ . . о необходимо установить в зна чения 1 1 1 1 (а для ATtiny23 1 3 еще дополнительно установить сброшенный по умол чанию бит скоrvв, чтобы отключить режим деления частоты на 8) .
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==