Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

446 Микроконтроллеры AVR от азов программирования... WGM13:0 СОМ 1x1:0 Рис. 6.32. Модуль совпадения, блок-схема Может показаться, что доступ к регистру OCRlx чересчур осложнен, но это не так. Когда двойная буферизация разрешена, центральный про ­ цессор обращается к регистрам OCRlx через буфер. Содержимое регистра OCRlx (с буфером или без буфера) изменя ­ ется только в процессе выполнения команды записи (таймер/счетчик не модифицирует этот регистр автоматически, как в случае с регистрами TCNT1 и ICR1). Поэтому при чтении старшего байта регистра OCRlx не используется буфер временного хранения (TEMP). Однако будет правильнее, если вы все равно будете читать сначала младший байт, а затем старший, как при доступе к любому другому 16-разрядному регистру. Запись в регистр OCRlx производится через буфер TEMP, так как сравнение всех 16 битов должно производиться непрерывно. Поэтому старший байт (OCRlxH) должен быть записан первым. Когда центральный процессор производит запись по адресу, где находится регистр старшего байта, на самом деле эта информация записывается в регистр TEMP. Когда же происходит запись младшего байта (OCRlxL), одновременно старший байт будет скопирован в верхние 8 битов буфера OCRlxH из регистра TEMP в том же самом цикле системного генера ­ тора. Для получения дополнительной информации о работе с 16-разрядными регистрами смотрите раздел «Доступ к 1 6-разрядным регистрам».

RkJQdWJsaXNoZXIy MTExODQxMg==