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

442 Микроконтроллеры AVR от азов программирования... должен поступать на вход ICP1. Кроме того, в качестве сигнала захвата может быть использован сигнал с выхода аналогового компаратора. Полученные в результате захвата временные метки могут быть исполь ­ зованы для вычисления частоты, периода и других параметров при ­ кладного сигнала. Альтернативный вариант использования временных меток — создание таблицы регистрации событий. Принцип работы модуля захвата иллюстрирует блок-схема, показан ­ ная на рис. 6.31. Элементы блок-схемы, которые не являются составной частью модуля захвата, показаны серым цветом. Захват произойдет в том случае, если: ♦ происходит смена логического уровня на входе захвата (ICP1); ♦ или происходит смена логического уровня на выходе аналогового компаратора (АСО); ♦ направление этого изменения соответствует выбранным установ ­ кам. В момент захвата 16-разрядное значение счетчика (TCNT1) записы ­ вается в регистр захвата (ICR1). Одновременно, в том же периоде так ­ тового сигнала устанавливается флаг захвата (ICF1), сигнализируя, что значение TCNT1 скопировано в регистр ICR1. Если данный вид преры ­ ваний разрешен (ICIE1 = 1), установка флага захвата вызывает запрос на прерывание по захвату. Флаг автоматически очищается в момент запуска процедуры обработки прерывания. Флаг ICF1 может быть очищен про ­ граммно путем записи в этот разряд логической единицы. При чтении значения из 16-разрядного регистра захвата (ICR1) сна ­ чала нужно читать младший байт (ICR1L), а затем старший (ICR1H). При чтении младшего байта значение старшего запоминается во временном Рис. 6.31. Блок-схема модуля захвата

RkJQdWJsaXNoZXIy MTExODQxMg==