Таймеры микроконтроллеров AVR могут работать в нескольких режимах, в том числе в режиме “сброс при совпадении” (режим CTC). Для работы в этом режиме используется особый регистр - регистр совпадения.
Если микроконтроллер имеет несколько таймеров, то у каждого таймера есть свой отдельный регистр совпадения. При этом для 8-разрядных таймеров это будет один 8-разрядный регистр, а для 16-разрядных таймеров - два 8-разрядных регистра.
Регистры сравнения, как и многие другие, имеют свои имена, с помощью которых к этим регистрам удобно обращаться в программе.
Например, регистр совпадения таймера T1 состоит из двух регистров: OCR1L и OCR1H. В некоторых микроконтроллерах есть два регистра совпадения. Так,
во всех микроконтроллерах семейства “Tiny” для таймера T1 есть два регистра совпадения: регистры OCR1A и OCR1B.
Два регистра совпадения для таймера T1 имеет и микроконтроллер ATmega8x (при этом как таймер, так и его регистры совпадения имеют шестнадцать разрядов). Если регистр совпадения шестнадцатиразрядный, то физически он состоит из двух регистров ввода-вывода. И если имеется два регистра совпадения, то фактически это будет четыре регистра.
Например, два регистра совпадения таймера T1 микросхемы AТmega8x представляют собой четыре регистра ввода-вывода с именами OCR1AL, OCR1AH, OCR1BL, OCR1BH. То есть к каждому байту каждого регистра можно обращаться по уникальному имени.
Регистры совпадения включаются в работу только тогда, когда для таймера выбран соответствующий режим (режим СТС). В этом режиме таймер подсчитывает входные импульсы. Текущее значение в счётном регистре таймера постоянно сравнивает со значением, которое хранится в регистре совпадения. Если таймер имеет два регистра совпадения, то для каждого их этих регистров выполняется отдельное сравнение.
Когда содержимое одного из регистров совпадения совпадает с содержимым счётного регистра таймера, происходит вызов соответствующего прерывания. Кроме вызова прерывания в момент совпадения могут произойти следующие события:
- Сброс таймера (верно только для регистров совпадения OCR1 и OCR1A)
- Изменение состояния одного из выводов микроконтроллера (верно для всех регистров)
Произойдет или нет одно или оба из этих событий, определяется при настройке таймера.
На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить…