Режим Fast PWM («Быстродействующий ШИМ») позволяет генерировать высокочастотный сигнал с широтно-импульсной модуляцией. В связи с высокой частотой генерируемого сигнала данный режим с успехом может использоваться в таких приложениях, как регулирование мощности, выпрямление, цифро-аналоговое преобразование и др. Счетный регистр в этом режиме функционирует как суммирующий счетчик, инкрементирование которого осуществляется по каждому импульсу тактового сигнала. Состояние счетчика изменяется от $00 до максимального значения $FF, после чего счетный регистр сбрасывается и цикл повторяется. При достижении счетчиком максимального значения устанавливается флаг прерывания по переполнению TOV0 в регистре флагов, а при равенстве содержимого счетного регистра и регистра сравнения ОСR0 устанавливается флаг OCF0. Особенностью работы схемы сравнения в этом режиме является двойная буферизация записи в регистр OCR0, которая заключается в том, что записываемое число на самом деле сохраняется в специальном буферном регистре, а изменение содержимого регистра сравнения происходит только в момент достижения счетчиком максимального значения (рис. 9). Благодаря такому решению исключается появление несимметричных импульсов сигнала (помех) на выходе модулятора, которые были бы неизбежны при непосредственной записи в регистр сравнения. Состояние вывода ОС0 микроконтроллера в этом режиме также определяется содержимым битов СОМ01:СОМ00 регистра TCCR0 (см. табл. 17).

Рис. 9. Синхронизированная фиксация уставки в OCR0

НЕ нашли? Не то? Что вы ищете?

Таблица 17. Управление выводом OC0 в режимах PWM

COM01

COM00

Описание

0

0

Таймер/счетчик 0 отключен от вывода ОС0

0

1

Таймер/счетчик 0 отключен от вывода ОС0

1

0

Сбрасывается в 0 при равенстве регистров TCNT0 и ОСR0, устанавливается в 1 при сбросе счетчика – в режиме Fast PWM или по совпадению при обратном счете – в режиме Phase Correct PWM (неинвертированный ШИМ)

1

1

Устанавливается в 1 при равенстве регистров TCNT0 и ОСR0, сбрасывается в 0 при сбросе счетчика – в режиме Fast PWM или по совпадению при обратном счете – в режиме Phase Correct PWM (инвертированный ШИМ)

Режим Phase Correct PWM («ШИМ с точной фазой»), как и режим Fast PWM, предназначен для генерации сигналов с широтно-импульсной модуляцией. Однако в этом режиме счетный регистр функционирует как реверсивный счетчик, изменение состояния которого осуществляется по каждому импульсу тактового сигнала. Состояние счетчика сначала изменяется от $00 до максимального значения $FF, а затем обратно до $00. Соответственно максимальная частота сигнала в этом режиме в 2 раза меньше максимальной частоты сигнала в режиме Fast PWM. Тем не менее благодаря «симметричности» изменения состояния счетчика режим Phase Correct PWM предпочтительнее использовать для решения задач управления двигателями. При достижении счетчиком минимального значения ($00) также происходит смена направления счета и одновременно устанавливается флаг прерывания TOV0. При равенстве содержимого счетного регистра и регистра сравнения OCR0 устанавливается флаг OCF0 и изменяется состояние вывода ОС0. Характер изменения определяется, как обычно, содержимым битов СОМ01:СОМ00 регистра TCCR0 (см. табл. 17). Для исключения несимметричных выбросов в этом режиме тоже реализована двойная буферизация записи в регистры сравнения. Поэтому действительное изменение содержимого регистра сравнения происходит только в момент достижения счетчиком максимального значения.

Таймер/счетчик 1 осуществляет счет в 16-разрядном регистре TCNT1, физически состоящем из двух регистров – старшего байта TCNT1H и младшего байта TCNT1L.

Таймер/счетчик 1 TCNT1 (TCNT1H и TCNT1L)

Бит

15

14

13

12

11

10

9

8

$2D ($4D)

MSB

TCNT1H

$2C ($4C)

LSB

TCNT1L

7

6

5

4

3

2

1

0

Чтение/Запись

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Исходное значение

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Этот регистр содержит текущее значение 16-разрядного таймера/счетчика 1. С тем чтобы CPU могло считывать/записывать и старший и младший байты этого регистра одновременно, обращение к нему реализовано посредством 8-разрядного регистра временного хранения ТЕМР.

·  Запись в таймер/счетчик 1 TCNT1:

Когда CPU производит запись в старший байт (TCNT1H) записываемые данные размещаются в регистре TEMP. Затем, когда CPU производит запись в младший байт (TCNT1L), данные младшего байта объединяются с байтом данных регистра TEMP и все 16 битов одновременно переписываются в регистр таймера/счегчика TCNT1. Следовательно, при 16-разрядных операциях записи обращение к старшему байту (TCNT1Н) должно выполняться первым.

·  Чтение таймера/счетчика 1 TCNT1:

Когда CPU считывает младший байт (TCNT1L), то его содержимое направляется непосредственно, а содержимое старшего байта (TCNT1H) размещается в регистре TEMP. При считывании старшего байта его содержимое CPU принимает из регистра TEMP. Следовательно, при 16-разрядных операциях чтения первым должно выполняться обращение к младшему байту (TCNT1L).

Аналогично счетному регистру устроены два 16-разрядных регистра сравнения таймера/счетчика 1. Регистр сравнения OCR1A состоит из старшего байта OCR1AH с адресом $2B ($4B) и младшего байта OCR1AL с адресом $2A ($4A). Регистр сравнения OCR1B состоит из старшего байта OCR1BH с адресом $2B ($4B) и младшего байта OCR1BL с адресом $2A ($4A). Отличие 16-разрядного регистра захвата ICR1, состоящего из старшего байта ICR1H с адресом $27 ($47) и младшего байта ICR1L с адресом $26 ($46), состоит в том, что он обеспечивает только чтение его содержимого. При обращении к 16-разрядным регистрам сравнения OCR1A, OCR1B и захвата ICR1 также, как и при обращении к TCNT1, используется регистр временного хранения TEMP. Если основная программа и подпрограммы обработки прерываний используют обращение к указанным регистрам, то прерывания на время обращения должны быть запрещены.

16-разрядный таймер/счетчик 1 управляется двумя регистрами TCCR1А и TCCR1B.

Регистр управления А таймера/счетчика 1 TCCR1A

Бит

7

6

5

4

3

2

1

0

$2F ($4F)

COM1A1

COM1А0

COM1В1

COM1B0

FOC1A

FOC1B

WGM11

WGM10

TCCR1A

Чтение/Запись

R/W

R/W

R/W

R'W

W

W

R/W

R/W

Исх. значение

0

0

0

0

0

0

0

0

·  Биты 7, 6 – СОМ1А1, СОМ1А0: Compare Output Mode A – Режим работы блока сравнения А. Эти биты определяют поведение вывода ОС1А при совпадении таймера/счетчика 1 с регистром OCR1A. В зависимости от режима работы таймера/счетчика 1 состояние вывода изменяется аналогично таймеру/счетчику 0 в соответствии с табл. 16 и 17.

Биты 5, 4 – СОМ1В1, СОМ1В0: Compare Output Mode В – Режим работы блока сравнения В. Эти биты определяют поведение вывода ОС1B при совпадении таймера/счетчика 1 с регистром OCR1B. В зависимости от режима работы таймера/счетчика 1 состояние вывода изменяется аналогично таймеру/счетчику 0 в соответствии с табл. 16 и 17.

·  Биты 3, 2 – FOC1A, FOC1B: Force Output Compare Принудительное изменение состояния выводов ОС1A и OC1B. При записи в эти разряды логической единицы состояние выводов ОС1A и OC1B изменяется в соответствии с установками разрядов СОМ1A1:СОМ1A0 и СОМ1B1:СОМ1B0. Прерывание при этом не генерируется и сброс таймера (в режиме СТС) не производится. Эта функция доступна только в режимах, которые не используются для генерации сигнала с ШИМ. При чтении разрядов всегда возвращается «0».

·  Биты 1, 0 – WGM11, WGM10: Waveform Generation Mode Режим работы таймера/счетчика. Данные биты совместно с битами WGM13 и WGM12 регистра TCCR1B определяют режим работы таймера/счетчика, как это показано в табл. 18.

Регистр управления В таймера/счетчика 1 TCCR1B

Бит

7

6

5

4

3

2

1

0

$2E($4E)

ICNC1

ICES1

WGM13

WGM12

CS12

CS11

CS10

TCCR1B

Чтение/Запись

R/W

R/W

R

R/W

R/W

R/W

R/W

R/W

Исходное значение

0

0

0

0

0

0

0

0

·  Бит 7 – ICNC1: Input Capturel Noise Canceler (4 CKs) Установка режима подавления шума на входе захвата. При сброшенном в состояние 0 бите ICNC1 функция подавления шума входного триггера захвата запрещена. Вход захвата переключается по первому нарастающему/падающему фронту, поступившему на вывод входа захвата IСР. При установленном в состояние 1 бите ICNC1 выполняются четыре последовательных опроса состояния вывода IСР и все четыре выборки должны иметь одинаковый (высокий/низкий), определяемый битом ICES1, уровень. Частота опроса соответствует частоте тактового сигнала.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19