Скачиваний:
34
Добавлен:
01.05.2014
Размер:
2 Мб
Скачать

ЛАБОРАТОРНАЯ РАБОТА № 4

ИЗУЧЕНИЕ ТАЙМЕРОВ МИКРОКОНТРОЛЛЕРА 8XC196КС

Цель работы: 1. Изучение структуры и функциональных возможностей таймеров микроконтроллера I8XC196КС

2. Изучение порядка программирования таймеров микроконтроллера I8XC196KC.

3. Подготовка программ с использованием интегрированной cреды.

1. Общие сведения

1.1. Таймеры

8XC196KC содержит два 16 битных таймера, Таймер 1 и Таймер 2, которые входят в состав быстродействующего модуля ввода -вывода (High-Speed Input-Output; HSIO).

Таймер 1 - стандартный, 16-битный таймер свободного доступа, который увеличивается один раз каждые восемь тактов. Напомним, что при частоте тактового генератора 8 МГц один такт составляет 250 наносекунд. Таймер 1 - всегда датчик времени для HSI (High-Speed Input) модуля. Он может также выбираться как датчик времени для HSO (High-Speed Output) модуля. Два байта регистра TIMER1 содержат счет Таймера1. Вы можете инициализировать Таймер 1 значением, отличным от нуля, записывая его в регистр TIMER1 в HWindow 15. Если Вы изменяете значение TIMER1 после инициализизации HSI модуля, Вы можете нарушить относительные времена между HSI событиями. Также, изменение значения TIMER1 после инициализизации HSO модуля с Таймером 1 в качестве датчика времени, может вызвать пропуск команд HSO.

Таймер 2 - программируемый 16-битный счетчик, который может использоваться как датчик времени для HSO модуля, как суммирующий/вычитающий счетчик, или как дополнительный счетчик. Он может также фиксировать внешние события.

Таймер 2 может синхронизироваться или внутренне или внешне. Когда выбирается внешняя синхронизация, Вы можете выбрать в качестве источника синхронизации или контакт T2CLK (P2.3) или контакт HSI.1.

Регистр Timer 1

TIMER 1

0B/0AH

Hwindow 0 (Read),HWindow 15 (Write)

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

TIMER 1 (HI)

TIMER 1 (LO)

Максимальная скорость счета Таймера 2 - каждое время состояния ( быстрый режим приращения ) или каждые восемь времен состояния ( нормальный режим ).

Два байта регистра TIMER2 содержат значение Таймера 2. Вы можете инициализировать Таймер 2 значением, отличным от нуля, записывая его в регистр TIMER2 в HWindow 0. При использовании Таймера 2 как датчика времени для HSO, изменение значения TIMER2 после инициализизации HSO модуля, может заставить HSO пропускать команды.

Регистр Timer 2

TIMER 2

0D/0CH

Hwindow 0 (Read/ Write)

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

TIMER 2 (HI)

TIMER 2 (LO)

1.2. Программирование таймера 2

1.2.1. Служебные регистры

Ниже приведены регистры, которые воздействуют на работу и функции Таймера 2.

Input/Output Control Register 0

IOC0

15H

HWindow 0 (Write), HWindow 15 (Read)

7

6

5

4

3

2

1

0

T2CLK SCR

T2RSTSRC

T2RST_ENA

SW_T2RST

Input/Output Control Register 2

IOC2

0BH

HWindow 0 (Write), HWindow 15 (Read)

7

6

5

4

3

2

1

0

T2UD_ENA

FAST_T2_ENA

Input/Output Control Register 3

IOC3

0CH

HWindow 1 (Write), HWindow 15 (Read)

7

6

5

4

3

2

1

0

R

R

R

R

T2_ENA

Таблица 4.1

TIMER2

Содержит значение Таймера 2.

T2CAPTURE

Передний фронт на контакте P2.7 заставляет значение Таймера фиксироваться в этот регистр и генерирует прерывание Timer 2 Capture interrupt (INT11).

INT_MASK1

Маска прерывания INT_MASK1 разрешает или запрещает прерывания Таймера 2.

IOC0

Регистр управления 0. Выбирает внешние источники синхронизации и сброса для Таймера 2.

IOC1

Регистр управления 1. Выбирает источник прерывания для прерывания “Переполнение Таймера” (Timer Overflow interrupt (INT07). )

IOC2

Регистр управления 2. Разрешает или запрещает режим быстрого инкремента (приращения), суммирующую/вычитающую функцию счётчика и границу переполнения для вызова прерыванияTimer 2 Overflow interrupt (INT12).

IOC3

Регистр управления 3. Выбирает внутренний или внешний источник синхронизации для Таймера 2.

В табл.4.2 приведены индивидуальные биты и контакты порта, которые управляют опциями Таймера 2. Столбец два приводит результат установки бита или контакта порта. Столбец три приводит результат очистки бита или контакта порта.

Таблица 4.2

Служебные биты и контакты Таймера 2

Контакты Порта /Биты регистра

Бит = 1

Бит = 0

IOC0.1

Сброс Таймера 2 при

каждой установке этого бита

Нет действия.

IOC0.3

Допускает внешний сброс

Отключает внешний сброс

IOC0.5

HSI.0-внешний источник сброса

T2RST (P2.4) внешний источник сброса

IOCO.7

HSI.1-внешний источник часов

T2CLK (P2.3) - внешний источник часов

Допускает

Отключает

IOC1.3

Таймер 2 как источник прерывания “Переполнение Таймера” (INT00)

IOC2.0

Допускает режим быстрого приращения

Отключает режим быстрого приращения

IOC2.1

Допускает вычитающий счет

Только суммирующий счёт

IOC2.5

Прерывание на границе 7FFFH/8000H

Прерывание на границе 0FFFFH/0000H

T2UP-DN (P2.6)

Вычитающий счет если IOC2.1 = 1

Суммирующий счет если IOC2.1 = 1

T2CAPTURE (P2.7)

Фиксирует TIMER2 в T2CAPTURE когда происходит положительный переход на контакте P2.7 и логический уровень на нем остается устойчивым в течение одного времени состояния

В целях лучшего понимания принципов программирования Таймера 2 на рисунке 4.1 приведена логика управления Таймером 2.

Fosc/4

IOC0.7

Fosc/32

Рис.4.1. Логика управления Таймером 2

1.2.2. Выбор источника синхронизации

Таймер 2 считает и отрицательные и положительные переходы. Он может синхронизироваться или внутренне или внешне, в зависимости от состояния бита T2_ENA в регистре IOC3 (IOC3.0) (на рис.4.1 вход “CLOCK”) . Установка IOC3.0 выбирает внутренний источник тактов; очистка выбирает внешний источник тактов.

Если для таймера выбран источник внешней синхронизации, бит T2CLK_SRC в регистре IOC0 (IOC0.7) определяет, какой контакт будет использоваться в качестве внешнего источника синхронизации: если IOC0.7 = 0, то контакт T2CLK (P2.3), а если IOC0.7 = 1, то контакт HSI.1 .

Когда Таймер 2 синхронизируется внешне, бит FAST_T2_ENA (IOC2.0) ( на рис. 4.1 вход SLOW#/FAST ) управляет максимальной входной частотой на внешнем контакте . Когда бит FAST_T2_ENA установлен ( быстрый режим приращения ), Таймер 2 увеличивается один раз за каждое время состояния.

Когда бит FAST_T2_ENA очищен (нормальный режим ), Таймер 2 увеличивается один раз каждые восемь времен состояния.

Когда Таймер 2 синхронизируется внутренне, бит FAST_T2_ENA (IOC2.0) выбирает входную частоту синхронизации. Когда бит FAST_T2_ENA установлен ( быстрый режим приращения ), частота синхронизации равна Fosc/4 и Таймер 2 увеличивается один раз за каждое время состояния. Когда бит FAST_T2_ENA очищен (нормальный режим ), частота синхронизации равна Fosc/32, и Таймер 2 увеличивается один раз каждые восемь времен состояния.

Если Таймер 2 - датчик времени для HSO модуля, используют нормальный режим. HSO требует, чтобы каждые восемь времен состояния производилась выборка (сканирование) всех записей содержащихся в файле CAM (Content-Addressable Memory - ассоциативной памяти). Если Таймер 2 использует быстрый режим приращения, HSO события могут быть пропущены.

1.2.3. Установка направления счета

Бит T2UD_ENA в регистре IOC2 (IOC2.1) управляет будет ли Таймер 2 считать:

- только вверх (суммирующий) ;

- или вверх (суммирующий) или вниз (вычитающий);

в зависимости от значения на контакте T2UP-DN(P2.6) ( на рис.4.1 вход UP#/DOWN ).

Если IOC2.1 очищен, Таймер 2 всегда считает вверх. Если IOC2.1 установлен и T2UP-DN = 0 , Таймер 2 считает вверх. Если IOC2.1 установлен и T2UP-DN = 1, Таймер 2 считает вниз.

Когда Таймер 2 - датчик времени для HSO модуля, не изменяйте направление счета, поскольку HSO события могут произойти в неправильном порядке.

1.2.4. Выбор сброса Таймера 2.

Таймер 2 может сбрасываться аппаратными средствами, программным обеспечением, или HSO модулем ( на рис.4.1 вход RESET ). Установка бита T2RST_ENA (IOC0.3) допускает внешний источник сброса. Установка бита T2RST_SRC (IOC0.5) выбирает контакт HSI.0, а его очистка выбирает контакт T2RST (P2.4) в качестве внешнего источника сигнала сброса Таймера 2 . Передний фронт выбранного сигнала сбрасывает Таймер 2.

Программное обеспечение может сбрасывать этот таймер установкой бита SW_T2RST (IOC0.1).

HSO может сбрасывать этот таймер выполняя команду сброса Таймера 2. (CMD_TAG = 0EH ). Эта опция сброса особенно полезна при использовании HSO модуля для генерации широтно-импульсных модулируемых выходов (pulse width modulated (PWM) outputs).

Соседние файлы в папке Лабораторные работы по МПС