Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч. пос. МПТ (2.04.12).pdf
Скачиваний:
404
Добавлен:
22.03.2015
Размер:
10.95 Mб
Скачать

Минимальный период, который может быть получен таким способом

нс, минимальная длительность импульса нс. Минимальный шаг настройки нс.

На рисунке (3.1.2) показана осциллограмма импульсов на одной из портовых линий микроконтроллера, генерируемых приведенной выше программой. Использовались следующие параметры: нс, , , что с тактовой частой МГц приводит к периоду импульсов нс и длительности нс.

Для сравнения приведем осциллограмму сигнала (рисунок 3.1.3), формируемого кодом без временной задержки при нулевом уровне оптимизации кода.

while (1)

{

FIO0SET= Маска ; FIO0CLR= Маска ;

}

Рисунок 3.1.3 – Осциллограмма импульсов без временной задержки

Параметры импульсов: период нс (частота МГц), длительность нс (без учета длительности среза). Точный подбор длительности импульса возможен вставкой между командами записи в порт нескольких функций nop(), которые компилируется в команду NOP, выполняемую 16,67 нс.

3.2 Формирование дискретного сигнала с помощью таймера

3.2.1 Задание

Разработать программу генератора напряжения формы меандра с частой Гц. Обеспечить формирование сигнала на выводе P0.7. Задачу решить с помощью прерывания от схемы совпадения таймера.

3.2.2 Общие рекомендации

Решение, примененное в предыдущей работе просто, но интересно лишь для демонстрации основных операций программирования микроконтроллера. Практической ценности такое решение не представляет, за исключением случая сравнительно небольших интервалов времени, например

163

долей миллисекунд. Недостаток в том, что программа «зависает» на 0,5 с и не может выполнять никаких других задач, кроме «мигания светодиодом». На практике формирование временной задержки производится с помощью таймера, схемы совпадения и системы прерываний. Настройка таймера и схемы совладения производится так, чтобы каждые 0,5 с вырабатывался запрос прерывания. Процедура обработки прерывания, вызываемая при этом автоматически, содержит команду инверсии порта. В этом случае микроконтроллер свободен для выполнения любого алгоритма, поскольку ожидание обеспечивается аппаратурой микроконтроллера параллельно.

Отметим, что низкая частота сигнала, которую предстоит получить на выводе P0.7 выбрана лишь для лучшей визуализации работы программы. Вообще предлагаемое решение можно применять при частотах сигнала до сотен килогерц. Алгоритм решения задачи показан на рисунке 3.2.1.

Основная программа

 

Процедура обработки прерывания

Начало

 

Начало

1

 

7

Настройка портовых

 

Инверсия

линий на вывод

4

портовой линии

 

 

2

Настройка системы

8

 

Настройка таймера:

прерываний

Сброс флага

вкл. сброс и

5

запроса прерывания

запрос прерывания

 

Запуск таймера

9

 

 

 

3

 

Инициализация

 

 

Задание порогового

6

системы прерываний

значения для таймера

 

Пустая команда

 

 

 

 

 

Конец

Рисунок 3.2.1 – Алгоритм программы формирования дискретного сигнала с помощью прерывания от таймера

Блоки 1–4 относятся к настройке МК и будут рассмотрены ниже. Вечный цикл не содержит команд (блок 5). Выход из цикла ожидания осуществляется автоматически при появлении запроса прерывания. Тогда управление получает процедура обработки прерывания, которая содержит команду инверсии портовой линии (блок 6), а также команды, необходимые для корректного возврата управления в основную программу (блок 7–8)

3.2.3 Алгоритм программы

1. Настройка портовой линии P0.7 на вывод производится через регистр IO0DIR (раздел 1.10.1).

2. Настройка схемы совпадения выполняется через регистр T0MCR (раздел 1.13.4). Необходимо разрешить формирование запроса прерывания и сброса таймера в ноль.

3. Рассчитать пороговое значение для таймера по формуле (1.13.3) для с. Исходные данные для расчета: тактовая частота периферийных устройств , тактовая частота ядра и частота кварцевого резона-

тора , по умолчанию связаны следующими соотношениями

164