Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
Шаг 6. Осваиваем все возможности микроконтроллера ATtiny23 13 421 либо переключен в противоположное состояние в момент совпадения (см. раздел «Модуль совпадения»). Режим «Normal» Режим «Normal» (WGM02:0 = 0) — это самый простой из режимов работы таймера. В этом режиме направление счета всегда вперед (содер жимое увеличивается), и принудительный сброс счетчика не выполняется. Счетчик просто переполняется, когда достигнет максимального для восьми разрядов значения (ТОР = OxFF), а затем перезапускается сначала (0x00). При нормальной работе флаг переполнения таймера/счетчика (TOVO) будет установлен в тот момент, когда TCNT0 станет равно нулю. Флаг TOVO в этом случае ведет себя как девятый бит, за тем исключением, что он только устанавливается, но не сбрасывается. Используя прерывание по переполнению таймера, которое автома тически очищает флаг TOVO, можно увеличить коэффициент пересчета программным путем. Режим Normal не имеет никаких особенностей, на которых стоило бы заострять внимание. Новое значение счетного реги стра может быть записано в любой момент времени. Модуль совпадения иногда может использоваться для вызова пре рываний. Использование сигнала совпадения для генерации сигналов в режиме Normal не рекомендуется, так как это будет сильно тормозить работу процессора. Режим сброса при совпадении (СТС) В режиме сброса при совпадении или, по-другому, в режиме СТС (при WGM02:0 = 2) регистр OCROA используется для того, чтобы управлять коэффициентом пересчета счетчика. В режиме СТС счетчик сбрасыва ется в ноль при совпадении содержимого счетного регистра (TCNT0) и регистра OCROA. Регистр OCROA, таким образом, определяет максимальное значение для счетчика, а, следовательно, и его коэффициент пересчета. Этот режим позволяет максимально контролировать частоту сиг нала на выходе модуля. Упрощается также и подсчет внешних событий. Значение счетного регистра (TCNT0) увеличивается до момента, пока не происходит совпадение между TCNT0 и OCROA, и затем содержимое счетчика (TCNT0) очищается. Прерывание может вызываться каждый раз, когда счетчик достигает значения ТОР. При этом используется флаг OCFOA. Если прерывание раз решено, вызывается процедура обработки прерывания, которая может использоваться для того, чтобы обновить значение ТОР.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==