Шрифт:
Регистр флагов таймера TFLG1 (Timer Flag Register 1) располагается в памяти МК по адресу $008E. Формат регистра представлен на рис. 4.41. Каждому каналу таймера поставлен в соответствие флаг события CnF. Флаг CnF устанавливается в 1 автоматически, если в канале произошло событие входного захвата или выходного сравнения, в зависимости от текущего режима работы канала. Установленный бит события CnF вызовет прерывание, если в регистре TMSK1 установлен одноименный бит разрешения прерывания. Флаг события CnF должен быть сброшен под управлением программы, для чего в бит CnF должна быть записана 1. Существует альтернативный способ для сброса флагов события CnF. Если бит TFFCA в регистре TSCR установлен, то чтение или запись в регистр данных канала автоматически сбрасывает бит события этого канала.
Рис. 4.41. Формат регистров флагов таймера:TFLG1, TFLG2
Регистр флагов таймера TFLG2 (Timer Flag Register 2) располагается в памяти МК по адресу $008F. Формат регистра представлен на рис. 4.41. В регистре присутствует всего один флаг — флаг переполнения счетчика временной базы TOF. Этот флаг сбрасывается посредством записи 1 в уже установленный бит TOF.
Регистры данных каналов захвата/сравнения TCn — 16 разрядные. В памяти каждый регистр представлен двумя 8 разрядными регистрами: TCnH — старший байт регистра данных канала с номером n, TCnL — младший байт регистра данных канала с номером n. Если канал настроен на режим входного захвата, то в регистре данных TCn содержится код счетчика временной базы в момент последнего события входного захвата. Если же канал настроен на режим выходного сравнения, то в регистр данных TCn под управлением программы записывается код момента сравнения. Формат и адреса расположения в памяти восьми регистров данных каналов TC0…TC7 приведены на рис. 4.42.
Регистр данных канала 0: TC0H:TC0L | Адрес: $0090–0091 |
Регистр данных канала 1: TC1H:TC1L | Адрес: $0092–0093 |
Регистр данных канала 2: TC2H:TC2L | Адрес: $0094–0095 |
Регистр данных канала 3: TC3H:TC3L | Адрес: $0096–0097 |
Регистр данных канала 4: TC4H:TC4L | Адрес: $0098–0099 |
Регистр данных канала 5: TC5H:TC5L | Адрес: $009A–009B |
Регистр данных канала 6: TC6H:TC6L | Адрес: $009C–009D |
Регистр данных канала 7: TC7H:TC7L | Адрес: $009E–009FФормат регистров данных таймера:TCnH, TCnL |
Рис. 4.42.
1. Опишите два возможных способа для сброса флага события в регистре TFLG1.
Ответ: По первому способу биты флагов событий в каналах захвата/сравнения CnF в регистре TFLG1 сбрасываются посредством записи 1 в тот разряд регистра TFLG1В, который подлежит сбросу. Попытка записи 0 в разряд, который установлен в 1, не даст желаемого результата. п.1. По второму способу чтение или запись в регистр данных канала автоматически сбрасывает бит события этого канала, если в регистре TSCR установлен бит TFFCA.
2. Какой код должен быть записан в регистр режимов каналов захвата/сравнения TIOS, чтобы каналы с четными номерами работали в режиме входного захвата, а каналы с нечетными номерами в режиме выходного сравнения?
Ответ: $AA.
3. Какой код и в какие разряды регистра TCTL1 должен быть записан, чтобы настроить формирователь уровня канала 7 в режим установки 1?
Ответ: Код 11 в разряды OM7:OL7.
4. Какой код и в какие разряды регистра TCTL4 должен быть записан, чтобы настроить детектор события канала 1 в режим мониторинга за любым изменением уровня сигнала на входе канала 1?
Ответ: Код 11 в разряды EDG1B:EDG1A.
Познакомившись с основными подсистемами модуля таймера, мы рассмотрим несколько примеров применения. В первом примере мы будем использовать подсистему входного захвата для измерения частоты и периода следования импульсов некоторого логического сигнала. Во втором примере мы будем формировать на одном из выходов МК импульсную последовательность, используя для этого подсистему выходного сравнения и подсистему прерывания МК.
Для того чтобы воспользоваться аппаратными средствами универсального канала таймера для измерения частоты и периода следования импульсов, необходимо установить этот канал в режим входного захвата, а также выполнить ряд дополнительных установок конфигурации для счетчика временной базы, детектора события канала и подсистемы прерывания. Полное описание регистров специальных функций модуля таймера было приведено выше. В нашем примере мы будем использовать следующие биты и регистры управления: