Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Регистр масок прерываний по таймерам/счетчикам TIMSK




Бит                  
S39 ($59) OCIE2 TOIE2 TICIEl OCIElA OCIE1B ТОIЕ1 OCIE0 TOIE0 TIMSK
Чтение/Запись R/W R/W R/W R/W R'W R/W R/W R/W  
Исходное значение                  

· Бит 7 – OCIE2: Timer/Counter2 Output Compare Interrupt EnableРазрешение прерывания по совпадению таймера/счетчика 2. При установленном бите ОСIЕ2 и установленном бите I регистра статуса разрешается прерывание по совпадению содержимого регистра выходного сравнения OCR2 (Output Compare Register 2) и состояния таймера/счетчика 2. Вектор прерывания – $003.

· Бит 6 – TOIE2: Timer/Counter2 Overflow Interrupt EnableРазрешение прерывания по переполнению таймера/счетчика 2. При установленном бите Т01Е2 и установленном бите I регистра статуса разрешается прерывание по переполнению таймера/счетчика 2. Вектор прерывания – $004.

· Бит 5 – TICIEl: Timer/Counterl Input Capture Interrupt EnableРазрешение прерывания по захвату таймера/счетчика. При установленном бите TICIEl и установленном бите I регистра статуса разрешается прерывание по захвату таймера/счетчика 1 сигналом по выводу PD6 (ICP). Вектор прерывания – $005.

· Бит 4 – OCIE1A: Timer/Counterl Output CompareA Match Interrupt EnableРазрешение прерывания по совпадению регистра А с таймером/счетчиком 1. При установленном бите OCIE1A и установленном бите I регистра статуса разрешается прерывание по совпадению регистра выходного сравнения OCR1A с состоянием таймера/счетчика 1. Вектор прерывания – $006.

· Бит 3 – OCIE1В: Timer/Counterl Output CompareB Match Interrupt EnableРазрешение прерывания по совпадению регистра В с таймером/счетчиком 1. При установленном бите OCIE1B и установленном бите I регистра статуса разрешается прерывание по совпадению регистра выходного сравнения OCR1В с состоянием таймера/счетчика 1. Вектор прерывания – $007.

· Бит 2 – TOIE1: Timer/Counter1 Overflow Interrupt EnableРазрешение прерывания по переполнению таймера/счетчика 1. При установленном бите TOIE1 и установленном бите I регистра статуса разрешается прерывание по переполнению таймера/счетчика 1. Вектор прерывания – $008.

· Бит 1 – OCIE0: Timer/Counter0 Output Compare Match Interrupt EnableФлаг разрешения прерывания по совпадению таймера/счетчика 0. При установленном бите OCIE0 и установленном бите I регистра статуса разрешается прерывание по совпадению регистра выходного сравнения OCR0 с состоянием таймера/счетчика 0. Вектор прерывания – $013.

· Бит 0 – TOIEO: Timer/Counter0 Overflow Interrupt EnableРазрешение прерывания по переполнению таймера/счетчика 0. При установленном бите TOIEO и установленном бите I регистра статуса разрешается прерывание по переполнению таймера/счетчика 0. Вектор прерывания – $009.

При возникновении какого-либо прерывания в регистре флагов TIFR устанавливается соответствующий флаг.

Регистр флагов прерываний по таймерам/счетчикам TIFR

Бит                  
$38 ($58) OCF2 TOV2 ICFl OCFlA OCF1B ТОV1 OCF0 TOV0 TIFR
Чтение/Запись R/W R/W R/W R/W R'W R/W R/W R/W  
Исходное значение                  

· Бит 7 – OCF2: Output Compare Flag 2Флаг совпадения таймера/счетчика 2 и данных OCR2. Бит OCF2 устанавливается при совпадении состояния таймера/счетчика 2 и содержимого регистра OCR2.

· Бит 6 – TOV2: Timer/Counter2 Overflow FlagФлаг переполнения таймера/счетчика 2. Бит TOV2 устанавливается при переполнении таймера/счетчика 2. В режиме PWM (широгно-импульсного модулятора) этот бит устанавливается при смене таймером/счетчиком 2 направления счета при переходе через $00.

· Биты 5 – ICF1: Input Capture Flag 1Флаг входного захвата таймера/счетчика 1. Бит ICF1 устанавливается в случае захвата входа и показывает, что состояние таймера/счетчика 1 переслано во входной регистр захвата ICR1.

· Бит 4 – OCF1A: Output Compare Flag 1АФлаг совпадения выхода 1А. Бит OCF1A устанавливается при совпадении состояния таймера/счетчика 1 и содержимого регистра OCR1A.

· Бит 3 – OCF1В: Output Compare Flag 1ВФлаг совпадения выхода 1В. Бит OCF1B устанавливается при совпадении состояния таймера/счетчика 1 и содержимого регистра OCR1B.

· Бит 2 – TOV1: Timer/Counterl Overflow FlagФлаг переполнения таймера/счетчика 1. Бит TOV1 устанавливается при переполнении таймера/счетчика 1. В режиме PWM этот бит устанавливается при смене таймером/счетчиком 1 направления счета при переходе через $00.

· Бит 1 – OCF0: Output Compare Flag 0 – Флаг прерывания по событию «Совпадение» таймера/счетчика 0. Бит OCF0 устанавливается при совпадении состояния таймера/счетчика 0 и содержимого регистра OCR0.

· Бит 0 – TOV0: Timer/Counter0 Overflow FlagФлаг переполнения таймера/счетчика 0. Бит TOV0 устанавливается при переполнении таймера/счетчика 0.

Каждое из прерываний по таймерам/счетчикам выполняется при установленном бите I в регистре SREG, установленных бите разрешения прерывания и соответствующем флаге прерывания. Флаг прерывания аппаратно сбрасывается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической единицы. Программно установить флаг таймера/счетчика, записав в него логическую единицу, невозможно.

8-разрядный таймер/счетчик 0 осуществляет счет в регистре TCNT0.

Таймер/счетчик 0 - TCNT0

Бит                  
$32 ($52) MSB             LSB TCNT0
Чтение/Запись R/W R/W R/W R/W R/W R/W R/W R/W  
Исходное значение                  

Аналогичный формат имеет регистр сравнения таймера/счетчика 0 OCR0, его адрес – $3C ($5C).

Таймер/счетчик 0 управляется регистром управления TCCR0.

Регистр управления таймером/счетчиком 0TCCR0

Бит                  
S33 ($53) FOC0 WGM00 COM0l COM00 WGM01 CS02 CS01 CS00 TCCR0
Чтение/Запись W R/W R/W R/W R/W R/W R/W R/W  
Исходное значение                  

· Бит 7 – FOC0: Force Output CompareПринудительное изменение состояния вывода ОС0 (режимы Normal и СТС). При записи лог. 1 в этот разряд состояние вывода ОС0 изменяется в соответствии установкам разрядов СОМ01:СОМ00. Прерывание при этом не генерируется и сброс таймера (в режиме СТС) не производится. В режимах Fast PWM и Phase Correct PWM этот разряд должен быть сброшен в «0». При чтении разряда всегда возвращается «0».

· Биты 6, 3 – WGM00:01: Waveform Generation ModeРежим работы таймера/счетчика. Эти разряды определяют режим работы таймера/счетчика 0 в соответствии с табл. 14:

Таблица 14. Режимы работы таймера/счетчика 0

Номер режима WGM01 WGM00 Название режима
      Normal
      Phase correct PWM
      СТС (сброс при совпадении)
      Fast PWM

· Биты 5, 4 – COM01:00: Compare Output ModeРежим работы блока сравнения. Эти разряды определяют поведение вывода ОС0 при наступлении события «Совпадение». Влияние содержимого этих разрядов на состояние вывода зависит от режима работы таймера/счетчика.

· Биты 2, 1, 0 – CS02, CS01, CS00: Clock SelectВыбор тактовой частоты. Эти биты позволяют выбрать источник тактового сигнала для таймера/счетчика 0: системный тактовый сигнал ТС с частотой fТС, масштабированный тактовый сигнал с выхода определенной ступени предварительного делителя частоты или внешний сигнал, поступающий на вход T0, а также запускать и останавливать таймер/счетчик 0 (см. табл. 15). Если таймер/счетчик 0 используется как счетчик, то вывод Т0 конфигурируется как вход.

Таблица 15. Выбор источника тактового сигнала

CS02 CS01 CS00 Описание
      Таймер/счетчик 0 остановлен
      fТС
      fТС / 8
      fТС / 64
      fТС / 256
      fТС / 1024
      Внешний вывод Т0, падающий фронт
]     Внешний вывод Т0, нарастающий фронт

Наиболее простой режим работы таймера/счетчика 0 – режим Normal. В этом режиме счетный регистр TCNT0 функционирует как обычный суммирующий счетчик, по каждому импульсу тактового сигнала осуществляется его инкрементирование. При переходе через значение $FF возникает переполнение, и счет продолжается со значения $00. Флаг прерывания по переполнению TOV0 при этом устанавливается в 1. При равенстве счетного регистра и регистра сравнения OCR0 устанавливается соответствующий флаг прерывания OCF0 и, если бит OCIE0 регистра маски установлен в 1, генерируется прерывание. Наряду с установкой флага при равенстве счетного регистра и регистра сравнения может изменяться состояние вывода ОС0 микроконтроллера. Каким образом оно будет изменяться, определяется битами СОМ01:СОМ00 регистра управления TCCR0 в соответствии с табл. 16.

Таблица 16. Управление выводом OC0 в режимах Normal и CTC

COM01 COM00 Описание
    Таймер/счетчик 0 отключен от вывода ОС0
    Состояние вывода меняется на противоположное
    Вывод сбрасывается в 0
    Вывод устанавливается в 1

В режиме CTC счетный регистр тоже функционирует как обычный суммирующий счетчик, инкрементирование которого осуществляется по каждому импульсу тактового сигнала. Однако максимально возможное значение счетного регистра и, следовательно, разрешающая способность счетчика определяются регистром сравнения OCR0. После достижения значения, записанного в регистре сравнения, счет продолжается со значения $00. При достижении счетчиком максимального значения устанавливается флаг OCF0 и, если бит ОСIE0 регистра маски установлен в 1, генерируется прерывание. Одновременно с установкой флага может изменяться состояние вывода ОС0 микроконтроллера в зависимости от значений бит СОМ01:СОМ00 в соответствии с табл. 16. Путем использования переключения вывода OC0 в этом режиме в противоположное состояние можно формировать сигнал заданной частоты (в зависимости от содержимого регистра сравнения).

Режим 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 при равенстве регистров TCNT0 и ОСR0, устанавливается в 1 при сбросе счетчика – в режиме Fast PWM или по совпадению при обратном счете – в режиме Phase Correct PWM (неинвертированный ШИМ)
    Устанавливается в 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.

Таймер/счетчик 1TCNT1 (TCNT1H и TCNT1L)

Бит                  
$2D ($4D) MSB               TCNT1H
$2C ($4C)               LSB TCNT1L
                   
Чтение/Запись 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  
Исходное значение                  
                   

Этот регистр содержит текущее значение 16-разрядного таймера/счетчика 1. С тем чтобы CPU могло считывать/записывать и старший и младший байты этого регистра одновременно, обращение к нему реализовано посредством 8-разрядного регистра временного хранения ТЕМР.

· Запись в таймер/счетчик 1TCNT1:

Когда CPU производит запись в старший байт (TCNT1H) записываемые данные размещаются в регистре TEMP. Затем, когда CPU производит запись в младший байт (TCNT1L), данные младшего байта объединяются с байтом данных регистра TEMP и все 16 битов одновременно переписываются в регистр таймера/счегчика TCNT1. Следовательно, при 16-разрядных операциях записи обращение к старшему байту (TCNT1Н) должно выполняться первым.

· Чтение таймера/счетчика 1TCNT1:

Когда 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.

Регистр управления А таймера/счетчика 1TCCR1A

Бит                  
$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  
Исх. значение                  

· Биты 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.

Регистр управления В таймера/счетчика 1TCCR1B

Бит                  
$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  
Исходное значение                  

· Бит 7 – ICNC1: Input Capturel Noise Canceler (4 CKs)Установка режима подавления шума на входе захвата. При сброшенном в состояние 0 бите ICNC1 функция подавления шума входного триггера захвата запрещена. Вход захвата переключается по первому нарастающему/падающему фронту, поступившему на вывод входа захвата IСР. При установленном в состояние 1 бите ICNC1 выполняются четыре последовательных опроса состояния вывода IСР и все четыре выборки должны иметь одинаковый (высокий/низкий), определяемый битом ICES1, уровень. Частота опроса соответствует частоте тактового сигнала.

· Бит 6 – ICES1: Input Capturel Edge SelectВыбор фронта срабатывания на входе захвата. При сброшенном в состояние 0 бите ICES1 содержимое таймера/счетчика 1 по падающему фронту на выводе входа захвата ICP пересылается в регистр входного захвата ICR1. При установленном в 1 бите ICES1 содержимое таймера/счетчика 1 пересылается в регистр входного захвата ICR1 по нарастающему фронту на выводе входа захвата ICP.

· Бит 5– Res: Reserved BitЗарезервированный бит. Данный бит в микроконтроллерах ATmega8535 зарезервирован и при считывании всегда покажет состояние 0.

· Биты 4, 3 – WGM13, WGM12: Waveform Generation ModeРежим работы таймера/счетчика. Совместно с разрядами WGM11, WGM10регистра TCCR1A определяют режим работы таймера/счетчика 1, как это показано в табл. 18.

· Биты 2, 1, 0 – CS12, CS11, CS10: Clock SelectВыбор тактовой частоты. Эти биты позволяют выбрать источник тактового сигнала для таймера/счетчика 1: системный тактовый сигнал ТС, масштабированный тактовый сигнал с выхода определенной ступени предварительного делителя частоты или внешний сигнал, поступающий на вход T1, а также запускать и останавливать таймер/счетчик 1, аналогично соответствующим настройкам для таймера/счетчика 0 (см. табл. 15). Если таймер/счетчик 1 используется как счетчик, то вывод Т1 конфигурируется как вход.

В режиме Normal таймер/счетчик 1 функционирует как обычный суммирующий счетчик. При переходе через значение $FFFF возникает переполнение, устанавливается флаг прерывания по переполнению TOV1, и счет продолжается со значения $0000. Оба блока сравнения таймера в этом режиме могут использоваться как для генерации прерываний, так и для формирования сигналов. Состояние выходов ОС1А и ОС1В каждого из блоков сравнения определяется содержимым битов СОМ1А1, СОМ1А0 и СОМ1B1, СОМ1B0регистр TCCR1A аналогично таймеру/счетчику 0 в соответствии с табл. 16.

В режиме CTC (сброс при совпадении) счетный регистр тоже функционирует как обычный суммирующий счетчик. Однако максимально возможное значение счетного регистра и, следовательно, разрешающая способность счетчика определяются либо регистром сравнения OCR1A (режим 4), либо регистром захвата ICR1 (режим 12). После достижения максимального значения счет продолжается со значения $0000. Флаг прерывания TOV1 устанавливается при изменении значения счетного регистра с $FFFF на $0000. При достижении счетчиком максимального значения устанавливается флаг OCF1A, если модуль счета определяется регистром сравнения OCR1A, или ICFl, если модуль счета определяется регистром захвата ICR1. Одновременно с установкой соответствующих флагов может изменяться состояние выводов ОС1А и OC1B микроконтроллера (см. табл. 16).

Таблица 18. Режимы работы таймера/счетчика 1

Номер режима WGM13 WGM12 WGM11 WGM10 Название режима Модуль счета (TOP) Обновление регистров OCR1А и OCR1B Момент установки флага TOV1
          Normal $FFFF Немедленно $FFFF
          Phase correct PWM, 8-битный $00FF При TOP $0000
          Phase correct PWM, 9-битный $01FF При TOP $0000
          Phase correct PWM, 10-битный $03FF При TOP $0000
          CTC (сброс при совпадении) OCR1A Немедленно $FFFF
          Fast PWM, 8-битный $00FF При TOP При TOP
          Fast PWM, 9-битный $01FF При TOP При ТОР
          Fast PWM, 10-битный $03FF При TOP При ТОР
          Phase and Frequency Correct PWM ICR1 $0000 $0000
          Phase and Frequency Correct PWM OCR1A $0000 $0000
          Phase correct PWM ICR1 При TOP $0000
          Phase correct PWM OCR1A При TOP $0000
          CTC (сброс при совпадении) ICR1 Немедленно $FFFF
          Зарезервировано - - -
          Fast PWM ICR1 При TOP При ТОР
          Fast PWM OCR1A При TOP При ТОР

Режим Fast PWM («Быстродействующий ШИМ») позволяет генерировать высокочастотный сигнал с широтно-импульсной модуляцией. Отличие от одноименного режима 8-битных таймеров/счетчиков заключается в том, что 16-битный таймер/счетчик позволяет генерировать ШИМ-сигнал различной разрядности. Состояние счетчика инкрементируется от $0000 до максимального значения, после чего счетный регистр сбрасывается и цикл повторяется. В зависимости от номера режима максимальное значение счетчика (разрешение ШИМ-сигнала) либо является фиксированным значением (режимы 5, 6 и 7), либо определяется содержимым регистров таймера/счетчика ICR1 (режим 14) или OCR1A (режим 15). Разрешающая способность в режимах 14 и 15 переменная и может изменяться от 2 до 16 разрядов (модуль счета может иметь значение от $0003 до $FFFF). При работе с какими-либо фиксированными значениями модуля счета для задания модуля рекомендуется использовать регистр захвата, при этом регистр OCR1A может использоваться для формирования ШИМ-сигнала. Если же частота ШИМ-сигнала может часто меняться, то для задания модуля счета рекомендуется использовать регистр сравнения. В этом случае за счет буферизации записи в регистры сравнения исключается появление несимметричных импульсов сигнала на выходе.

При достижении счетчиком максимального значения устанавливается флаг прерывания TOV1. Одновременно с ним в режиме 14 устанавливается флаг ICF1, а в режиме 15 – флаг OCF1A. При равенстве содержимого счетного регистра и какого-либо регистра сравнения устанавливается соответствующий флаг прерывания и изменяется состояние соответствующего выхода (OC1A или OC1B). Состояние этих выходов определяется содержимым соответствующих битов COM согласно табл.17. Дополнительно к этой таблице в режимах 14 и 15 при значении битов СОМ1А1 = 0, СОМ1А0 = 1 состояние вывода OC1A при равенстве регистров TCNT1 и OCR1A меняется на противоположное.

В режиме Phase Correct PWM счетный регистр функционирует как реверсивный счетчик, состояние которого сначала изменяется от $0000 до максимального значения, а затем обратно до $0000. Соответственно, максимальная частота ШИМ-сигнала в этом режиме в 2 раза ниже максимальной частоты сигнала в режиме Fast PWM. В зависимости от номера режима максимальное значение счетчика (разрешение ШИМ-сигнала) либо является фиксированным значением (режимы 1, 2 и 3), либо определяется содержимым регистров таймера/счетчика ICR1 (режим 10) или OCR1A (режим 11). Разрешающая способность в режимах 14 и 15 переменная и может изменяться от 2 до 16 разрядов (модуль счета может иметь значение от $0003 до $FFFF). При достижении счетчиком максимального значения происходит смена направления счета и производится обновление содержимого регистра сравнения. Если модуль счета определяется регистром сравнения ICR1 (режим 10) или OCR1A (режим 11), одновременно с обновлением регистра сравнения устанавливается флаг ICF1 либо OCF1A соответственно.

При достижении счетчиком минимального значения ($0000) также происходит смена направления счета и одновременно устанавливается флаг прерывания TOV1. При равенстве содержимого счетного регистра и какого-либо регистра сравнения устанавливается соответствующий флаг прерывания и изменяется состояние соответствующего выхода. Состояние этих выходов определяется содержимым соответствующих битов COM согласно табл. 17. Дополнительно к этой таблице в режимах 10 и 11 при значении битов СОМ1А1 = 0, СОМ1А0 = 1 состояние вывода OC1A при равенстве регистров TCNT1 и OCR1A меняется на противоположное.

Режим Phase and Frequency Correct PWM («ШИМ с точной фазой и частотой») очень похож на режим Phase Correct PWM. Единственная принципиальная разница — обновление содержимого регистра сравнения происходит в момент достижения счетчиком минимального значения. Максимальное значение счетчика (разрешение ШИМ-сигнала) в этом режиме может определяться только регистрами таймера/счетчика ICRl (режим 8) или ОСR1А (режим 9), разрешающая способность переменная. Время прямого счета несмотря на изменение регистра сравнения всегда равно времени обратного счета, выходные импульсы симметричны, и соответственно частота генерируемого сигнала остается постоянной.

8-разрядный таймер/счетчик 2 осуществляет счет в регистре TCNT2, который имеет адрес $25 ($45). Таймер/счетчик 2 содержит 8-разрядный регистр сравнения OCR2 с адресом $23 ($43). Форматы этих регистров аналогичны форматам регистроф TCNT0 и OCR0 таймера/счетчика 0.

Таймер/счетчик 2 управляется регистром TCCR2.

Регистр управления таймером/счетчиком 2TCCR2

Бит                  
$25($45) FOC2 WGM20 COM21 CQM20 WGM21 CS22 CS21 CS20 TCCR2
Чтение/Запись R R/W R/W R/W R/W R/W R/W R/W  
Исходное значение                  

Назначение отдельных битов регистра TCCR2 аналогично назначению соответствующих битов регистра TCCR0 таймера/счетчика 0, кроме битов выбора тактовой частоты CS22, CS21 и CS20. Тактовый сигнал таймера/счетчика 2, имеющего асинхронный режим работы, может формироваться либо из системного тактового сигнала, либо — в асинхронном режиме — из сигнала от дополнительного кварцевого резонатора. При этом для подачи на счетный регистр может использоваться либо сам тактовый сигнал с частотой fТС, либо масштабированный тактовый сигнал с выхода определенной ступени предварительного делителя частоты в соответствии с табл. 19. Также с помощью битов CS можно запускать и останавливать таймер/счетчик 2.

Таблица 19. Выбор источника тактового сигнала таймера/счетчика 2

CS02 CS01 CS00 Описание
      Таймер/счетчик 2 остановлен
      fТС
      fТС / 8
      fТС / 32
      fТС / 64
      fТС / 128
      fТС / 256
]     fТС / 1024

В режимах Normal, CTC, Fast PWM и Phase Correct PWM с тактированиием системным тактовым сигналом таймер/счетчик 2 работает аналогично таймеру/счетчику 0. В асинхронном режиме непосредственная запись в регистры TCNT2, OCR2 и TCCR2 синхронизируется с тактовым сигналом таймера/счетчика. При записи числа в любой из указанных регистров оно сохраняется в специальном временном регистре, своем для каждого регистра таймера/счетчика. А пересылка содержимого временного регистра в рабочий регистр таймера/счетчика осуществляется по третьему после записи положительному фронту сигнала на выводе TOSC1. Соответственно запись нового значения можно производить только после пересылки содержимого временного регистра в регистр таймера/счетчика. Иначе возможно повреждение прежнего содержимого регистра и генерация прерывания. Для управления асинхронным режимом предназначен регистр состояния асинхронного режима ASSR.

Регистр состояния асинхронного режима таймера/счетчика 2ASSR

Бит                  
$22($42) - - - - AS2 TCN2UB OCR2UB TCR2UB ASSR
Чтение/Запись R R R R R/W R/W R/W R/W  
Исходное значение                  

· Биты 7 – 4– Res: Reserved BitsЗарезервированные биты.

· Бит 3 – AS2: Переключение режима работы. Если бит установлен в 1, то на вход предделителя таймера/счетчика 2 поступают импульсы с кварцевого генератора таймера/счетчика (асинхронный режим). В этом режиме выводы TOSC1 и TOSC2 используются для подключения кварцевого резонатора и соответственно не могут использоваться как контакты ввода/вывода общего назначения. Если бит сброшен в 0, то на вход предделителя поступает внутренний тактовый сигнал микроконтроллера. В этом случае выводы TOSC1 и TOSC2 являются линиями ввода/вывода общего назначения.

· Бит 2 – TCN2UB: Состояние обновления регистра TCNT2. При записи в регистр TCNT2 этот флаг устанавливается в 1, а после пересылки записываемого значения из регистра временного хранения в данный регистр флаг аппаратно сбрасывается в 0. Таким образом, сброшенный флаг TCN2UB означает, что регистр TCNT2 готов для записи в него нового значения.

· Бит 1 – OCR2UB: Состояние обновления регистра ОСR2. При записи в регистр сравнения этот устанавливается в 1, а после пересылки записываемого значения в регистр флаг аппаратно сбрасывается в 0. Сброшенный флаг OCR2UB означает, что регистр сравнения готов для записи в него нового значения.

· Бит 0 – TCR2UB: Состояние обновления регистра ТССR2. При записи в регистр управления этот флаг устанавливается в 1, а после пересылки записываемого значения в регистр флаг аппаратно сбрасывается в 0. Сброшенный флаг TCR2UB означает, что соответствующий регистр управления готов для записи в него нового значения.

В лабораторном комплексе изучение асинхронного режима работы таймер/счетчика 2 не предусмотрено.

При составлении программ необходимо учитывать, что частота кварцевого резонатора микроконтроллера – 8 МГц.

Варианты индивидуальных заданий

1. Запрограммировать таймер/счетчик 0 для индикации секунд на семисегментном индикаторе HG1. То есть каждую секунду на индикаторе должна меняться цифра: 0, 1, 2,..., 9, 0, 1, 2,..., 9 и т.д.

2. Запрограммировать таймер/счетчик 0 для динамической индикации цифр на семисегментных индикаторах HG1 и HG2. Таймер/счетчик 1 запрограммировать для счета нажатий кнопки. На индикацию выводить в виде шестнадцатеричного числа содержимое регистра TCNT1L. При нажатии другой кнопки содержимое счетчика сбрасывается в нуль.

3. Запрограммировать «бегущий» огонь на индикаторах VD1 – VD3, используя таймер/счетчик 0. Переключение тумблера изменяет темп "бега". Для возможности визуального наблюдения "бега" огня необходимо реализовать программным путем счетчик числа формирований флага переполнения таймера/счетчика.

4. Запрограммировать таймер/счетчик 0 для работы в ШИМ режиме для выдачи импульсов на вывод РB3 (ОС0) микроконтроллера, к которому подключен светодиод VD4. При включении одного тумблера скважность импульсов ШИМ уменьшается, а при включении другого – увеличивается. Уменьшение и увеличение скважности импульсов оценивается по свечению светодиода VD4.

5. Запрограммировать таймер/счетчик 1 для выдачи звукового сигнала на вывод РА1 микроконтроллера, к которому подключен звукоизлучатель НА1. При нажатии на кнопку частота сигнала уменьшается, при

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...