Смекни!
smekni.com

Микроконтроллеры AVR (стр. 5 из 15)

СОМ1х1 СОМ1Х0 Действия в случае совпадения
0 0 Выходное значение отсутствует
0 1 При совпадении ОС1х переключается в другое состояние
1 0 При совпадении на выходе ОС1х устанавливает лог. 0
1 1 При совпадении на выходе ОС1х устанавливает лог. 1

В случае активизации режима ШИМ, разряды 4…7 в регистре TCCR1А имеют значения, отличные от указанных в табл. 1.6. Когда регистр управления TCCR1A определяет работу в конфигурации широтно-импульсного модулятора, то Т/С1 работает как суммирующий и вычитающий счетчик, осуществляя циклические переходы от 0x0000 к максимальному значению ТОР, и затем снова возвращаясь к 0x0000. При запрограммированной разрешающей способности ШИМ в N разрядов значение ТОР рассчитывается как:

Частота fШИМ, с которой повторяются циклы ШИМ, вычисляется по формуле:

причем частота таймера/счетчика fT/ci выбирается с помощью разрядов CSIO–CS 12 регистра TCCR1B, а разрешающая способность N – с помощью разрядов PWM10 и PWM11 регистра TCCR1A. Соответствующие взаимосвязи показаны в табл. 4.3.

Таблица 4.3. Выбор режима ШИМ (PWM11 и PWM10)

PWM11 PWWI10 Разрешающая способность Значение ТОР Частота ШИМ
0 0 Режим ШИМ не активен
0 1 8 разрядов 0x00FF (255) fT/С1 /510
1 0 9 разрядов 0x01FF (511) fT/С1 /1022
1 1 10 разрядов 0x03FF(1023) fT/С1 /2046

Когда состояние счетчика в регистре TCNT1 совпадает со значением 10 младших разрядов регистра OCR1A/OCR1B, то, в зависимости от состояния разрядов СОМ1А1/СОМ1А0 или СОМ1В1/СОМ1В0 регистра TCCR1A, вывод ОС1А/ОС1В последующим тактовым импульсом устанавливается или сбрасывается. Соответствующие взаимосвязи показаны в табл. 4.4.

Таблица 4.4. Возможности выбора для режима сравнения

СОМ1х1 СОМ1х0 Действие в случае совпадения
0 0 На выводе ОС1х нет никакого сигнала
0 1 На выводе ОС1х нет никакого сигнала
1 0 Неинвертирующий широтно-импульсный модулятор. В случае соответствия, при суммирующем подсчете на выводе ОС1х устанавливается лог. 0, а при подсчете с вычитанием – лог. 1
1 1 Инвертирующий широтно-импульсный модулятор. В случае соответствия, при суммирующем подсчете на выводе ОС1х устанавливается лог. 1, а при подсчете с вычитанием –лог. 0

В случае неинвертирующего широтно-импульсного модулятора, коэффициент заполнения g прямоугольного сигнала на выводе с ШИМ соответствует значению n / (2N - 1), где n – значение в соответствующем регистре OCR, a N – разрешающая способность ШИМ в разрядах (рис. 4.4).

Рис. 4.4. Определение периода Т, коэффициента заполнения g и среднего арифметического UAV прямоугольных импульсов напряжения U

Если регистр сравнения OCR1A/OCR1B содержит значение ТОР или 0, то на соответствующем выводе, в соответствии с правилами, представленными в табл. 4.5, постоянно поддерживаются уровень лог. 0 или лог. 1.

На рис. 4.5. на примере фиктивной трехразрядной ШИМ показано формирование неинвертированного и инвертированного выходного ШИМ – сигнала на выходе ОС1В. На диаграмме А показан примерный вид ступенчатого сигнала, соответствующий состоянию счетчика TCNT1, на диаграмме В – неинвертированный, а на диаграмме С – инвертированный выходной сигнал. Продолжительность периода TPWM в этом случае вычисляется в соответствии с рассмотренным выше уравнением TPWM = TT/C1 * (2N+1 - 2). Таким образом, при N=3 период ШИМ-сигнала состоит из 14 периодов тактового сигнала fT/C1 на входе TCNT1.

Таблица 4.5. Вывод ШИМ для особых случаев

СОМ1х1 СОМ1хО OCR1X Вывод ОС1х
1 0 0 0
1 0 ТОР 1
1 1 0 1
1 1 ТОР 0

Рис. 4.5. Способ формирования неинвертированных и инвертированных выходных ШИМ-сигналов

В данном примере регистр сравнения OCR1B содержит значение 5. В регистре TCNT1, учитывая тот факт, что его исходное значение равно 0, значение 5 появляется после пяти тактовых импульсов. На следующем тактовом импульсе, после распознания совпадения на выводе ОС 1В устанавливается уровень лог. 0 (рис. 1.12, В).

Регистр TCNT1 инкрементируется далее до тех пор, пока не будет достигнуто значение ТОР, которое при трехразрядной ШИМ составляет 7. Как только достигнуто значение ТОР, направление счета меняется на обратное, и регистр выполняет вычитание. После девятого тактового импульса, начиная от стартового значения 0, содержимое регистра TCNT1 опять совпадает с содержимым регистра OCR1B. На следующем тактовом импульсе на выходе ОС1В устанавливается уровень лог. 1.

Регистр TCNT1 декрементируется далее до тех пор, пока опять не будет достигнуто значение 0. Это происходит после в общей сложности четырнадцати тактовых импульсов, считая от начального значения 0. Таким образом завершается период ШИМ-сигнала, направление счета вновь меняется на обратное и регистр TCNT1 опять выполняет сложение. Как видно на рис. 1.12 (В), "высокая" составляющая выходного сигнала составляет 6 тактовых периодов, а "низкая" – 4. Таким образом, коэффициент заполнения g = 6/10 или g = 3/5. Аналогично, диаграмма С на рис. 1.12 показывает соотношения для инвертированного выходного ШИМ-сигнала.

В режиме ШИМ устанавливается флаг переполнения TOV1, если счетчик при достижении состояния 0 меняет направление счета на обратное. Это прерывание по Т/С1 при переполнении, как и при нормальной работе в режиме счетчика, вызывается в том случае, если установлен флаг общего разрешения прерываний I в регистре состояния SREG, а также флаг TOIE1 в регистре TIMSK. В соответствии с этим, прерывания при совпадении регистров TCNT1 и OCR1A/OCR1B вызываются тогда, когда в регистре TIMSK установлен флаг общего разрешения прерываний и флаг OCIE1A/OCIE1B.

В отношении таймера/счетчика Т/С1 осталось рассмотреть еще регистр управления TCCR1B (адресу 0х2Е в области ввода/вывода, адрес 0х4Е в SRAM). Структура регистра TCCR1B показана на рис. 4.6.

7 6 5 4 3 2 1 0
ICNC1 ICES1 CTC1 CS12 CS11 CS10

Рис. 4.6. Регистр TCCR1В таймера/счетчика Т/С1

Разряды 0 – 2 используются для выбора частоты тактирования Т/С1 (табл. 1.5). Если разряд СТС1 установлен в лог. 1, то Т/С1 возвращается в состояние 0x0000 по импульсу такта системной синхронизации, следующего после совпадения содержимого счетчика и регистра сравнения А. При работе в режиме ШИМ этот разряд на процесс работы никак не влияет.

Разряд ICES1 определяет, каким образом должна осуществляться передача состояния счетчика в регистр захвата ICR1: по нарастающему (ICES 1 = 1) или по ниспадающему фронту (ICES 1=0).

Разряд ICNC1 определяет, должно ли быть активизировано подавление помех (если ICNC1 = 0, то подавление помех отключено), Для подавления кратковременных импульсов помех, которые могут привести к ошибочному запуску, входной сигнал зондируется на протяжении четырех периодов такта системной синхронизации. Только после того как будут распознаны четыре последовательных низких или высоких уровня входного сигнала, что определяется разрядом ICES1, при активном подавлении помех будет выполнена запись текущего состояния счетчика в регистр ICR1.

Т/С2

Таймер/счетчик Т/С2 обычно имеет разрядность 8 бит и реализует функции сравнения на выходе и ШИМ, аналогичные Т/С1. Основная особенность Т/С2 заключается в том, что в качестве источника тактовых импульсов он может использовать генератор, независимый от системного. Для управления Т/С2 используются два регистра: ASSR (рис. 4.7) и TCCR2 (рис. 4.8).

7 6 5 4 3 2 1 0
AS2 TCN2UB OCR2UB TCR2UB

Рис. 4.7. Регистр ASSR таймера/счетчика Т/С2

Если установить в лог. 1 разряд AS2, то в качестве источника тактовых импульсов можно использовать внешний осциллятор. Оставшиеся три разряда (0-2) используются в программах для проверки того, что данные не записываются в регистры Т/С2 в тот момент, когда они обновляются аппаратно. Такая проверка необходима по той причине, что осциллятор Т/С2 работает асинхронно по отношению к системному осциллятору.


7 6 5 4 3 2 1 0
PWM2 COM21 COM20 CTC2 CS22 CS21 CS20

Рис. 4.8. Регистр TCCR2 таймера/счетчика Т/С2

Установка в лог. 1 разряда PWM2 переводит Т/С2 в режим ШИМ. Назначение разрядов COM21 и СОМ20 идентично назначению разрядов COM lxl и СОМ 1x0 таймера/счетчика Т/С1 – выбор режима сравнения на выходе.

Разряд СТС2 определяет, должен ли счетчик сбрасываться в нуль при совпадении его содержимого с регистром сравнения. Разряды 0 – 2 определяют частоту тактового сигнала, полученного с помощью предварительного делителя частоты такта системной синхронизации.

Таймеры/счетчики микроконтроллеров PIC

Описанное выше применение таймеров/счетчиков микроконтроллеров AVR справедливо также и для таймеров микроконтроллеров PIC. Здесь используются аналогичные принципы измерения ширины и частоты импульсов, а также широтно-импульсной модуляции, режимов сравнения и захвата.

В микроконтроллерах PIC могут использоваться три таймера: TMR0, TMR1 и TMR2.

TMR0

TMR0 (рис. 4.9) – это 8-разрядный таймер/счетчик. Таким образом, счет для него ограничен диапазоном 0-255. Его тактирование реализуется от внешнего источника или на основании такта системной синхронизации.