Бит | |||||||||
$29 ($49) | MSB | OCR1BH | |||||||
$28 ($48) | LSB | OCR1BL | |||||||
Чтение/Запись | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | ||
Исходное значение | |||||||||
16-разрядные регистры сравнения выхода обеспечивают и чтение и запись. Регистры сравнения выхода таймера/счетчика1 хранят данные, постоянно сравниваемые с состоянием таймера/счетчика1. Действие, запускаемое совпадением при сравнении, определяется содержимым регистра управления и состояния таймера/счетчика1. Совпадение при сравнении может произойти только, если таймер/счетчик1 досчитает до значения содержимого OCR. Если в TCNT1 и OCR1A или OCR1B программно будут записаны одинаковые значения, то совпадение при сравнении сформировано не будет.
Совпадение при сравнении устанавливает флаг прерывания по совпадению в тактовом цикле CPU, следующем за самим совпадением. Запись в PORTD5 и PORTD4 устанавливает значения OC1A и OC1B соответственно.
|
|
Поскольку регистры сравнения выхода OCR1A и OCR1B являются 16-разрядными, то для обеспечения одновременного занесения старшего и младшего байтов данных в регистры OCR1A/B используется регистр временного хранения TEMP. Когда CPU записывает старший байт, то данные временно сохраняются в регистре TEMP. Когда же CPU записывает младший байт OCR1AL или OCR1BL, то одновременно содержимое регистра TEMP переписывается в OCR1AH или OCR1BH. Следовательно, при 16-разрядных операциях старшие байты регистров OCR1A/B должны записываться первыми.
Кроме того, регистр TEMP используется при обращении к TCNT1 и ICR1. Если основная программа и подпрограммы обработки прерываний, используют обращение к регистрам посредством TEMP, то прерывания должны быть запрещены на время обращения из основной программы.