Белов, А.В. Микроконтроллеры 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. Если прерывание раз ­ решено, вызывается процедура обработки прерывания, которая может использоваться для того, чтобы обновить значение ТОР.

RkJQdWJsaXNoZXIy MTExODQxMg==