Для работы в режиме CTC используется специальный регистр - регистр совпадения. Если микроконтроллер содержит несколько таймеров, то для каждого из них, существует свой отдельный регистр совпадения. Причем для восьмиразрядных таймеров регистр совпадения - это один восьмиразрядный регистр. Для шестнадцатиразрядных таймеров регистр совпадения - это два восьмиразрядных регистра. Регистры сравнения так же имеют свои имена. Например, регистр совпадения таймера T1 состоит из двух регистров: OCR1 L и OCR1 H. В ряде микроконтроллеров существуют два регистра совпадения. Так во всех микроконтроллерах семейства Tiny существует два регистра совпадения для таймера T1. Это регистры OCR1 A и OCR1 B. Два регистра совпадения для таймера T1 имеет и микроконтроллер Atmega8 x. Во втором случае, как таймер, так и его регистры совпадения имеют шестнадцать разрядов. Если регистр совпадения шестнадцатиразрядный, то физически он состоят из двух регистров ввода/вывода. Например, два регистра совпадения таймера T1 микросхемы Atmega8 x представляют собой четыре регистра ввода/вывода с именами OCR1 AL, OCR1 AH, OCR1 BL, OCR1 BH.
Как же используются регистры совпадения? Эти регистры включаются в работу только тогда, когда выбран режим CTC. В этом режиме, как и в предыдущем, таймер производит подсчет входных импульсов. Текущее значение таймера из его счетного регистра постоянно сравнивается с содержимым регистров совпадения. Если таймер имеет два регистра совпадения, то для каждого из этих регистров производится отдельное сравнение. Когда содержимое счетного регистра совпадет с содержимым одного из регистров совпадения, произойдет вызов соответствующего прерывания. Кроме вызова прерывания в момент совпадения может происходить одно из следующих событий:
- Сброс таймера (верно только для регистров совпадения OCR1 и OCR1 A)
- Изменение состояния одного из выводов микроконтроллера (верно для всех регистров)
Произойдет или не произойдет одно или оба, из вышеперечисленных событий определяется при настройке таймера.