- •Микроконтроллеры
- •Базовая информация о микроконтроллерах
- •Сущность и назначение микроконтроллера. Семейства микроконтроллеров
- •Состав микроконтроллера
- •Назначение микроконтроллера
- •Cемейства микроконтроллеров
- •Отправная точка. Микроконтроллерi8051
- •Основные характеристики микроконтроллераi8051
- •Назначение выводовi8051
- •Структурная схемаi8051
- •Микроконтроллеры семействаavrкомпанииatmel
- •Общая характеристика архитектуры, системы команд и ассемблераAvr
- •Состав семейства и основные характеристики микроконтроллеровAvr
- •Структура ассемблерного кодаAvr
- •Группы команд микроконтроллеров avr
- •Директивы ассемблераAvr
- •Список директив ассемблераAvr
- •Директива byte
- •Директива cseg
- •Директива db
- •Директива def
- •Директива device
- •Директива dseg
- •Директива dw
- •Директивы macro иEndmacro
- •Директива equ
- •Директива set
- •Микроконтроллер atmega8535
- •Характеристики, назначение выводов и структура микроконтроллера aTmega8535
- •Характеристики микроконтроллера aTmega8535
- •Назначение выводов микроконтроллера aTmega8535
- •Структура микроконтроллера aTmega8535
- •Сброс микроконтроллера aTmega8535. Режимы пониженного энергопотребления. Сигналы запроса внешних прерываний. Регистры управления
- •Сброс микроконтроллера aTmega8535
- •Регистр mcucsr (mcu Control and Status Register)
- •Регистр mcucr (mcu Control Register)
- •Режимы пониженного энергопотребления
- •Форма сигналов запроса внешних прерываний
- •Регистры общего назначения, регистр состояния и указатель стека микроконтроллера aTmega8535
- •Регистры общего назначения
- •Регистр состояния (sreg)
- •Указатель стека
- •Ввод-вывод
- •Регистры и команды ввода-вывода
- •Порты ввода-вывода
- •Прерывания
- •Источники и таблица векторов прерываний
- •Регистр gicr (General Interrupt Control Register)
- •Внешние прерывания
- •Регистр gifr (General Interrupt Flag Register)
- •Таймеры микроконтроллера aTmega8535
- •Общая информация о таймерах микроконтроллера aTmega8535
- •Множество таймеров aTmega8535
- •Регистр timsk (Timer/Counter Interrupt Mask Register)
- •Регистр tifr (Timer/Counter Interrupt Flag Register)
- •Примеры программ работы с таймером
- •Таймер t0
- •Назначение и свойства таймера t0
- •Структура таймера t0
- •Регистры таймера t0
- •Регистр tccr0 (Timer/Counter Control Register)
- •Устройство сравнения таймера t0
- •Режимы работы таймера t0
- •Режим Normal
- •Режим ctc
- •Режим быстрой шим (fastPwMmode)
- •Режим шим с корректировкой фазы (Phase Correct pwm Mode)
- •Таймер t1
- •Назначение и свойства таймера t1
- •Структура таймера t1
- •Регистры таймера t1
- •Регистр tccr1a (Timer/Counter1 Control Register a)
- •Регистр tccr1b (Timer/Counter1 Control Register b)
- •Задание режима генерации сигнала битами wgm13:0
- •Устройство захвата (Input Capture Unit)
- •Режимы работы таймера t1
- •Список режимов работы таймера t1
- •Режим быстрой шим (fast pwm mode) таймера t1
- •Режим шим с корректировкой фазы (Phase Correct pwm Mode) таймера t1
- •Режим шим с корректировкой фазы и частоты (Phase and Frequency Correct pwm Mode) таймера t1
- •Таймер t2
- •Назначение и свойства таймера t2
- •Структура таймера t2
- •Регистры таймера t2
- •Регистр tccr2 (Timer/Counter Control Register)
- •Устройство сравнения таймера t2
- •Режимы работы таймера t2
- •Режим Normal
- •Режим ctc
- •Режим быстрой шим (fast pwm mode)
- •Режим шим с корректировкой фазы (Phase Correct pwm Mode)
- •Асинхронный режим работы таймера t2. Регистр assr (Asynchronous Status Register)
Режим шим с корректировкой фазы (Phase Correct pwm Mode)
В режиме ШИМ с корректировкой фазы счетчик считает в обе стороны, сначала от BOTTOM до MAX, а затем от MAX до BOTTOM (рис.).
В неинверсном режиме работы выхода OC2 сбрасывается при совпадении при счете вверх, устанавливается при совпадении при счете вниз, в инверсном, наоборот, устанавливается при совпадении при счете вверх, сбрасывается при совпадении при счете вниз.
Рис. Временная диаграмма работы таймера в режиме ШИМ с корректировкой фазы
Благодаря симметричности, этот режим предпочтителен для управления двигателями.
Разрешение ШИМ в этом режиме фиксировано и составляет 8 бит.
Флаг TOV2 устанавливается при достижении счетчиком значения BOTTOM.
Частота сигнала в режиме ШИМ с корректировкой фазы определяется следующей формулой:
,
где N — коэффициент деления частоты.
Крайние значения регистра OCR2 представляют специальные случаи генерации сигнала:
OCR2=BOTTOM — выходной сигнал является постоянным нулем в неинверсном и постоянной единицей в инверсном режиме;
OCR2=MAX — выходной сигнал является постоянной единицей в неинверсном и постоянным нулем в инверсном режиме.
В начале периода 2 выход меняет свое значение, даже если не происходит совпадения сравниваемых значений. Это определяется требованиями поддержания симметрии относительно BOTTOM.
Существует два случая, когда выход меняет свое значение без совпадения сравниваемых значений:
изменение значения регистра OCR2 с MAX. Когда OCR2=MAX, значение выхода такое же, как в результате совпадения при счете вниз. Для обеспечения симметрии относительно BOTTOM необходимо, чтобы значение выхода при значении MAX соответствовало результату совпадения при счете вверх;
таймер начинает счет со значения, большего чем OCR2, и таким образом, пропускает совпадение и соответствующее изменение выхода при счете вверх.
Асинхронный режим работы таймера t2. Регистр assr (Asynchronous Status Register)
Формат регистра ASSR:
бит 3 — AS2 (Asynchronous Timer/Counter2), асинхронный режим работы таймера T2:
AS2=0, источник тактовых импульсов — clkI/O;
AS2=1, источник тактовых импульсов — внутренний генератор;
бит 2 — TCN2UB (Timer/Counter2 Update Busy);
бит 1 — OCR2UB (Output Compare Register 2 Update Busy);
бит 0 — TCR2UB (Timer/Counter Control Register 2 Update Busy.
При записи регистров TCNT2, OCR2 и TCCR2 записываемое значение передается в соответствующий регистр временного хранения, в котором защелкивается после второго переднего фронта сигнала на входе TOSC1. Нельзя осуществлять запись данных регистров, пока они не будут обновлены из регистров временного хранения. Для указания их готовности к записи служат биты занятости регистров для обновления, которые устанавливаются при записи соответствующих регистров и сбрасываются при их обновлении из регистра временного хранения, что говорит об их готовности к очередному обновлению.
Если произвести запись регистра при установленном бите занятости, то обновленное значение может повредиться.
При чтении регистра TCNT2 в асинхронном режиме, читается его действительное значение. При чтении регистров OCR2 или TCCR2, читается значение из регистра временного хранения.
При переключении между асинронным и синхронным режимами T2 значения регистров TCNT2, OCR2 и TCCR2 могут быть повреждены.
Для переключения между режимами рекомендуется использовать следующую последовательность действий:
Запрет прерываний таймера T2 обнулением битов OCIE2 и TOIE2.
Установить требуемый режим с помощью бита AS2.
Записать новые значения в TCNT2, OCR2 и TCCR2, при переключении в асинхронный режим дождаться готовности.
Сбросить флаги прерываний T2.
Разрешить прерывания, если это необходимо.
Внутренний генератор таймера T2 оптимизирован для работы с кварцем частотой 32,768 КГц. Подача на вход TOSC1 внешнего тактового сигнала может привести к неправильной работе таймера.
Тактовая частота контроллера должна быть в четыре раза больше частоты внутреннего генератора как минимум.
При входе в режимы пониженного энергопотребления Power-save или Extended Standby после записи регистров TCNT2, OCR2, TCCR2 необходимо дождаться их обновления, если для выхода из режима пониженного энергопотребления используется таймер T2.
Между выходом из режима пониженного энергопотребления и последующим входом в него должно пройти не менее одного такта TOSC1. Чтобы гарантировать это, можно выполнить следующую последовательность действий:
Записать TCCR2, TCNT2 или OCR2.
Дождаться обнуления соответствующего флага занятости в регистре ASSR.
Войти в режим пониженного энергопотребления.
Чтение регистра TCNT2 сразу после выхода из режима Power-save может дать некорректный результат. Для избежания этого рекомендуется следующая последовательность действий:
Записать любое значение в регистр OCR2 или TCCR2.
Дождаться сброса соответствующего флага занятости.
Прочитать регистр TCNT2.
В режимах Power-down и Standby внутренний генератор не работает. После выхода из этих режимов можно считать, что генератор перешел к стабильной работе, по прошествии одной секунды.
Синхронизация флагов прерывания таймера в асинхронном режиме требует трех тактов процессора плюс один такт таймера.
Выход таймера изменяется в соответствии с его тактовым сигналом и не синхронизируется с тактовой частотой процессора.