- •1. Микроконтроллер aTtiny2313/V фирмы Atmel
- •1.1 Структура, основные характеристики и возможности
- •1.2 Особенности микросхемы aTtiny2313
- •2. Центральное ядро процессора
- •2.1 Кратка характеристика архитектуры
- •2.4 Системная перепрограммируемая Flash-память программ
- •2.5 Память данных sram
- •3. Порты ввода-вывода
- •3.1 Использование портов для цифрового ввода-вывода
- •4. Внешние прерывания
- •4.1 Назначение и режимы работы
- •5.4 Используемые обозначения
- •5.5 Модуль счёта
- •5.6 Модуль совпадения
- •5.7 Принудительное изменение состояния выхода совпадения
- •5.8 Блокировка режима совпадения в момент записи регистра tcnt0
- •5.9 Использование модуля прерывания
- •5.10 Модуль вывода сигнала совпадения
- •5.11 Режимы работы
- •5.12 Режим «Normal»
- •5.13 Режим сброса при совпадении (стс)
- •5.14 Режим FastPwm (быстрый шим)
- •5.15 Шим, корректный по фазе (PhaseCorrectPwm)
- •6. Описание системы команды
- •6.1 Система команд. Общие сведения о системе команд
- •6.2 Система команд
- •6.3 Команды регистровых операций
- •6.4 Команды с обращением по адресу sram
- •6.5 Команды с обращением к регистрам ввода-вывода
- •6.6 Команда с обращением к FlashRom
- •6.7 Команды операций с битами
- •6.8 Команды управления ходом программы
5.11 Режимы работы
Режим работы, то есть поведение таймера/счётчика и выхода сигнала совпадения, определяется как режимом работы генератора сигналов (WGM02:0), так и режимом вывода сигнала совпадения (COM0x1:0). Состояние битов, определяющих режим вывода сигнала совпадения, не влияет на последовательность подсчёта, которая определяется только состоянием битов конфигурации генератора сигналов.
Биты COM0x1:0 определяют, должен ли выходной сигнал ШИМ быть инвертирован или нет (инвертированный или не инвертированный ШИМ). Для не-ШИМ-режимов содержимое битов COM0x1:0 определяет, должен ли сигнал на выходе быть установлен в единицу, сброшен в ноль либо переключён в противоположное состояние в момент совпадения.
5.12 Режим «Normal»
Режим «Normal» (WGM02:0 = 0) – это самый простой из режимов работы таймера. В этом режиме направление счёта всегда вперёд (содержимое увеличивается), и принудительный сброс счётчика не выполняется. Счётчик просто переполняется, когда достигает максимально для восьми разрядов значения (TOP = 0xFF), а затем перезапускается сначала (0x00).
При нормальной работе флаг переполнения таймера/счётчика (TOV0) будет установлен в тот момент, когда TCNT0 станет равно нулю. Флаг TOV0 в этом случае ведёт себя как девятый бит, а затем исключением, что он только устанавливается, но не сбрасывается.
Используя прерывание по переполнению таймера, которое автоматически очищает флаг TOV0, можно увеличить коэффициент пересчёта программы путём. Режим Normal не имеет никаких особенностей, на которых стоило бы заострять внимание. Новое значение счётного регистра может быть записано в любой момент времени.
Модуль совпадения иногда может использоваться для вызова прерываний. Использование сигнала совпадения для генерации сигналов в режиме Normal не рекомендуется, так как это будет сильно тормозить работу процессора.
5.13 Режим сброса при совпадении (стс)
В режиме сброса при совпадении или, по-другому, в режиме СТС (при WGM02:0 = 2) регистр OCR0A используется для того, чтобы управлять коэффициентом пересчёта счётчика. В режиме СТС счётчик сбрасывается в ноль при совпадении содержимого счётчика регистра (TCNT0) и регистра OCR0A.
Регистр OCR0A, таким образом, определяет максимальное значение для счётчика, а, следовательно, и его коэффициент пересчёта.
Этот режим позволяет максимально контролировать частоту сигнала на выходе модуля. Упрощается также и подсчёт внешних событий. Значение счётчика регистра (TCNT0) увеличивается до момента, пока не происходит совпадение между TCNT0 и OCR0A, и затем содержимое счётчика (TCNT0) очищается.
Прерывание может вызываться каждый раз, когда счётчик достигает значения TOP. При этом используется флагOCF0A. Если прерывание разрешено, вызывается процедура обработки прерывания, которая может использоваться для того, чтобы обновить значение TOP.
Установка TOP чересчур близко к значению BOTTOM в тот момент, когда счётчик не работает или при низком коэффициенте предварительного деления, должна выполняться осторожно, так как режим СТС не имеет двойной буферизации.
Если новое значение, записанное в OCR0A, будет ниже, чем текущее значение TCNT0, то источник пропустит момент совпадения. В результате счётчик продолжит счёт до своего максимального значения (0xFF), затем перейдёт через ноль и лишь затем произойдёт момент совпадения.
Для генерации выходного сигнала в режиме СТС выход OC0Aможет быть установлен в режим переключения выходного уровня каждый раз в момент совпадения. Для этого нужно установить в соответствующее положение биты режима вывода сигнала совпадения (COM0A1:0 = 1). Значение регистра OC0A не поступит на соответствующий внешний контакт порта, если он не сконфигурирован как выход. Сгенерированный сигнал будет иметь максимальную частоту fOC0 = fclk_I/O/2, когда в регистр OCR0A записан ноль (0x00). Частота сигнала может быть рассчитана при помощи следующего уравнения:
где переменная N – это коэффициент предварительного деления (1, 8, 64, 256 или 1024).
Как и в режиме Normal, флаг TOV0 устанавливается каждый раз, когда счётчик досчитывает до MAX и переходит в ноль.
