Работа с таймером и обработка прерываний. Регистры и инструкции управления таймером и прерываниями

Страницы работы

Содержание работы

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

РАБОТА С ТАЙМЕРОМ  И  ОБРАБОТКА ПРЕРЫВАНИЙ

1. Цель работы

Ознакомление с одним из приложений процессоров цифровой обработки сигналов - формированием сигналов заданной формы и частоты; программирование и использование таймера и прерываний от него. Разработка и отладка программ для реального времени.

2. Подготовка к работе

2.1. Изучить следующие вопросы:

Назначение и структура таймера.

Регистры и инструкции управления таймером и прерываниями.

Программирование таймера и прерываний.

Последовательность выполнения инструкций при обработке прерывания.

Назначение и работа инструкции IDLE.

Использование кольцевых буферов в программе.

Построение графика в VisualDSP++.

Материалы для освоения указаны в разделе 3.

Контрольные вопросы см. в разделе 7.

2.2. Домашнее задание:

Проанализировать программу генерации синусоидального сигнала gener.asm. Составить графический алгоритм.  Изменить параметры таймера для получения частоты сигнала f, указанной для бригады в таблице 6.1. В чётных вариантах время цикла процессора составляет 100 нс, в нечётных – 80 нс.

Таблица 6.1 – Исходные данные для бригад

№ бригады

1

2

3

4

5

6

f (кгц)

1.25

5.0

3.1

2.5

6.25

1.0

Задания повышенной сложности:

Преобразуйте алгоритм в gener.asm так, чтобы обеспечить формирование программным путем тех 16-и чисел, которые сейчас берутся из файла sine.dat:

1.  Использовать для этого массив констант array_new[16];

2.  Использовать для этого операции  над содержимым регистра: инкремент и AND  0F;

3.  Использовать для этого счётчик цикла CNTR=16.

3. Материалы к работе

3.1. Материалы к лабораторной работе № 6 (см. файл ЛР6_материалы.doc и Приложениие,  программы к ЛР № 6).

3.2. Инструкции управления ходом исполнения программы, различные инструкции  (Справочные материалы по ADSP-21XX, стр.1).

3.3. Учебное пособие “Работа с VisualDSP++”, разделы  13.2, 12, 14.2.

3.4. Материал лекций по указанным вопросам.

4. Задание к работе в лаборатории

4.1. Cоздать исполняемый файл gener.dxe, используя файлы gener.asm и  sine.asm и загрузить его.

4.2. Проверить работу программы с прерываниями в пошаговом режиме, используя IREQ - регистр запросов прерывания. Отобразить последовательность выполнения инструкций в связи с возникновением и обработкой прерываний.

4.3. Измерить период возникновения отсчётов выходного сигнала.

4.4. Выполнить программу, рассмотреть выводимый программой массив отсчётов синусоиды в области памяти с именем  dm_y  и построить график.

5. Указания к работе в лаборатории

5.1. Программа состоит из двух модулей:  программы gener.dsp и подпрограммы sine.dsp.

    Скопируйте из папки Лр6 в Ваш рабочий каталог папку Gen_Sine c файлами .asm, .ldf  и .dat. ( файл sine.asm лучше взять из прошлой работы – он отлажен ). 

5.2. Запустите программу VisualDSP++. Проделайте все этапы создания нового проекта с именем gen_sine.prj и исполняемого файла .dxe для программы, состоящей из двух модулей .asm и файлов .ldf и .dat. Загрузите исполняемый файл gen_sine.dxe.  

5.3. При обследовании программы с прерываниями в пошаговом режиме следует использовать IREQ - регистр запросов прерывания. Это не регистр процессора, а регистр имитатора; он показывает, какие прерывания ожидаются, и обеспечивает удобства, позволяя вызвать возникновение прерывания и выйти из состояния ожидания прерывания (IDLE). Разряды IREQ соответствуют разрядам  регистра IMASK процессора.

5.4. Обратите внимание на очерёдность выполнения инструкций программы в связи с возникновением и обработкой прерываний, а также на роль инструкции IDLE. Отобразите стрелками очерёдность выполнения инструкций  в тексте программы или на схеме алгоритма.

5.5. Установите контрольную точку на инструкции вывода отсчёта и, производя запуски имитатора, фиксируйте каждый раз число циклов в окне Register / Program Control. Период прерывания равен разности числа циклов между вырабатываемыми отсчётами.  Убедитесь в соответствии периода заданной частоте генерации.??

5.6. Убрав контрольную точку, можно запустить программу в режиме прогона. Остановка произойдёт по команде Halt. Чтобы наблюдать последовательность выходных отсчётов, можно использовать формирование в памяти массива выходных данных dm_y. Соответствующие инструкции в программе имеются. Чтобы вывести на экран область памяти с массивом,  имеющим имя,  следует,  находясь в окне этой памяти, вызвать меню, дать команду GoTo, выбрать имя массива и выбрать дробный формат.

5.7. Создайте график зависимости y(n), пользуясь указаниями раздела 14.2. 

5.8. После демонстрации преподавателю результатов работы следует закрыть проект Gen_Sine командой Project/Close и закрыть программу VisualDSP++. Папку Gen_Sine из своей рабочей области удалить.

6. Содержание отчёта

6.1. Цель работы.

6.2. Графический алгоритм программы  gener.asm.

6.3. Расчёт параметров таймера для формирования  заданной частоты.

6.4. Очерёдность выполнения строк программы в связи с возникновением и обработкой прерываний показать стрелками.

6.5. Измеренное значение периода следования отсчётов.

6.6. Полученные результаты работы программы (таблица и график).

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

7.1. Расскажите о блоке таймера, его функциональном назначении и внутренней структуре.

7.2. Рассчитайте максимальный временной интервал, который можно задать с помощью таймера при тактовой частоте ADSP-2101   fCLKIN = 10 Мгц.

Похожие материалы

Информация о работе