![]() Email автора. Copyright: Сухарев Евгений, 2005 |
Таймер/счётчик 0 (TC0) представляет из себя 8-битный модуль, содержащий 3 регистра. В регистре TCNT0 происходит счёт импульсов. Регистр доступен как для чтения, так и для записи, т.е. можно задать некое начальное значение и ТС0 продолжит счёт от этого значения. Счёт идёт на увеличение. Скорость и режимы счёта можно задать с регистра TCCR0. Общий вид регистра TCCR0: ![]() Тактовая частота процессора подаётся на вход схемы деления частоты ТС0. Делённая частота попадает на счётную схему. Режимы деления задаются в трёх младших битах регистра TCCR0: ![]()
Таким образом, если в эти три бита записаны 000, то ТС0 остановлен. Если 001, то ТС0 считает импульсы
частоты процессора. И если один так процессора длится 1 мс, то в в TCNT0 значение будет увеличиваться
каждую 1 мс. Если записано 101, то схема предделения будет тактовую частоту процессора делить на 1024,
и один раз за 1024 такта процессора ТС0 будет увеличивать значение в TCNT0. External Clock Source -
режим счёта внешних импульсов, поступающих на вывод T0. Регистр OCR0 служит для задания значения, при достижении которого в режиме счёта, ТС0 генерирует прерывание. Обработка прерываний от TC0
ТС0 при переполнении значения TCNT0 посылает процессору сигнал Timer/Counter 0 Overflow. Также процессору
посылается сигнал Timer/Counter 0 Compare Match при совпадении значений в регистрах TCNT0 и OCR0. Реакция
процессора на эти сигналы (вызов соответствующих прерываний) зависит от значения регистров TIMSK и флага
I в Status регистре процессора. ![]()
Бит 0 - TOIE0 - Когда этот бит установлен в 1 и разрешены прерывания, процессор реагирует на сигнал
переполнения ТС0 и вызывает прерывание по вектору $012 (OVF0addr). |