Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
evgenij-byvshev
7 лет назад

Программирование микроконтроллеров. Часть 8-2

Режимы работы таймеров-счетчиков

Продолжение описания работы таймеров-счетчиков Т1 и Т2.


Таймер-счетчик T1 (16 бит)

Характеристики таймера/счетчика T1 (16 бит):

  • Два независимых выхода по совпадению
  • Таймер сброса при совпадении
  • Один вход захвата
  • Блок шумоподавления входа захвата
  • Изменяемый период ШИМ сигнала
  • Фазовый корректор ШИМ сигнала
  • Изменяемый период ШИМ сигнала
  • Тактовый генератор
  • Три независимых источника прерывания

Регистры таймера/счетчика T1:

  • TCNT1 - счетный регистр таймера/счетчика T1* (16 бит)
  • OCR1A - регистр сравнения A (16 бит)*
  • OCR1B - регистр сравнения B (16 бит)
  • TIMSK1 - регистр маски прерываний для таймера/счетчика T1
  • TIFR1 - регистр флагов прерываний для таймера/счетчика T1
  • TCCR1A - регистр управления A
  • TCCR1B - регистр управления B
  • TCCR1C - регистр управления C
  • ICR1 - регистр захвата (16 бит)

Источником тактового сигнала для таймера/счетчика T1 может быть, как тактовый сигнал используемый для всего микроконтроллера с использованием предделителя, так и сигнал, поступающий на вход T1 (11 ножка). Если не выбрано ни одного источника тактового сигнала, то таймер-счетчик останавливается.

Регистр TCCR1A:

Режим работы таймера/счетчика T1 устанавливается регистрами TCCR1A и TCCR1B
Биты COM1A1 (7) и COM1A0 (6) влияют на то, какой сигнал появится на выводе OC1A (15 ножка) при совпадении с A (совпадение значения счетного регистра TCNT1 со значением регистра сравнения OCR1A):

1. Обычный режим

  • 00 - вывод OC1A не функционирует
  • 01 - изменение состояния вывода OC1A на противоположное при совпадении с A
  • 10 - сброс вывода OC1A в 0 при совпадении с A
  • 11 - установка вывода OC1A в 1 при совпадении с A

2. Режим ШИМ

  • 00 - вывод OC1A не функционирует
  • 01 - если биты WGM13 - WGM10 установлены в (0000 - 1101), вывод OC1A не функционирует
  • 01 - если биты WGM13 - WGM10 установлены в 1110 или 1111, изменение состояния вывода OC0A на противоположное при совпадении с A
  • 10 - сброс вывода OC1A в 0 при совпадении с A, установка вывода OC1A в 1 если регистр TCNT1 принимает значение 0x00 (неинверсный режим)
  • 11 - установка вывода OC1A в 1 при совпадении с A, установка вывода OC1A в 0 если регистр TCNT1 принимает значение 0x00 (инверсный режим)

3. Режим коррекции фазы ШИМ

  • 00 - вывод OC1A не функционирует
  • 01 - если биты WGM13 - WGM10 установлены в (0000 - 1100, 1010, 1100 - 1111), вывод OC1A не функционирует
  • 01 - если биты WGM13 - WGM10 установлены в 1101 или 1011, изменение состояния вывода OC1A на противоположное при совпадении с A
  • 10 - сброс вывода OC1A в 0 при совпадении с A во время увеличения значения счетчика, установка вывода OC1A в 1 при совпадении с A во время уменьшения значения счетчика
  • 11 - установка вывода OC1A в 1 при совпадении с A во время увеличения значения счетчика, сброс вывода OC1A в 0 при совпадении с A во время уменьшения значения счетчика

Биты COM1B1 (5) и COM1B0 (4) влияют на то, какой сигнал появится на выводе OC0B (12 ножка) при совпадении с B (совпадение значения счетного регистра TCNT1 со значением регистра сравнения OCR1B):

1. Обычный режим

  • 00 - вывод OC1B не функционирует
  • 01 - изменение состояния вывода OC1B на противоположное при совпадении с B
  • 10 - сброс вывода OC1B в 0 при совпадении с B
  • 11 - установка вывода OC1B в 1 при совпадении с B

2. Режим ШИМ

  • 00 - вывод OC1B не функционирует
  • 01 - вывод OC1B не функционирует
  • 10 - сброс вывода OC1B в 0 при совпадении с B, установка вывода OC1B в 1 если регистр TCNT1 принимает значение 0x00 (неинверсный режим)
  • 11 - установка вывода OC1B в 1 при совпадении с B, установка вывода OC1B в 0 если регистр TCNT1 принимает значение 0x00 (инверсный режим)

3. Режим коррекции фазы ШИМ

  • 00 - вывод OC1B не функционирует
  • 01 - вывод OC1B не функционирует
  • 10 - сброс вывода OC1B в 0 при совпадении с B во время увеличения значения счетчика, установка вывода OC1B в 1 при совпадении с B во время уменьшения значения счетчика
  • 11 - установка вывода OC1B в 1 при совпадении с B во время увеличения значения счетчика, сброс вывода OC1B в 0 при совпадении с B во время уменьшения значения счетчика

Регистр TCCR1B:

Биты WGM13 (4), WGM12 (3) регистра TCCR1B и биты WGM11 (1), WGM10 (0) регистра TCCR1A устанавливают режим работы таймера-счетчика T1:

  • 0000 - обычный режим
  • 0001 - коррекция фазы PWM, 8-бит
  • 0010 - коррекция фазы PWM, 9-бит
  • 0011 - коррекция фазы PWM, 10-бит
  • 0100 - режим счета импульсов (OCR1A) (сброс при совпадении)
  • 0101 - PWM, 8-бит
  • 0110 - PWM, 9-бит
  • 0111 - PWM, 10-бит
  • 1000 - коррекция фазы и частоты PWM (ICR1)
  • 1001 - коррекция фазы и частоты PWM (OCR1A)
  • 1010 - коррекция фазы PWM (ICR1)
  • 1011 - коррекция фазы и частоты PWM (OCR1A)
  • 1100 - режим счета импульсов (ICR1) (сброс при совпадении)
  • 1101 – резерв
  • 1110 - PWM (ICR1)
  • 1111 - PWM (OCR1A)

Бит ICNC1 (7) регистра TCCR1B управляет схемой подавления помех блока захвата (0 - выключена / 1 - включена).

Бит ICES1 (6) регистра TCCR1B выбирает активный фронт регистра захвата (0 - по спадающему фронту сигнала / 1 - по нарастающему фронту сигнала).

Биты CS12 (2), CS11 (1), CS10 (0) регистра TCCR1B устанавливают режим тактирования и предделителя тактовой частоты таймера/счетчика T1:

  • 000 - таймер/счетчик T1 остановлен
  • 001 - тактовый генератор CLK
  • 010 - CLK/8
  • 011 - CLK/64
  • 100 - CLK/256
  • 101 - CLK/1024
  • 110 - внешний источник на выводе T1 (11 ножка) по спаду сигнала
  • 111 - внешний источник на выводе T1 (11 ножка) по возрастанию сигнала
    Регистр TCCR1C:

Биты FOC1A (7) и FOC1B (6) регистра TCCR1С принудительно устанавливают значение на выводах OC1A и OC1B.

Регистр TIMSK1:

Управление прерываниями от таймера осуществляется в регистре TIMSK1.
Бит ICIE1 (5) разрешает прерывание по захвату, биты OCIE1B (2) и OCIE1A (1) разрешают прерывания при совпадении с A и B, бит TOIE1 (0) разрешает прерывание по переполнению при установке 1. Если в эти биты записать 0, прерывания от таймера/счетчика будут запрещены.

Также есть регистр флагов прерываний TIFR1, который показывает какое прерывание поступило от таймера/счетчика T0.

Регистр TIFR1:

Биты ICF1 (5), OCF1B (2), OCF1A (1) и TOV1 (0) устанавливаются в 1 в зависимости от того, какое прерывание поступило - захват, совпадение с A, B или переполнение.


Таймер/счетчик T2 (8 бит)

Характеристики таймера-счетчика T2 (8 бит):

  • Два независимых выхода по совпадению
  • Таймер сброса при совпадении
  • Изменяемый период ШИМ сигнала
  • Фазовый корректор ШИМ сигнала
  • Тактовый генератор
  • Возможность работы от независимого внешнего часового тактового генератора 32 кГц
  • Три независимых источника прерывания
  • Делитель частоты 10-бит
  • Асинхронный режим

Регистры таймера-счетчика T2:

  • TCNT2 - счетный регистр таймера-счетчика T2
  • OCR2A - регистр сравнения A
  • OCR2B - регистр сравнения B
  • TIMSK2 - регистр маски прерываний для таймера-счетчика T2
  • TIFR2 - регистр флагов прерываний для таймера-счетчика T2
  • TCCR2A - регистр управления A
  • TCCR2B - регистр управления B
  • ASSR - регистр асинхронного режима
  • GTCCR - главный регистр всех таймеров-счетчиков

Источником тактового сигнала для таймера-счетчика T2 может быть тактовый сигнал используемый для всего микроконтроллера с использованием предделителя. Если не выбран коэффициент деления, то таймер-счетчик останавливается.

Режим работы таймера-счетчика T2 устанавливается регистрами TCCR2A и TCCR2B аналогично таймеру-счетчику T0.

Регистр TCCR2B:

Разница лишь в битах CS22 (2), CS21 (1), CS20 (0) регистра TCCR2B которые устанавливают режим тактирования.

  • 000 - таймер остановлен
  • 001 – CLK
  • 010 - CLK/8
  • 011 - CLK/32
  • 100 - CLK/64
  • 101 - CLK/128
  • 110 - CLK/256
  • 111 - CLK/1024

Также у таймера/счетчика есть асинхронный режим работы.

Регистр ASSR:

Бит EXCLK (6) регистра ASSR разрешает использование внешнего тактового сигнала от кварцевого резонатора 32 кГц при записи в него 1.
Бит AS2 (5) регистра ASSR управляет способом тактирования (1 - от внешнего резонатора 32 кГц, подключенного к TOSC1 (9 ножка) / 0 - от внутреннего генератора CLK)/
Бит TCN2UB (4) регистра ASSR показывает доступен ли для записи регистр TCNT2 (1-недоступен / 0 - доступен).
Бит OCR2AUB (3) регистра ASSR показывает доступен ли для записи регистр OCR2A (1-недоступен / 0 - доступен).
Бит OCR2BUB (2) регистра ASSR показывает доступен ли для записи регистр OCR2B (1-недоступен / 0 - доступен).
Бит TCR2AUB (1) регистра ASSR показывает доступен ли для записи регистр TCCR2A (1-недоступен / 0 - доступен).
Бит TCR2BUB (0) регистра ASSR показывает доступен ли для записи регистр TCCR2B (1-недоступен / 0 - доступен).

Регистр GTCCR:

Бит PSRASY (1) регистра GTCCR сбрасывает предделитель таймера/счетчика T2 если установить в 1, после этого бит сбрасывается в 0 автоматически.
Бит PSRASYNC (0) регистра GTCCR сбрасывает предделитель таймера/счетчика T0 и T1 если установить в 1, после этого бит сбрасывается в 0 автоматически.
Бит TSM (0) регистра GTCCR запрещает автоматический сброс битов PSRASY и PSRASYNC регистра GTCCR.


Если есть вопросы и предложения по этому уроку, пишите комментарии буду рад ответить на ваши вопросы.


Часть 1
Часть 2-1 Часть 2-2
Часть 3-1 Часть 3-2
Часть 4-1 Часть 4-2
Часть 5
Часть 6-1 Часть 6-2
Часть 7
Часть 8-1

21
588.466 GOLOS
На Golos с February 2017
Комментарии (2)
Сортировать по:
Сначала старые