- •1. Структура и функционирование микроконтроллера mc68hc908gp32
- •1.1. Общая структура микроконтроллера mc68hc908gp32.
- •1.2. Организация и адресация памяти.
- •1.3. Генерация тактовых импульсов и запуск микроконтроллера.
- •1.4. Реализация прерываний.
- •1.5. Режимы функционирования.
- •2. Лабораторный стенд лс-1
- •2.1. Общее описание лабораторного стенда лс-1.
- •2.2. Основные функциональные узлы лабораторного стенда лс-1.
- •2.3. Включение лабораторного макета и подготовка его к работе.
- •3. Интегрированная среда программирования ics08gpgtz
- •3.1. Интегрированная среда WinIde.
- •3.2. Создание исходного текста и компиляция программы.
- •3.3. Моделирование выполнения программы.
- •3.4. Загрузка программы в память микроконтроллера.
- •3.5. Запуск и отладка программы на лабораторном макете.
- •Работа №1. Микроконтроллер mc68hc908gp32: регистровая структура, способы адресации, команды пересылки
- •Введение
- •Выполнение работы
- •Работа № 2. Микроконтроллер mc68hc908gp32: команды обработки данных
- •Введение
- •Выполнение работы
- •Работа № 3. Микроконтроллер mc68hc908gp32: команды управления программой и процессором.
- •Введение
- •Выполнение работы
- •Работа № 4. Микроконтроллер mc68hc908gp32: программирование на языке Ассемблера
- •Выполнение работы
- •Работа №5. Цифровая система на базе микроконтроллера mc68hc908gp32: реализация параллельного ввода-вывода данных.
- •Введение
- •Порядок выполнения работы
- •Работа №6. Цифровая система на базе микроконтроллера mc68hc908gp32: реализация последовательного обмена данными.
- •Введение
- •Порядок выполнения работы
- •Работа №7. Цифровая система на базе микроконтроллера mc68hc908gp32: ввод и обработка аналогового сигнала.
- •Введение
- •Порядок выполнения работы
- •Работа №8. Цифровая система на базе микроконтроллера mc68hc908gp32: реализация таймерных функций.
- •Введение
- •Порядок выполнения работы
- •Приложение 1. Описание жидкокристаллического индикатора
- •Приложение 2.
- •Приложение 3.
Порядок выполнения работы
1. Ознакомиться с функционированием модуля аналого-цифрового преобразователя ADC08, входящего в состав микроконтроллера MC68HC908GP32.
2. Написать подпрограмму инициализации модуля ADC08, обеспечивающую настройку модуля на обработку аналогового сигнала, поступающего на вход AD7, в непрерывном режиме с контролем результата преобразования по прерыванию. Реализовать процедуру обработки прерывания от ADC08.
3. Написать программу считывания значений датчика угла поворота с последующим выводом результатов на экран ЖКИ. Проверить правильность выполнения программы в реальных условиях. (ПРИМЕЧАНИЕ. Воспользоваться результатами лабораторной работы №5).
Работа №8. Цифровая система на базе микроконтроллера mc68hc908gp32: реализация таймерных функций.
Цель работы: изучение функционирования таймерного модуля TIM08 микроконтроллера MC68HC908GP32, получение практических навыков программирования микропроцессорных систем для работы в реальном масштабе времени.
Введение
В микропроцессорных системах таймер является одним из важнейших периферийных устройств, поскольку при выполнении задач управления часто возникает необходимость приема и выдачи управляющих сигналов в заданные моменты времени. Таймеры выполняют широкий набор функций, наиболее распространенными из которых являются функция счета, функция захвата, функция совпадения и функция формирования сигналов с широтно-импульсной модуляцией (ШИМ-сигналов). В данной работе рассматриваются возможности использования таймеров для формирования сигналов управления внешними устройствами.
Таймерный модуль TIM08. Микроконтроллер MC68HC908GP32 имеет два таймерных модуля TIM08, именуемых соответственно TIM1 и TIM2. Модуль TIM08 (рис.8.1) содержит блок таймера/счетчика и 2 таймерных канала, выводы которых служат для ввода внешних сигналов или для выдачи сигналов управления в заданные моменты времени.
Каждый блок таймера/счетчика содержит 16-разрядный счетчик TxCNT, 16-разрядный регистр модуля счета TxMOD и 8-разрядный регистр управления-состояния TxSC. В именах регистров символ x принимает значение 1 или 2 при обращении к соответствующему модулю TIM1 или TIM2. Каждый таймерный канал содержит 16-разрядный регистр данных TxCHi и 8-разрядный регистр управления-состояния канала TxSCi, где в качестве символа i указывается номер соответствующего канала: 0 или 1. Входы-выходы таймерных каналов T1CH0 и T1CH1 модуля TIM1 совмещены с выводами PTD4 и PTD5 параллельного порта D соответственно, а таймерных каналов T2CH0 и T2CH1 модуля TIM2 с выводами PTD6 и PTD7.
Рис.8.1. Структура модуля TIM08.
Регистры таймерных модулей располагаются в адресном пространстве ввода-вывода микроконтроллера (табл.8.1). Запись/считывание содержимого 16-разрядных регистров производится как обращение к двум 8-разрядным регистрам, один из которых содержит старший байт слова и отмечается суффиксом h, а второй содержит младший байт и отмечается суффиксом l (например, TxMODh-TxMODl).
Таблица 8.1. Адреса регистров таймерных модулей TIM1 и TIM2.
Модуль TIM1 |
Модуль TIM2 |
||||
Блок |
Регистр |
Адрес |
Блок |
Регистр |
Адрес |
Таймер/ счетчик |
T1SC |
$0020 |
Таймер/ счетчик |
T2SC |
$002B |
T1MODh-l |
$0021-22 |
T2MODh-l |
$002C-2D |
||
T1CNTh-l |
$0023-24 |
T2CNTh-l |
$002E-2F |
||
Таймерный канал 0 |
T1SC0 |
$0025 |
Таймерный канал 0 |
T2SC0 |
$0030 |
T1CH0h-l |
$0026-27 |
T2CH0h-l |
$0031-32 |
||
Таймерный канал 1 |
T1SC1 |
$0028 |
Таймерный канал 1 |
T2SC1 |
$0033 |
T1CH1h-l |
$0029-2A |
T2CH1h-l |
$0034-35 |
Функционирование таймера/счетчика в модуле TIM08 определяется содержимым регистра TxSC (рис.8.2,а), биты которого имеют следующее назначение:
TOF – признак переполнения таймера, доступный только для чтения; принимает значение TOF = 1, если содержимое счетчика TxCNT достигает максимального значения, заданного содержимым регистра TxMOD;
TOIE – разрешает при значении TOIE = 1 формирование запроса прерывания при переполнении счетчика (признак TOF = 1);
TSTOP – вызывает останов работы счетчика TxCNT при установке значения бита TSTOP = 1;
TRST – вызывает при установке значения TRST = 1 сброс содержимого счетчика TxCNT в состояние $0000 и установку значения битов PS2-PS0 = 000; этот бит доступен только для записи и устанавливается в 0 после сброса TxCNT;
PS2-PS0 – определяют коэффициент деления частоты переключения счетчика TxCNT (табл.8.2).
-
7
6
5
4
3
2
1
0
TOF
TOIE
TSTOP
TRST
-
PS2
PS1
PS0
а) TxSC
-
7
6
5
4
3
2
1
0
CHiF
CHiIE
MSiB
MSiA
ELSiB
ELSiA
TOVi
CHiMAX
б) TxSCi
Рис.8.2. Форматы содержимого таймерных регистров TxSC, TxSCi
При запуске микроконтроллера счетчик TxCNT устанавливается в состояние $0000, после чего осуществляется переключение счетчика с частотой Fc = Ft/Kd, где коэффициент деления Kd определяется значением битов PS2-PS0 в регистре TxSC (табл.8.2). Когда содержимое счетчика TxCNT достигает значения, записанного в регистре TxMOD, счетчик сбрасывается в нулевое состояние. При этом устанавливается значение признака переполнения TOF = 1, что вызывает прерывание процессора, если в регистре TxSC значение бита TOIE = 1. Модуль счета Mc, задаваемый содержимым регистра TxMOD, может принимать значения от 0 до 65535. При запуске микроконтроллера все биты TxMOD устанавливаются в 1. Останов и последующий запуск счетчика производится путем установки соответствующего значения бита TSTOP в регистре TxSC.
Содержимое счетчика TxCNT доступно только для чтения. Сброс в 0 содержимого счетчика производится путем установки значения бита TRST = 1. Для получения значения TxCNT сначала следует считать содержимое старшего байта из регистра TxCNTh, а затем младшего байта из регистра TxCNTl. В момент чтения старшего байта счетчика, содержимое TxCNTl автоматически сохраняется в буферном регистре, а при чтении младшего байта извлекается оттуда, т.е. будет получено фактическое значение TxCNT на момент обращения к регистру TxCNTh.
Таблица 8.2. Значения коэффициента деления частоты Kd для модуля TIM08.
-
PS2-0
Kd
0 0 0
1
0 0 1
2
0 1 0
4
0 1 1
8
1 0 0
16
1 0 1
32
1 1 0
64
1 1 1
Не используется
Функционирование i-го таймерного канала определяется содержимым его регистра управления-состояния TxSCi (рис.8.2,б), который содержит следующие биты:
CHiF – признак срабатывания i-го канала, доступный только для чтения; принимает значение CHiF = 1, если канал фиксирует событие в режиме захвата или формирует выходной сигнал в режиме совпадения;
CHiIE – разрешает при значении CHiIE = 1 формирование запроса прерывания при срабатывании i-го канала (признак CHiF = 1);
MSiB, MSiA – определяют режим работы i-го канала (табл.8.3);
ELSiB, ELSiA – определяют тип события в режиме захвата или уровень выходного сигнала в режиме совпадения (табл.8.3);
TOVi – задает вариант изменения сигнала на выходе TхCHi канала, работающего в режиме совпадения или режиме формирования ШИМ-сигналов, при переполнении таймера/счетчика: сохранение текущего состояния при значении TOVi = 0, изменение состояния на противоположное при значении TOVi = 1;
CHiMAX – определяет выбор коэффициента заполнения Km в режиме формирования ШИМ-сигналов: при значении CHiMAX=0 коэффициент Km определяется содержимым регистра данных i-го канала TxCHi, при CHiMAX=1 коэффициент Km= 1.
Для каждого таймерного канала в таблице векторов прерываний содержится вектор соответствующей подпрограммы обслуживания. Кроме действий определяемых пользователем подпрограмма обслуживания прерывания должна осуществлять сброс признака срабатывания i-го канала CHiF в регистре TxSCi в состояние 0.
Каждый канал таймера может работать в режиме захвата, совпадения или формирования ШИМ-сигналов в зависимости от значения битов MSiB-MSiA и ELSiB-ELSiA в регистре TxSCi (табл.8.3).
Таблица 8.3. Режимы работы таймерных каналов модуля TIM08.
Режим канала |
MSiB-A |
ELSiB-A |
Производимые действия |
Параллельный ввод-вывод данных |
X 0 |
0 0 |
TxCHi используется как вывод параллельного порта (начальное состояние – 1) |
X 1 |
0 0 |
TxCHi используется как вывод параллельного порта (начальное состояние – 0) |
|
Режим захвата |
0 0 |
0 1 |
Захват при положительном перепаде сигнала на входе TxCHi |
0 0 |
1 0 |
Захват при отрицательном перепаде сигнала на входе TxCHi |
|
0 0 |
1 1 |
Захват при любом перепаде сигнала на входе TxCHi |
|
Режим совпадения или выдачи ШИМ-сигналов (без буферизации) |
0 1 |
0 1 |
Изменение уровня на выводе TxCHi при совпадении |
0 1 |
1 0 |
Установка 0 на выводе TxCHi при совпадении |
|
0 1 |
1 1 |
Установка 1 на выводе TxCHi при совпадении |
|
Режим совпадения или выдачи ШИМ-сигналов (с буферизацией) |
1 X |
0 1 |
Изменение уровня на выводе TxCHi при совпадении |
1 X |
1 0 |
Установка 0 на выводе TxCHi при совпадении |
|
1 X |
1 1 |
Установка 1 на выводе TxCHi при совпадении |
При значении битов ELSiB-ELSiA=00 i-й таймерный канал не подключен к соответствующему внешнему выводу и этот вывод может использоваться для обмена данными через параллельный порт. При этом исходный уровень сигнала на выводе параллельного порта определяется значением бита MSiA (табл.8.3).
В режиме захвата (значения битов MSiB-MSiA = 00) возникновение определенного события на входе TxCHi таймерного канала вызывает запись текущего содержимого счетчика TxCNT в регистр данных канала TxCHi, фиксируя, таким образом, время поступления сигнала. При этом в регистре TxSCi устанавливается значение признака CHiF = 1, которое вызывает формирование запроса прерывания, если значение бита разрешения прерывания CHiIE = 1. Тип фиксируемого события (положительный, отрицательный или любой перепад потенциала на входе TxCHi) определяется значением битов ELSiB-ELSiA (табл.8.3). Считывание содержимого регистра данных TxCHi позволяет определить время поступления сигнала на вход TxCHi.
В режиме совпадения (значения битов MSiB-MSiA = 01) в регистр данных TxCHi соответствующего канала предварительно записывается код Kc, задающий время срабатывания. Когда содержимое счетчика TxCNT становится равным этому коду, на выходе TxCHi соответствующего канала формируется определенный сигнал, а в регистре TxSCi устанавливается значение признака CHiF = 1. Вид выдаваемого на выходе TxCHi сигнала (логический 0, логическая 1 или изменение уровня сигнала на противоположный) определяется значением битов ELSiB-ELSiA (табл.8.3). Установка признака CHiF = 1 вызывает формирование запроса прерывания таймера, если значение бита разрешения прерывания CHiIE = 1.
В режиме совпадения таймерный модуль также обеспечивает формирование сигналов с широтно-импульсной модуляцией (ШИМ) на выходе TxCHi, если при переполнении счетчика TxCNT реализовать изменение состояния этого выхода на противоположное в соответствующей подпрограмме обработки прерывания. В этом случае на выходе TxCHi будут формироваться импульсы длительностью Tp = Kc/Fc с периодом Tc = Mc/Fc. Таким образом, для формируемых ШИМ-сигналов обеспечивается коэффициент заполнения Q = Tp/Tc = Kc/Mc, где Kc и Mc – содержимое регистров TxCHi и TxMOD соответственно.
В процессе изменения (перезагрузки) содержимого регистра TxCHi, возможен пропуск момента совпадения. Если загружаемый в TxCHi код Kc оказывается меньше, чем текущее содержимое счетчика TxCNT в момент загрузки, то совпадение будет зафиксировано только в следующем цикле работы счетчика (после его переполнения и сброса в нулевое состояние). Таким образом, в течение текущего цикла работы счетчика на выход TxCHi не будет выдан сигнал совпадения, а в случае формирования ШИМ-сигналов возможен пропуск одного импульса. Исключить такие ошибки можно путем настройки канала на работу в режиме совпадения с буферизацией.
Режим совпадения с буферизацией включается при установке в регистре TxSCi значения бита MSiB = 1 (табл.8.3). Для реализации этого режима используются регистры данных TxCHi двух таймерных каналов одновременно, поэтому каналы объединяются в пару 0-1. В паре канал с номером 0 работает в режиме совпадения с буферизацией, используя регистр данных канала с номером 1 в качестве буфера для загрузки нового кода Kc. Регистр TxSC0 задает режим работы канала. Таким образом, для выдачи сигналов совпадения или ШИМ-сигналов в этом режиме может использоваться только выход TxCH0. Канал с нечетным номером 1 переводится в нерабочее состояние путем установки в его регистре TxSC1 значения битов ELSiB-ELSiA = 00, и выход TxCH1 может использоваться для параллельного ввода-вывода.
Следует отметить, что при формировании ШИМ-сигналов на выходе канала можно обеспечить выдачу сигнала с максимальным коэффициентом заполнения Q = 1, если установить в регистре TxSCi данного канала значение бита CHiMAX = 1. При установке бита CHiMAX = 1 выход TxCHi устанавливается в 1 в следующем цикле работы счетчика (после его переполнения и последующего сброса в 0) и сохраняет это значение, пока в каком либо из последующих циклов в регистр TxSCi не будет записано значение CHiMAX = 0. После этого, начиная со следующего цикла работы счетчика, будет продолжено формирование ШИМ-сигналов с заданным значением коэффициента Q на выходе TxCHi.
Управление светодиодным индикатором и пьезодинамиком с помощью таймерного модуля TIM1. В лабораторном стенде ЛС-1 к таймерным каналам T1CH1 и T1CH0 модуля TIM1 подключены, соответственно, светодиод и пьезодинамик. Соответствующая настройка каналов на работу в режиме совпадения или формирования ШИМ-сигналов позволяет управлять миганием светодиода с заданной частотой и длительностью вспышек, а также производить звуковые сигналы сложной формы в диапазоне частот от 20 Гц до 20 КГц с помощью пьезодинамика.