ВУЗ:
Составители:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 63
- 64
- 65
- 66
- 67
- …
- следующая ›
- последняя »
