Сигнальные процессоры. Аксенов В.П. - 65 стр.

UptoLike

Составители: 

65
В начале программы в секции памяти программ заполняется таблица век-
торов прерываний, которая связывает вектор с именем программы и подпро-
граммы прерывания (листинг 3).
Сброс процессора вызывает выполнение программы с нулевого адреса.
Программа в листинге 3 определяет безусловный переход с нулевого стартово-
го адреса к основной программе main. Сигнал прерывания приемника последо-
вательного порта SPORT0 вызывает выполнение подпрограммы обработки
прерывания fir_start. Команда rti означает окончание подпрограммы обработки
прерывания. Поэтому сигналы остальных источников прерываний никаких дей-
ствий в программе не вызывают. Каждый вектор занимает в таблице 4 адреса.
Векторы, которые не используются программой main, заполняются четырьмя
командами rti.
Листинг 4 содержит объявление двух циклических буферов в памяти
ОЗУ процессора ADSP-2189M с помощью константы taps. Один из них нахо-
дится в памяти данных dm и содержит 15 последних отсчетов аналогового сиг-
нала в массиве data_buffer, заполняемого с частотой дискретизации F
S
по ходу
выполнения программы. Другой буфер располагается в области программ pm
Листинг 3. Инициализация векторов прерываний в основной программе
.section/pm Interrupts; /* заполняем таблицу в памяти программ */
start:
jump main; rti; rti; rti; /* вектор сброса 0х0000, переход на основную
программу с именем main в секции .section/pm_code */
rti; rti; rti; rti; /* вектор 0х0004 сигнала IRQ2 */
rti; rti; rti; rti; /* вектор 0х0008 сигнала IRQL1 */
rti; rti; rti; rti; /* вектор 0х000C сигнала IRQL0 */
rti; rti; rti; rti; /* вектор 0х0010 передатчика порта SPORT0 */
jump fir_start; rti; rti; rti; /* вектор 0х0014 приемника порта SPORT0,
переход на подпрограмму обработки прерывания с именем fir_start */
rti; rti; rti; rti; /* вектор 0х0018 сигнала IRQE */
rti; rti; rti; rti; /* вектор 0х001C контроллера BDMA */
rti; rti; rti; rti; /* вектор 0х0020 передатчика SPORT1 */
rti; rti; rti; rti; /* вектор 0х0024 приемника SPORT1 */
rti; rti; rti; rti; /* вектор 0х0028 таймера */
rti; rti; rti; rti; /* вектор 0х002С снижения потребления */
     В начале программы в секции памяти программ заполняется таблица век-
торов прерываний, которая связывает вектор с именем программы и подпро-
граммы прерывания (листинг 3).

     Листинг 3.          Инициализация векторов прерываний в основной программе

     .section/pm Interrupts; /* заполняем таблицу в памяти программ */
     start:
      jump main; rti; rti; rti;     /* вектор сброса 0х0000, переход на основную
                         программу с именем main в секции .section/pm_code */
     rti; rti; rti; rti;           /* вектор 0х0004 сигнала IRQ2 */
     rti; rti; rti; rti;           /* вектор 0х0008 сигнала IRQL1 */
     rti; rti; rti; rti;           /* вектор 0х000C сигнала IRQL0 */
     rti; rti; rti; rti;           /* вектор 0х0010 передатчика порта SPORT0 */
     jump fir_start; rti; rti; rti; /* вектор 0х0014 приемника порта SPORT0,
     переход на подпрограмму обработки прерывания с именем fir_start */
     rti; rti; rti; rti;           /* вектор 0х0018 сигнала IRQE      */
     rti; rti; rti; rti;           /* вектор 0х001C контроллера BDMA */
     rti; rti; rti; rti;           /* вектор 0х0020 передатчика SPORT1 */
     rti; rti; rti; rti;           /* вектор 0х0024 приемника SPORT1 */
     rti; rti; rti; rti;           /* вектор 0х0028 таймера */
     rti; rti; rti; rti;           /* вектор 0х002С снижения потребления */



     Сброс процессора вызывает выполнение программы с нулевого адреса.
Программа в листинге 3 определяет безусловный переход с нулевого стартово-
го адреса к основной программе main. Сигнал прерывания приемника последо-
вательного порта SPORT0 вызывает выполнение подпрограммы обработки
прерывания fir_start. Команда rti означает окончание подпрограммы обработки
прерывания. Поэтому сигналы остальных источников прерываний никаких дей-
ствий в программе не вызывают. Каждый вектор занимает в таблице 4 адреса.
Векторы, которые не используются программой main, заполняются четырьмя
командами rti.
     Листинг 4 содержит объявление двух циклических буферов в памяти
ОЗУ процессора ADSP-2189M с помощью константы taps. Один из них нахо-
дится в памяти данных dm и содержит 15 последних отсчетов аналогового сиг-
нала в массиве data_buffer, заполняемого с частотой дискретизации FS по ходу
выполнения программы. Другой буфер располагается в области программ pm

                                            65