Режим 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 |


