14.6. Работа счетчика
Каждый импульс синхронизации таймера-счетчика, в зависимости от режима работы, вызывает сброс, перезагрузку, инкрементирование или декрементирование счетчика.
14.6.1. Нормальная работа
В нормальном режиме работы счетчик выполняет счет в направлении заданном битом DIR до тех пор, пока не достигнет значения TOP или BOTTOM. При счете в прямом направлении, после достижения значения TOP, следующий импульс синхронизации таймера инициирует обнуление счетчика. При счете в обратном направлении по достижении значения BOTTOM счетчик перезагружается значением из регистра периода.
![Нормальный режим работы](/im/doc/micros/avr/arh_xmega_a/pic14_6.GIF) Рисунок 14.6. Нормальный режим работы
Как показано на рисунке 14.6, во время работы счетчика допускается изменение его значения. Запись в регистр счетчика имеет более высокий приоритет, чем счет, сброс или перезагрузка и выполняется безотлагательно. В нормальном режиме работы также допускается изменение направления счета.
Нормальный режим работы необходимо использовать, когда счетчик выступает в роли времязадающего устройства для каналов захвата.
14.6.2. Управляемый событиями режим работы
Настройки выбора событий и действия событий могут использоваться для управления счетчиком через систему событий. Применительно к счетчику могут быть выбраны следующие действия события:
- управление прямым/обратным счетом.
- квадратурно-дешифрированный счет.
14.6.3. 32-битная работа
За счет совместной работы двух таймеров можно добиться 32-битного счета. Для этого необходимо событие переполнения одного таймера-счетчика (младший таймер) подать через систему событий на вход синхронизации другого таймера-счетчика (старший таймер).
14.6.4. Изменение периода
Период счета изменяется записью нового значения TOP в регистр периода. Если двойная буферизация не используется, обновление периода выполняется незамедлительно (см. рисунок 14.7).
![Изменение периода без буферизации](/im/doc/micros/avr/arh_xmega_a/pic14_7.GIF) Рисунок 14.7. Изменение периода без буферизации
Когда же двойная буферизация используется, запись в буфер можно выполнить в любой момент, а вот обновление регистра периода будет выполнено только при выполнении условия UPDATE, как показано на рисунке 14.8. Благодаря этому, гарантируется корректность временной диаграммы генерации импульсов.
![Изменение периода с буферизацией](/im/doc/micros/avr/arh_xmega_a/pic14_8.GIF) Рисунок 14.8. Изменение периода с буферизацией
|