Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DSP-A5-new.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
298.5 Кб
Скачать

2.Показать как минимум две программы с разным темпом мигания от

примерно 0.1 до 10 герц.

Задание 2.2 - Mигание светодиодом от кнопки.

При нажатии на кнопку "Interrupt" на плате EZ-KIT, генерируется прерывание по адресу 0x18 (IRQE). Таблица прерываний имеет по 4 слова (команды) для каждого прерывания, то есть прямо в таблице можно написать маленький обработчик прерываний. Напишите такой обработчик, используя команду переключения состояния светодиода. Для разрешения/запрета прерываний используется регистр IMASK.

Команды запрета/разрешения прерываний:

DIS INTS; // глобальный запрет прерываний

ENA INTS; // глобальное разрешение прерываний

Две эти команды запрещают/разрешают все прерывания. Для работы с регистром IMASK прерывания надо запрещать.

Регистр разрешения прерываний IMASK:

bit 0 - timer interrupt

bit 1 - SPORT1 receiver or IRQ0

bit 2 - SPORT1 transmitter or IRQ1

bit 3 - BDMA

bit 4 - IRQE

bit 5 - SPORT0 receiver

bit 6 - SPORT0 transmitterbit 7 - IRQL0

bit 8 - IRQL1

bit 9 - IRQ2

В основной программе должно быть следующее:

1.Глобальный запрет прерываний

2.Разрешение прерываний от TIMER и IRQE

IMASK=0x00nn;

Таймер необходим для работы программы-монитора.

3.Глобальное разрешение прерываний

4.Бесконечный цикл. В принципе основная программа может делать все

что угодно, но если она дойдет до конца, программа будет остановлена

монитором.

Программа должна зажигать/гасить светодиод при нажатии кнопки

Interrupt.

Сдача задания 2.2:

Напишите программу и покажите.

Вопрос - зачем нужен бесконечный цикл в основной программе?

Задание 2.3

Стандартным способом обработки прерываний является вызов обработчика прерываний из таблицы прерываний при помощи инструкции CALL или JUMP.

Сдача задания 2.3:

Напишите программы с использованием той и другой инструкции.

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

обработки в том и другом случае и почему?

Задание 2.4

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

Команда IDLE может иметь числовой параметр IDLE xx, который определяет степень снижения токопотребления в цикле ожидания.

Цикл ожидания прерываний может выглядеть так:

L0: IDLE;JUMP L0;

В таблице прерываний на IRQE должно стоять просто RTI;

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

запретом таймера VisualDSP необходимо закрыть и открыть снова.

Сдача задания 2.4:

Напишите программу управления светодиодом от кнопки с

использованием IDLE.

Вопрос: почему надо запретить прерывания от таймера и что будет,

если этого не сделать ?

Задание 2.5 - работа с таймером

Процессор 2109 имеет внутренний таймер.

Строка 11 таблицы векторов для работы с таймером в EZ-KIT должна

иметь вид:

call UserTimer; NOP; NOP; RTI;

Таймер используется мониторной программой платы EZ-KIT.

Если вы хотите использовать таймер и монитор, вы должны использовать

CALL, а не JUMP и не менять регистры таймера. Если монитор вам не

нужен, нужно только не использовать второе и третье слово в строке

прерывания таймера (эти слова меняются при загрузке на адреса

монитора).

Таймер имеет три регистра:

0x3FFC TCOUNT Counter Register

0x3FFD TPERIOD Period Register

0x3FFB TSCALE Scaling Register

Адреса регистров заданы в файле constant.h.

Вы можете и сами их задать директивой #define:

#define TSCALE 0x3ffb

TCOUNT регистр декрементируется в зависимости от TSCALE каждые n

циклoв, при занулении TCOUNT происходит прерывание и регистр

TPERIOD загружается в Tcount.

TSCALE регистр задает величину n:

TSCALE+1 = n, декремент ТCOUNT каждые n циклов.

Занесение значений в регистры таймера:

AR=0xf;

PM(TCOUNT)=AR;

В программе должно быть следующее:

1.Таблица прерываний с вызовом процедуры обработки прерываний

таймера.

2.Задание регистров таймера, частота прерываний порядка 0.1 - 10 герц.

При задании регистров прерывания надо запретить.

3. Бесконечный цикл.

4. Процедура обработки прерываний таймера - мигание светодиодом.

Oдин цикл процессора - 13.3 нсек.

Так как прерывания от таймера использованы в программе и регистры таймера изменены, нормальная работа монитора невозможна. После запуска программы VisualDSP необходимо закрыть и открыть снова.