Широтно-импульсная модуляция (ШИМ)
Таймер 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 1x1 | COM 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 активирует подавление помех.
PWM10 | PWM11 | Разрешающая способность | Значение 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 1x1 | COM 1x0 | Действие при совпадении |
---|---|---|
0 | 0 | На выходе OC1x нет сигнала |
0 | 1 | На выходе OC1x нет сигнала |
1 | 0 | Неинвертирующий широтно-импульсный модулятор. При суммирующем подсчёте на выводе кстанавливается лог.0, при вычитающем - лог.1 |
1 | 1 | Инвертирующий широтно-импульсный модулятор. При суммирующем подсчёте на выводе кстанавливается лог.1, при вычитающем - лог.0 |
Если у вас есть какие-то замечания по этому документу или что-то осталось непонятно, то вы можете оставить свой отзыв или вопрос
Комментарии (1)
Анонимная отправка сообщений запрещена! Пожалуйста зарегистрируйтесь
Unknown
ответить