Широтно-импульсная модуляция (ШИМ)

Документация

Таймер T/C1 устроен сложнее T/C0 и содержит дополнительные регистры.

TCNT1 - счётный регистр

TCCR1A - регистр управления, определяет поведение выводов OC1A и OC1B (биты 1 и 2 порта B) при совпадении значений в регистре с TCNT1A и регистрах сравнения OCR1A/OCR1B, а также для выборов режимов ШИМ

TCCR1B - регистр управления

ICR1 - в этот регистр записывается текущее состояние счётчика при появлении активного входного сигнала на выводе ICP (бит 0 порта B)

OCR1A,OCR1B - содержимое этих регистров постоянно сравнивается с содержимым счётного регистра TCNT1. В случае совпадения выполняются действия, определённые регистром TCCR1A

Регистр TCCR1A

7 6 5 4 3 2 1 0
COM1A1 COM1A0 COM1B1  COM1B0  -  - PWM11  PWM10

Биты COM1A1/COM1A0 и COM1B1/COM1B0 определяют поведение выводов OC1A/OC1B при  совпадении значений регистров сравнения OCR1A/OCR1B со значением счётного регистра TCNT1. Возможные состояния битов показаны в таблице (случай для отключённого ШИМ)

COM 1x1COM 1x0Действие при совпадении
0 0 нет реакции
0 1 Состояние на выходе OC1x меняется на противоположное
1 0 На выходе OC1x установится лог.0
1 1 На выходе OC1x установится лог.1

Если в регистре TCCR1A включён широтно-импульсный модулятор, то счётчик Т/C1 работает как суммирующий и вычитающий счётчик, выполняя циклические переходы от значения 0x0000 до значения MAX и обратно до 0x0000. Число MAX рассчитывается по формуле:

MAX=2N-1,

где N - разрешающая способность ШИМ, заданная битами PWM10 и PWM11 регистра TCCR1A.

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

fшим=ft/c1/(MAX)

Частота ft/c1 выбирается при помощи битов CS10-CS12 регистра TCCR1B

Регистр TCCR1B

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

Биты 0-2 используются для выбора частоты тактирования (см. таблицу в разделе таймеры atmega8).

Если CTC1=1, то таймер возвращается в состояние 0x0000 по импульсу, следующему после совпадения счётчика и регистра сравнения OCR1A

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

Бит ICNC1 активирует подавление помех.

PWM10PWM11Разрешающая способностьЗначение MAXЧастота ШИМ
0 0  Режим ШИМ выключен
0 1 8 бит 255 ft/c1/255
1 0 9 бит 511
ft/c1/511
1 1 10 бит 1023 ft/c1/1023

При включенном режиме ШИМ поведение выходов OC1A/OC1B при совпадении значений в регистрах сравнения и счётном регистре TCNT1 задаётся битами  COM1A1/COM1A0 и COM1B1/COM1B0 регистра TCCR1A следующим образом:

COM 1x1COM 1x0Действие при совпадении
0 0 На выходе OC1x нет сигнала
0 1 На выходе OC1x нет сигнала
1 0 Неинвертирующий широтно-импульсный модулятор. При суммирующем подсчёте на выводе кстанавливается лог.0, при вычитающем - лог.1
1 1 Инвертирующий широтно-импульсный модулятор. При суммирующем подсчёте на выводе кстанавливается лог.1, при вычитающем - лог.0


Если у вас есть какие-то замечания по этому документу или что-то осталось непонятно, то вы можете оставить свой отзыв или вопрос

Комментарии (1)

avatar

Unknown

  • 07 Март 2011, 19:28

ответить

TCCR1A|=(1

Анонимная отправка сообщений запрещена! Пожалуйста зарегистрируйтесь