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

454 Микроконтроллеры AVR от азов программирования... и устанавливается в момент совпадения в том случае, когда счетчик работает на увеличение. В инвертирующем режиме все происходит наоборот. Использование режима пилы с двухсторонним наклоном приводит к тому, что максимальная частота выходного сигнала в два раза ниже, чем в режиме с одним наклоном. Но благодаря симметричному изменению фазы при работе с двухсторонним наклоном этот режим более предпо ­ чтителен для управления электромотором. Коэффициент пересчета для phase correct PWM может иметь в одно из трех фиксированных значений (как 8-, 9- или 10-разрядный счетчик), а также может определяться регистрами ICR1 или OCR1A. Минимально возможный коэффициент пересчета соответствует 2-разрядному счетчику (при записи в регистр ICR1 или OCR1A значения 0x0003). Максимальный коэффициент пересчета соответствует полному 16-разрядному счетчику (в регистр ICR1 или OCR1A записывается зна ­ чение МАХ). Коэффициент пересчета PWM в битах может быть вычис ­ лен с использованием следующего уравнения: о _log(TOP+1) Ярсяш --- | О д(2) • В режиме phase correct PWM значение счетного регистра увеличива ­ ется до тех пор, пока не достигнет значения ТОР. А это либо одно из фик ­ сированных значений ОхООҒҒ, ОхОІҒҒ или ОхОЗҒҒ (WGM13:0 = 1,2 или 3), либо значение регистра ICR1 (WGM13:0 = 10), либо значение регистра OCR1A (WGM13:0 =11). Когда счетчик достигнет значения ТОР, он изме ­ няет направление счета. Значение TCNT1 будет равно ТОР лишь в тече ­ ние одного тактового цикла. Флаг переполнения таймера/счетчика (TOV1) устанавливается каж ­ дый раз, когда счетчик достигает значения BOTTOM. Если регистр OCR1A или ICR1 используется для определения значения ТОР, то флаг ОС1А или ICF1, соответственно, устанавливаются в том же самом такто ­ вом цикле, что и флаг TOV1. Регистры OCRlx имеют двойную буферизацию и обновляются в тот момент, когда счетчик достигнет значения ТОР. Флаги прерывания могут использоваться для генерации прерываний в момент, когда счетчик достигает значения ТОР или BOTTOM. В случае программного измене ­ ния значения ТОР необходимо гарантировать, что новое значение ТОР выше или равно значению каждого из регистров совпадения. Если новое значение ТОР будет ниже, чем значение одного из реги ­ стров совпадения, то момент совпадения никогда не произойдет. Следует заметить, что при использовании одного из фиксированных

RkJQdWJsaXNoZXIy MTExODQxMg==