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

Шаг 6. Осваиваем все возможности микроконтроллера ATtiny231 3 439 Несмотря на все предпринятые меры по совместимости нового 16-разрядного таймера/счетчика со старым его вариантом, в некоторых случаях совместимость будет все же неполная. Доступ к 16-разрядным регистрам Регистры TCNT1, OCR1A/B, и ICR1 — это 16-разрядные регистры, к которым центральный процессор может обращаться лишь при помощи 8-разрядной шины данных. Доступ к каждому из 16-разрядных регистров происходит как последовательное чтение или последовательная запись двух байтов информации. В состав 16-ти разрядного таймера входит специальный 8-разрядный регистр для временного хранения старшего байта 16-разрядного доступа. Один и тот же временный регистр используется для доступа ко всем 16-разрядным регистрам одного 16-разрядного таймера. Этот регистр временного хранения не доступен программисту и используется в авто ­ матическом режиме. При чтении или записи старшего байта информация на самом деле читается из временного регистра и записывается во временный регистр. Фактические чтение/запись всех шестнадцати разрядов происходят в момент чтения/записи его младшего байта. Так в процессе записи данных фактиче ­ ская запись старшего байта происходит только в момент записи младшего байта. А до этого момента старший байт хранится во временном регистре. Чтение данных всегда нужно начинать с младшего байта. Система устроена таким образом, что при выполнении команды чтения млад ­ шего байта, одновременно читается и помещается во временный регистр старший байт. Когда же поступает команда чтения старшего байта, он уже читается из временного регистра. Подобный способ доступа к 16-разрядным регистрам используется не всегда. Например, при чтении 16-разрядных регистров OCR1A/B временный регистр не используется. Исходя из вышесказанного, можно сформулировать следующие пра ­ вила, которые необходимо соблюдать при написании программы для микроконтроллера. Для того, чтобы произвести запись в 16-разрядный регистр, необходимо сначала записать старший байт, а затем младший. При чтении 16-разрядного регистра сначала нужно читать младший байт, а затем старший. Источники тактового сигнала таймера/счетчика Шестнадцатиразрядный таймер/счетчик может быть синхронизиро ­ ван как от внутреннего, так и от внешнего источников тактового сигнала. Какой из источников будет использоваться, определяет блок выбора, кото ­

RkJQdWJsaXNoZXIy MTExODQxMg==