Категории
Самые читаемые
onlinekniga.com » Справочная литература » Справочники » Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++ - Олег Вальпа

Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++ - Олег Вальпа

Читать онлайн Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++ - Олег Вальпа

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 8 9 10 11 12 13 14 15 16 ... 52
Перейти на страницу:

Таблица 5.1 Векторы прерываний сигнального процессора ADSP-2181

Приоритет Источник прерывания Адрес (HEX) Высший приоритет 0 Сброс (или выход из режима пониженной мощности при установке 12-го разряда регистра S1ABUF=1) 0000 1 Снижение потребляемой мощности (немаскируемое прерывание) 002C 2 IRQ2 0004 3 IRQL1 0008 4 IRQL0 000C 5 SPORT0 Передатчик 0010 6 SPORT0 Приемник 0014 7 IRQE 0018 8 BDMA прерывание 001C 9 SPORT1 Передатчик или IRQ1 0020 10 SPORT1 Приемник или IRQ0 0024 11 Низший приоритет Таймер 0028

Прерывания в процессоре имеют различную приоритетность, от 0 до 11. При возникновении любого из прерываний, процессор выполняет переход на подпрограмму обработки соответствующего прерывания, адрес которой заложен в векторе данного прерывания. Адреса векторов прерываний расположены в самом начале программной памяти процессора через четыре 24-разрядных слова команды, что позволяет производить простую обработку или выход из прерывания на месте, без перехода на подпрограмму обработчика прерывания. В противном случае может быть выполнен безусловный переход на подпрограмму обработчика прерывания командой jump.

Процессор ADSP-2181 имеет четыре вывода для поддержки внешних прерываний: IRQ2, IRQL0, IRQL1 и IRQE. Кроме того, благодаря возможности SPORT1 быть переконфигурированным на выводы флагов FLAG_IN, FLAG_OUT и прерываний IRQ0, IRQ1, процессор может иметь еще два входа внешних прерываний вместо внутренних прерываний SPORT1. В результате, в общей сложности процессор может иметь шесть внешних прерываний.

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

Все прерывания, кроме немаскируемого и сброса, можно запретить с помощью регистра IMASK (см. табл.1). Кроме того, можно программно сгенерировать или сбросить некоторые прерывания с помощью регистра IFC.

Процессор реагирует на уровень сигналов на выводах прерываний IRQL0 и IRQL1. Прерывание IRQE возникает по фронту изменения сигнала на этом выводе. Чувствительность процессора к сигналам IRQ0, IRQ1 и IRQ2 определяется программно, с помощью регистра ICNTL.

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

Часть II. Программирование

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

Глава 6. Первая программа

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

Начнем изучение программирования сигнального процессора с конкретного примера программы, приведенной ниже. Эта программа поможет нам в изучении структуры программы, системы команд процессора и средств разработки, а также позволит на практике освоить процедуру отладки и загрузки программы в память процессора.

Введите текст этой программы в компьютер с помощью любого текстового редактора и сохраните в файле с именем mem_clr.dsp или скопируйте с компакт-диска, прилагаемого к данной книге.

/***********************************************************/

/* Программа mem_clr загружается в память программ и после */

/* запуска заполняет память данных сигнального процессора  */

/* с адреса 0x0000 по адрес 0x3fdf числовыми значениями    */

/*                                                         */

/* Версия: 1.0                                             */

/* Автор:  О.Д.Вальпа                                      */

/***********************************************************/

.module/RAM/ABS=0 mem_clr;       { Модуль памяти mem_clr с адреса 0  }

.include <def2181.h>;            { Включить файл определений         }

.var/dm/ram/circ buf_dm[0x3fdf]; { Циклический буфер в памяти данных }

jump BEGIN; nop; nop; nop; { Вектор прерывания сброса процессора }

rti; nop; nop; nop;        { Вектор прерывания IRQ2              }

rti; nop; nop; nop;        { Вектор прерывания IRQL1             }

rti; nop; nop; nop;        { Вектор прерывания IRQL0             }

rti; nop; nop; nop;        { Вектор прерывания SPORT0 TX         }

rti; nop; nop; nop;        { Вектор прерывания SPORT0 RX         }

rti; nop; nop; nop;        { Вектор прерывания IRQE              }

rti; nop; nop; nop;        { Вектор прерывания BDMA              }

rti; nop; nop; nop;        { Вектор прерывания SPORT1 TX (IRQ1)  }

rti; nop; nop; nop;        { Вектор прерывания SPORT1 RX (IRQ0)  }

rti; nop; nop; nop;        { Вектор прерывания TIMER             }

rti; nop; nop, nop;        { Вектор прерывания POWER DOWN        }

/************** начало программы ************************************/

BEGIN:                                      { Метка начала программы }

 ax0 = b#0111111110000000; dm(pftype) = ax0; {Инициализация флагов PF}

{        │└┬┘││││76543210                                            }

{        │ │ ││││└+++++++ - PF0-PF7: 0-вход 1-выход                  }

{        │ │ │││└──────── - PM - выход -CMS                          }

{        │ │ ││└───────── - DM | 0-запрещен                          }

{        │ │ │└────────── - BM | 1-разрешен                          }

{        │ │ └─────────── - IOM--                                    }

{        │ └───────────── - От 0 до 7 циклов задержки BDMA           }

{        └ He используется, всегда=0                                 }

 ax0 = b#0000000010000000; dm(PFDATA) = ax0;{Управление светодиодом }

{                76543210                                           }

{                │   └──┴ - Вход:Код клавиш                         }

{                └─────── - Выход:Светодиод                         }

 i0 = ^buf_dm;       { Индексный регистр i0=адресу начала буфера     }

 l0 = %buf_dm;       { Регистр длины l0=длине буфера                 }

 m0 = 1;             { Регистр модификатора m0=1                     }

 ar = 0x1234;        { Записать данные в рабочий регистр ar          }

 cntr=10;            { Загрузить счетчик циклов                      }

 do CLR_DM until се; { Выполнять до CLR_DM пока счетчик не обнулится }

  dm(i0, m0) = ar;   { Заполнение очередной ячейки памяти данных     }

 CLR_DM:nop;         { Пустая команда                                }

 toggle fl2;         { Инвертировать вывод процессора FL2            }

1 ... 8 9 10 11 12 13 14 15 16 ... 52
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++ - Олег Вальпа.
Комментарии