Таймеры и счётчики микроконтроллера atmega8

Документация

Таймеры и счётчики являются одними из самых частоиспользуемых функций микроконтроллеров.  Они служат для замера интервалов времени, частоты, определений широт импульсов и так далее. В Atmega8 используются 8 и 16-ти битные счётчики. Переполнение 8 битного счётчика наступает при достижении 255 итераций, 16 битного - при достижении 65535 итераций.

Если таймер работает в режиме счётчика, то он считает количество импульсов, поступивших на выбранный вход микроконтроллера. В этом случае регистр направления DDR порта должен быть настроен на вход.

Если таймер работает в качестве таймера, то частота его тактирования зависит от частоты генератора такта микроконтроллера.

За работу таймеров T/С0, T/C1, T/C2 отвечают регистры TCCR0, TCCR1, TCCR2. Первые 3 бита регистров TCCR0 и TCCR1 отвечают за конфигурацию таймера. Конгфигурация таймера в зависимости от состояния этих трёх регистров представлена в таблице.

Бит2 Бит1 Бит0 Значение комбинации
0 0 0  Таймер/счётчик неактивен
0 0 1 Активен режим "Таймер". Такт таймера равен такту микроконтроллера
0 1 0 Активен режим "Таймер". Такт таймера равен такту микроконтроллера/8
0 1 1 Активен режим "Таймер". Такт таймера равен такту микроконтроллера/64
1 0 0 Активен режим "Таймер". Такт таймера равен такту микроконтроллера/256
1 0 1 Активен режим "Таймер". Такт таймера равен такту микроконтроллера/1024
1 1 0 Режим "Счётчик".  Активный фронт сигнала - ниспадающий
1 1 1 Режим "Счётчик". Активный фронт сигнала - нарастающий

Если включен режим счётчика, то при каждом импульсе на вход счётчика происходит увеличение на единицу содержимого  регистра TCNTx.  При изменении состояния счётчика регистра TCNTx c 0xFF на 0x00, в регистре TIFR устанавливается флаг переполнения TOVx

Регистр TIFR

7 6 5 4 3 2 1 0
TOV1 OCF1A OCF1B  - ICF1  - TOV0  -

При работе в режиме таймера счётчик считает число тактовых импульсов, сгенерированных таймером. Время генерации тактового импульса зависит от такта микроконтроллера и делителя такта (см. таблицу выше). Например, если тактовая частота микроконтроллера 4 mHz,  а делитель такта для таймера равен 8, то время генерации будет равно : 1/500.000Гц=2мкс. Таким образом для переполнения 8-битного счётчика после 256-го импульса нужно 512 мкс. Умножив количество переполнений на время 1 переполнения счётчика можно получить время с начала  работы таймера


Если у вас есть какие-то замечания по этому документу или что-то осталось непонятно, то вы можете оставить свой отзыв или вопрос

Комментарии (1)

avatar

zsalamander

  • 11 Июль 2011, 16:19

ответить

Было бы не плохо видеть примеры использования каждого из видов таймеров

Анонимная отправка сообщений запрещена! Пожалуйста зарегистрируйтесь