Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

450 Микроконтроллеры AVR от азов программирования... используется регистр OCR1A или ICR1. При работе в режиме СТС счет ­ чик сбрасывается в ноль, если значение его счетного регистра (TCNT1) соответствует значению регистра OCR1A (при WGM13:0 = 4) или реги ­ стра ICR1 (при WGM13:0 = 12). Поэтому регистр OCR1A или ICR1 определяет максимальное значе ­ ние для счетчика, а, следовательно, и его коэффициент пересчета. Этот режим позволяет осуществлять непосредственное управление часто ­ той сигнала. Это справедливо также в случае работы в режиме подсчета внешних событий. Прерывание может вызываться по достижению счетчиком значения TOR При этом используются флаги OCF1A или ICF1 в зависимости от того, какой из регистров применяется для определения значения ТОР. Если прерывание разрешено, процедура обработки прерывания может использоваться для обновления значения ТОР. Но если значение ТОР выбирается близко к значению BOTTOM, то записывать его нужно только в момент, когда счетчик не работает. Ведь в режиме СТС отсутствует двойная буферизация. Если новое значение, записанное в регистр OCR1A (ICR1), будет ниже, чем текущее значение TCNT1, счетчик пропустит момент совпадения. В этом случае счетчик должен будет досчитать до максимального значения (OxFFFF) и перейти через 0x0000 прежде, чем произойдет момент совпа ­ дения. Во многих случаях это нежелательно. В этой ситуации можно исполь ­ зовать режим fast PWM с использованием регистра OCR1A для опреде ­ ления TOP (WGM13:0 = 15). В этом режиме регистр OCR1A имеет двой ­ ную буферизацию. Для того, чтобы в режиме СТС на выходе сформировался периодиче ­ ский сигнал, необходимо настроить выход ОС1А таким образом, чтобы при каждом совпадении сигнал на выходе менял свое значение на проти ­ воположное (СОМ1А1:0 = 1). Но этот сигнал не поступит на внешний вывод ОС1 А, если он не скон ­ фигурирован как выход (DDR_OC1 А = 1). Сформированные таким обра ­ зом колебания будут иметь максимальную частоту f oclA - f dk 1/о /2, когда регистр OCR1 А установлен в ноль (0x0000). В общем случае частота сиг ­ нала определена следующим уравнением: JocnA~2.N- (1+OCRnA) ' Переменная N — это коэффициент пересчета предварительного дели ­ теля (1,8,64,256 или 1024). В режиме Normal флаг TOV1 устанавливается в том же самом тактовом цикле таймера, в котором счетчик переходит от МАХ до 0x0000.

RkJQdWJsaXNoZXIy MTExODQxMg==