Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
228.doc
Скачиваний:
5
Добавлен:
30.04.2022
Размер:
1.41 Mб
Скачать

Контрольные вопросы

  1. Опишите состав и основные возможности среды Algorithm Builder.

  2. Каково быстродействие исследованных вами МК?

  3. Опишите состав РСП и назначение его разрядов.

  4. Опишите организацию портов МК AVR.

  5. Конфигурирование портов и управление данными.

  6. Представьте краткое содержание каждого проработанного вами алгоритма.

  7. Объясните, как изменяются в ходе эмуляции разряды РСП и значение SP и как используются эти изменения в программе.

  8. Приведите метод вычисления длительности перехода «1» из одного разряда порта B в другой и результат.

  9. Объясните механизмы действия макрооператоров и инструмента SETTER.

  10. Перечислите полученные навыки составления алгоритмов и навыки пользования средой Algorithm Builder.

Лабораторная работа № 15

Формирование алгоритмов управления в реальном времени

Цель работы – изучить возможности управления процессами в реальном времени.

1. Теоретические сведения

Архитектура таймеров

Микроконтроллеры AVR семейств Classic, Tiny и Mega имеют в своем составе от одного до нескольких таймеров/счетчиков общего назначения (плюс сторожевой таймер для предотвращения зацикливания программы), например модели ATmega256x включает 2 восьмиразрядных и 4 16-битных таймера.

Таймеры позволяют микроконтроллеру, не загружая процессор, решать следующие задачи:

•  отсчет равных интервалов времени заданной длительности, повтор алгоритма управления по истечении каждого такого временного интервала; обычно эту функцию называют формированием меток реального времени.

•  контроль за изменением состояния линии ввода МК;

•  измерение длительности сигнала заданного логического уровня на линии ввода МК;

•  подсчет числа импульсов внешнего сигнала на заданном временном интервале;

•  формирование на линии вывода МК сигнала заданного логического уровня с программируемой задержкой по отношению к изменению сигнала на линии ввода;

•  формирование на линии вывода МК импульсного сигнала с программируемой частотой и программируемым коэффициентом заполнения.

Отсюда следует функциональное назначение таймеров/ счетчиков.

В данной работе будет исследоваться 16-битный таймер Т1, поэтому рассмотрим его подробнее. Структурная схема Т1 приведена на рис. 15.1.

Рис. 15.1. Структурная схема таймера Т1

Функционирование T1 зависит от содержимого следующих регистров управления, состояния и данных (табл. 15.1):

Таблица 15.1

Название

Функция

Содержит

TCNT1

Счетный регистр таймера/счет­чика 1

текущий код (2 байта)

ICR1

Регистр захвата таймера/счетчика 1

защелкнутый код (2 байта)

OCR1A

Регистр совпадения выхода A

заданный код (2 байта)

OCR1B

Регистр совпадения выхода B

заданный код (2 байта)

TIFR

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

биты произошедших событий

TCCR1A

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

биты управления

TCCR1B

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

биты управления

TIMSK

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

биты маски

SREG

Регистр состояния – флаг разрешения прерываний I (см. табл. 14.1)

бит маски

Рассмотрим реализацию основных режимов работы таймера, начиная со счетного режима.

Основным элементом любого таймера является счетный регистр. Счетный регистр таймера/счетчика Т1 реализован как суммирующий (в режиме ШИМ – как суммирующий/вы­чи­та­ющий) 16-разрядный счетчик. Физически  регистр TCNT1 размещен в двух регистрах TCNT1H:TCNT1L. После подачи напряжения питания в регистре TCNT1 находится нуле­вое значение. При его переполнении устанавливается флаг TOV1 регистра событий TIFR (см. ниже) и счет начинается с нуля, а также запрос на прерывание (при наличии соответствующих разрешений – см. ниже).

TCNT1 доступен в любой момент времени как для чтения, так и для записи. При записи в счетный регистр во время работы таймера счет будет продолжен по следу­ющему за операцией записи импульсу тактового сигнала таймера/счетчи­ка. Чтобы при обращении ЦПУ микроконтроллера к этим регистрам запись или чтение обоих байтов содержимого счетного регистра происходило одновременно, обращение производится с использованием специального 8-разрядного регистра TEMP (этот регистр используется только процессором и программно недоступен). Этот же регистр используется и при обращении к остальным 16-разрядным регистрам таймера/ счетчика Т1: OCR1 (OCR1A и OCR1B) и ICR1. Прерывания на время обращения к любому из этих регистров долж­ны быть запрещены. Для выполнения полного цикла записи в 16-разрядный регистр первым должен быть загру­жен старший байт (регистр TCNT1Н). Для выполнения полной операции чтения 16-разрядного регистра первым должен быть прочитан младший байт (регистр TCNT1L). Установка счетного регистра в ненулевое состояние перед каждым началом отсчета является одним из способов задания временного интервала счета (другой способ описан ниже).

У правление таймером/счетчиком Т1 осуществляется с помощью регистров управления TCCR1A и TCCR1B (рис. 15.2).

Значение необходимых для выполнения работы разрядов этих регистров будет описано далее. Неиспользуемые разряды регистров доступны только для чтения и содержат «0». Начальное значение (после сброса микро­контроллера) всех разрядов регистра – «0».

В частности, выбор источника тактового сигнала, а также запуск и остановка тайме­ра/счетчика осуществляются с помощью разрядов CS12...CS10 регистра управления таймером TCCR1B. Соответствие между состоянием этих раз­рядов и режимом работы таймера/счетчика приведено в табл. 15.2.

Таблица 15.2

Выбор источника тактового сигнала для таймера/счётчика Т1

CS12

CS11

CS10

Источник тактового сигнала

2

1

0

Номера разрядов TCCR1B

0

0

0

Таймер/счетчик остановлен

0

0

1

СК (тактовый сигнал микроконтроллера)

0

1

0

CK/8

0

1

1

СК/64

1

0

0

СК/256

1

0

1

СК/1024

В таймере предусмотрен режим контроля совпадения текущего значения отсчета с одним из двух заранее заданных значений. Если состояние таймера/счетчика становится равным числу, находящемуся в одном из регистров совпадения, то в следующем машинном цикле устанавливается соответствующий этому регистру флаг события в регистре TIFR (для регистра OCR1A – флаг ОСЕ1А, для регистра OCR1В – флаг OCF1B) и генерируется запрос на прерывание. Разрешение прерываний осуществляется установкой в «1» соответствующих флагов регистра TIMSK (OCIE1, либо OCIE1A и OCIE1B для регист­ров OCR1, OCR1A и OCR1B соответственно). Сигнал совпадения выводится в качестве альтернативной функции на один из выводов МК, обозначаемый ОС1А для регистра OCR1A и ОС1В для OCR1В. Управление характером переключения сигнала ведется разрядами TCCR1A и TCCR1В. Для регистра OCR1А при равенстве данных счетного регистра и регистра сравнения может выполняться сброс таймера/счетчика (при установке в «1» бита TCCR1B.3 – имя бита CTC1). Именно так и следует действовать, если необходимо задавать временной интервал цикла таймера (другой, менее удобный способ описан выше).

Каждый регистр сравнения физически размещается в  двух регистрах ввода-вывода PBВ: OCR1A – OCR1AH: OCR1AL; OCR1B – OCR1BH:OCR1BL.

Реализованный в таймере режим захвата позволяет зафиксировать значение кода в счетном регистре в момент появления внешнего сигнала захвата, сохранив этот код в регистре захвата ICR1. В данной лабораторной работе он не исследуется.

Выполнение таймером своих функций отображается в регистре событий TIFR в значениях соответствующих битов (флагов) – табл. 15.3.

Таблица 15.3

Разряд

Название

Описание

5

ICF1

Флаг устанавливается в «1» при загрузке содержимого таймера/счетчика в регистр ICR1 (событие «захват»)

4

ОСF1A

Флаг устанавливается в «1» при совпадении значения таймера/ счет­чика Т1 с содержимым регистра OCR1A (событие «совпадение A»)

3

ОСF1B

Флаг устанавливается в «1» при совпадении значения таймера/ счетчика Т1 с содержимым регистра OCR1B (событие «совпадение B»)

2

TOV1

Флаг устанавливается в «1» при переполнении таймера/счетчика Т1

Каждый флаг этого регистра сбрасывается аппаратно при запуске подпрограммы обработки соответствующего прерывания или программно – записью в него лог. «1».

Для разрешения какого-либо прерывания от таймера необходимо установить в «1» соответствующий разряд регистра маски TIMSK1 (табл. 15.4) и, разумеется, флаг I регистра SREG.

Таблица 15.4

Разряд

Название

Описание

5

TICIE1

Флаг разрешения прерывания по событию «Input Capture» («захват») таймера/счетчика Т1

4

ОСIЕ1A

Флаг разрешения прерывания по событию «Compare Match A» («совпадение A») Т1

3

ОСIЕ1B

Флаг разрешения прерывания по событию «Compare Match B» («совпадение B») Т1

2

ТОIЕ1

Флаг разрешения прерывания по переполнению таймера-счетчика Т1

Для выполнения перечисленных функций каждый таймер использует один или более выводов МК. Как правило, эти выводы – линии портов ввода/вывода общего назначения, а функции, реализуемые этими выводами при работе совместно с таймерами/счет­чи­ка­­ми, являются их альтернативными функциями. В  этих случаях необходимо предварительно самостоятельно сконфигурировать эти выводы в соответствии с их функциональным назначением (выход или вход с/без подтягивающего резистора).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]